Browse Source

SONAR-15877 Ensure `canBrowseAllChildProjects` is present for subview components

tags/9.3.0.51899
Klaudio Sinani 2 years ago
parent
commit
60b608ea92

+ 10
- 0
server/sonar-webserver-auth/src/test/java/org/sonar/server/user/ServerUserSessionTest.java View File

@@ -403,6 +403,7 @@ public class ServerUserSessionTest {
ComponentDto project2 = db.components().insertPrivateProject();
ComponentDto project3 = db.components().insertPrivateProject();
ComponentDto project4 = db.components().insertPrivateProject();
ComponentDto project5 = db.components().insertPrivateProject();

UserDto user = db.users().insertUser();
UserSession session = newUserSession(user);
@@ -429,13 +430,22 @@ public class ServerUserSessionTest {
db.components().insertComponent(newProjectCopy(project4, subPortfolio));
db.components().addPortfolioReference(portfolio, subPortfolio.uuid());

// The predicate should work both on view and subview components
assertThat(session.hasPortfolioChildProjectsPermission(USER, portfolio)).isTrue();
assertThat(session.hasPortfolioChildProjectsPermission(USER, subPortfolio)).isTrue();

// Add private project3 without permissions to private portfolio
db.components().addPortfolioProject(portfolio, project3);
db.components().insertComponent(newProjectCopy(project3, portfolio));

assertThat(session.hasChildProjectsPermission(USER, portfolio)).isFalse();

// Add private project5 without permissions to sub-portfolio
db.components().addPortfolioProject(subPortfolio, project5);
db.components().insertComponent(newProjectCopy(project5, subPortfolio));

assertThat(session.hasPortfolioChildProjectsPermission(USER, portfolio)).isFalse();
assertThat(session.hasPortfolioChildProjectsPermission(USER, subPortfolio)).isFalse();
}

@Test

+ 1
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/ui/ws/ComponentAction.java View File

@@ -217,7 +217,7 @@ public class ComponentAction implements NavigationWsAction {
if (Qualifiers.APP.equals(component.qualifier())) {
json.prop("canBrowseAllChildProjects", userSession.hasChildProjectsPermission(USER, component));
}
if (Qualifiers.VIEW.equals(component.qualifier())) {
if (Qualifiers.VIEW.equals(component.qualifier()) || Qualifiers.SUBVIEW.equals(component.qualifier())) {
json.prop("canBrowseAllChildProjects", userSession.hasPortfolioChildProjectsPermission(USER, component));
}
if (QUALIFIERS_WITH_VISIBILITY.contains(component.qualifier())) {

Loading…
Cancel
Save