@Override public void start() { realm = securityRealmFactory.getRealm(); if (realm != null) { authenticator = requireNonNull(realm.doGetAuthenticator(), "No authenticator available"); externalUsersProvider = requireNonNull(realm.getUsersProvider(), "No users provider available"); externalGroupsProvider = realm.getGroupsProvider(); } }
@Test public void doGetAuthenticator() { final Authenticator authenticator = mock(Authenticator.class); SecurityRealm realm = new SecurityRealm() { @Override public Authenticator doGetAuthenticator() { return authenticator; } }; assertThat(realm.doGetAuthenticator()).isSameAs(authenticator); assertThat(realm.getLoginPasswordAuthenticator()).isNull(); }
@Override public void start() { if (realm != null) { Logger logger = Loggers.get("org.sonar.INFO"); try { logger.info("Security realm: " + realm.getName()); realm.init(); logger.info("Security realm started"); } catch (RuntimeException e) { if (ignoreStartupFailure) { logger.error("IGNORED - Security realm fails to start: " + e.getMessage()); } else { throw new SonarException("Security realm fails to start: " + e.getMessage(), e); } } } }
private void executeStartWithoutGroupSync() { when(realm.doGetAuthenticator()).thenReturn(authenticator); when(realm.getUsersProvider()).thenReturn(externalUsersProvider); when(securityRealmFactory.getRealm()).thenReturn(realm); underTest.start(); }
private static SecurityRealm selectRealm(SecurityRealm[] realms, String realmName) { for (SecurityRealm realm : realms) { if (StringUtils.equals(realmName, realm.getName())) { return realm; } } return null; }
@Override public boolean doAuthenticate(Context context) { return getLoginPasswordAuthenticator().authenticate(context.getUsername(), context.getPassword()); } };
@Test public void fail_to_start_when_no_authenticator() { when(realm.doGetAuthenticator()).thenReturn(null); when(securityRealmFactory.getRealm()).thenReturn(realm); expectedException.expect(NullPointerException.class); expectedException.expectMessage("No authenticator available"); underTest.start(); }
@CheckForNull private String getExternalUserAuthentication() { SecurityRealm realm = securityRealmFactory.getRealm(); return realm == null ? null : realm.getName(); }
@Test public void fail_to_start_when_no_user_provider() { when(realm.doGetAuthenticator()).thenReturn(authenticator); when(realm.getUsersProvider()).thenReturn(null); when(securityRealmFactory.getRealm()).thenReturn(realm); expectedException.expect(NullPointerException.class); expectedException.expectMessage("No users provider available"); underTest.start(); }
@Override public boolean doAuthenticate(Context context) { return getLoginPasswordAuthenticator().authenticate(context.getUsername(), context.getPassword()); } };
@Test public void getLoginPasswordAuthenticator_deprecated_method_replaced_by_getAuthenticator() { final LoginPasswordAuthenticator deprecatedAuthenticator = mock(LoginPasswordAuthenticator.class); SecurityRealm realm = new SecurityRealm() { @Override public LoginPasswordAuthenticator getLoginPasswordAuthenticator() { return deprecatedAuthenticator; } }; Authenticator proxy = realm.doGetAuthenticator(); Authenticator.Context context = new Authenticator.Context("foo", "bar", mock(HttpServletRequest.class)); proxy.doAuthenticate(context); verify(deprecatedAuthenticator).authenticate("foo", "bar"); } }
private void executeStartWithGroupSync() { when(realm.doGetAuthenticator()).thenReturn(authenticator); when(realm.getUsersProvider()).thenReturn(externalUsersProvider); when(realm.getGroupsProvider()).thenReturn(externalGroupsProvider); when(securityRealmFactory.getRealm()).thenReturn(realm); underTest.start(); }
@Test public void ignore_startup_failure() { SecurityRealm realm = spy(new AlwaysFailsRealm()); settings.setProperty("sonar.security.realm", realm.getName()); settings.setProperty(CoreProperties.CORE_AUTHENTICATOR_IGNORE_STARTUP_FAILURE, true); new SecurityRealmFactory(settings.asConfig(), new SecurityRealm[] {realm}).start(); verify(realm).init(); }
@CheckForNull private String getExternalUserAuthentication() { SecurityRealm realm = securityRealmFactory.getRealm(); return realm == null ? null : realm.getName(); }
@Override public boolean doAuthenticate(Context context) { return getLoginPasswordAuthenticator().authenticate(context.getUsername(), context.getPassword()); } };
@Override public void start() { realm = securityRealmFactory.getRealm(); if (realm != null) { authenticator = requireNonNull(realm.doGetAuthenticator(), "No authenticator available"); externalUsersProvider = requireNonNull(realm.getUsersProvider(), "No users provider available"); externalGroupsProvider = realm.getGroupsProvider(); } }
/** * Typical usage. */ @Test public void should_select_realm_and_start() { SecurityRealm realm = spy(new FakeRealm()); settings.setProperty("sonar.security.realm", realm.getName()); SecurityRealmFactory factory = new SecurityRealmFactory(settings.asConfig(), new SecurityRealm[] {realm}); factory.start(); assertThat(factory.getRealm()).isSameAs(realm); assertThat(factory.hasExternalAuthentication()).isTrue(); verify(realm).init(); factory.stop(); }
private Source realmEventSource(AuthenticationEvent.Method method) { return Source.realm(method, realm.getName()); }
@Override public void start() { if (realm != null) { Logger logger = Loggers.get("org.sonar.INFO"); try { logger.info("Security realm: " + realm.getName()); realm.init(); logger.info("Security realm started"); } catch (RuntimeException e) { if (ignoreStartupFailure) { logger.error("IGNORED - Security realm fails to start: " + e.getMessage()); } else { throw new SonarException("Security realm fails to start: " + e.getMessage(), e); } } } }
@Before public void setUp() throws Exception { when(realm.getName()).thenReturn(REALM_NAME); }