throw notImplemented();
}
+ @Override
+ public UserSession checkIsRoot() {
+ throw notImplemented();
+ }
+
@Override
public UserSession checkLoggedIn() {
throw notImplemented();
private static final ForbiddenException INSUFFICIENT_PRIVILEGES_EXCEPTION = new ForbiddenException(INSUFFICIENT_PRIVILEGES_MESSAGE);
private static final String AUTHENTICATION_IS_REQUIRED_MESSAGE = "Authentication is required";
+ @Override
+ public UserSession checkIsRoot() {
+ if (!isRoot()) {
+ throw new ForbiddenException(INSUFFICIENT_PRIVILEGES_MESSAGE);
+ }
+ return this;
+ }
+
@Override
public final UserSession checkLoggedIn() {
if (!isLoggedIn()) {
return get().isLoggedIn();
}
+ @Override
+ public UserSession checkIsRoot() {
+ return get().checkIsRoot();
+ }
+
@Override
public boolean isRoot() {
return get().isRoot();
*/
boolean isRoot();
+ /**
+ * Ensures that {@link #isRoot()} returns {@code true} otherwise throws a
+ * {@link org.sonar.server.exceptions.ForbiddenException}.
+ */
+ UserSession checkIsRoot();
+
/**
* Ensures that user is logged in otherwise throws {@link org.sonar.server.exceptions.UnauthorizedException}.
*/
return currentUserSession.isRoot();
}
+ @Override
+ public UserSession checkIsRoot() {
+ return currentUserSession.checkIsRoot();
+ }
+
@Override
public UserSession checkLoggedIn() {
currentUserSession.checkLoggedIn();
assertThat(newUserSession(NON_ROOT_USER_DTO).isRoot()).isFalse();
}
+ @Test
+ public void checkIsRoot_throws_IPFE_if_flag_root_is_false_on_UserDto() {
+ UserSession underTest = newUserSession(NON_ROOT_USER_DTO);
+
+ expectInsufficientPrivilegesForbiddenException();
+
+ underTest.checkIsRoot();
+ }
+
+ @Test
+ public void checkIsRoot_does_not_fail_if_flag_root_is_true_on_UserDto() {
+ UserSession underTest = newUserSession(ROOT_USER_DTO);
+
+ assertThat(underTest.checkIsRoot()).isSameAs(underTest);
+ }
+
@Test
public void hasComponentUuidPermission_returns_true_when_flag_root_is_true_on_UserDto_no_matter_if_user_has_project_permission_for_given_uuid() {
UserSession underTest = newUserSession(ROOT_USER_DTO);