use of io.gravitee.am.model.IdentityProvider in project gravitee-access-management by gravitee-io.
the class UserAuthenticationManagerTest method shouldAuthenticateUser_singleIdentityProvider.
@Test
public void shouldAuthenticateUser_singleIdentityProvider() {
Client client = new Client();
client.setClientId("client-id");
client.setIdentityProviders(getApplicationIdentityProviders(true, "idp-1"));
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setId("idp-1");
when(identityProviderManager.getIdentityProvider("idp-1")).thenReturn(identityProvider);
when(passwordService.checkAccountPasswordExpiry(any(), any(), any())).thenReturn(false);
when(userAuthenticationService.connect(any(), eq(true))).then(invocation -> {
io.gravitee.am.identityprovider.api.User idpUser = invocation.getArgument(0);
User user = new User();
user.setUsername(idpUser.getUsername());
return Single.just(user);
});
when(identityProviderManager.get("idp-1")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
return Maybe.just(new DefaultUser("username"));
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
TestObserver<User> observer = userAuthenticationManager.authenticate(client, new Authentication() {
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return "username";
}
@Override
public AuthenticationContext getContext() {
return null;
}
}).test();
observer.assertNoErrors();
observer.assertComplete();
observer.assertValue(user -> user.getUsername().equals("username"));
verify(eventManager, times(1)).publishEvent(eq(AuthenticationEvent.SUCCESS), any());
}
use of io.gravitee.am.model.IdentityProvider in project gravitee-access-management by gravitee-io.
the class UserAuthenticationManagerTest method shouldAuthenticateUser_multipleIdentityProvider.
@Test
public void shouldAuthenticateUser_multipleIdentityProvider() {
Client client = new Client();
client.setClientId("client-id");
client.setIdentityProviders(getApplicationIdentityProviders(true, "idp-1", "idp-2"));
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setId("idp-1");
IdentityProvider identityProvider2 = new IdentityProvider();
identityProvider2.setId("idp-2");
when(passwordService.checkAccountPasswordExpiry(any(), any(), any())).thenReturn(false);
when(userAuthenticationService.connect(any(), eq(true))).then(invocation -> {
io.gravitee.am.identityprovider.api.User idpUser = invocation.getArgument(0);
User user = new User();
user.setUsername(idpUser.getUsername());
return Single.just(user);
});
when(identityProviderManager.getIdentityProvider("idp-1")).thenReturn(identityProvider);
when(identityProviderManager.get("idp-1")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
throw new BadCredentialsException();
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
when(identityProviderManager.getIdentityProvider("idp-2")).thenReturn(identityProvider2);
when(identityProviderManager.get("idp-2")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
return Maybe.just(new DefaultUser("username"));
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
TestObserver<User> observer = userAuthenticationManager.authenticate(client, new Authentication() {
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return "username";
}
@Override
public AuthenticationContext getContext() {
return null;
}
}).test();
observer.assertNoErrors();
observer.assertComplete();
observer.assertValue(user -> user.getUsername().equals("username"));
verify(eventManager, times(1)).publishEvent(eq(AuthenticationEvent.SUCCESS), any());
}
use of io.gravitee.am.model.IdentityProvider in project gravitee-access-management by gravitee-io.
the class UserAuthenticationManagerTest method shouldAuthenticateUser_singleIdentityProvider_PasswordExipry.
@Test
public void shouldAuthenticateUser_singleIdentityProvider_PasswordExipry() {
Client client = new Client();
client.setClientId("client-id");
client.setIdentityProviders(getApplicationIdentityProviders(true, "idp-1"));
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setId("idp-1");
when(identityProviderManager.getIdentityProvider("idp-1")).thenReturn(identityProvider);
when(passwordService.checkAccountPasswordExpiry(any(), any(), any())).thenReturn(true);
when(userAuthenticationService.connect(any(), eq(true))).then(invocation -> {
io.gravitee.am.identityprovider.api.User idpUser = invocation.getArgument(0);
User user = new User();
user.setUsername(idpUser.getUsername());
return Single.just(user);
});
when(identityProviderManager.get("idp-1")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
return Maybe.just(new DefaultUser("username"));
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
TestObserver<User> observer = userAuthenticationManager.authenticate(client, new Authentication() {
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return "username";
}
@Override
public AuthenticationContext getContext() {
return null;
}
}).test();
observer.awaitTerminalEvent();
observer.assertError(AccountPasswordExpiredException.class);
verify(eventManager, times(1)).publishEvent(eq(AuthenticationEvent.FAILURE), any());
}
use of io.gravitee.am.model.IdentityProvider in project gravitee-access-management by gravitee-io.
the class UserAuthenticationManagerTest method shouldAuthenticateUser_multipleIDPs_firstPriorityIdentityProvider.
@Test
public void shouldAuthenticateUser_multipleIDPs_firstPriorityIdentityProvider() {
Client client = new Client();
client.setClientId("client-id");
client.setIdentityProviders(getApplicationIdentityProviders(true, "idp-1", "idp-2"));
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setId("idp-1");
IdentityProvider identityProvider2 = new IdentityProvider();
identityProvider2.setId("idp-2");
when(userAuthenticationService.connect(any(), eq(true))).then(invocation -> {
io.gravitee.am.identityprovider.api.User idpUser = invocation.getArgument(0);
User user = new User();
user.setUsername(idpUser.getUsername());
return Single.just(user);
});
when(identityProviderManager.getIdentityProvider("idp-1")).thenReturn(identityProvider);
when(identityProviderManager.get("idp-1")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
return Maybe.just(new DefaultUser("username1"));
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
when(identityProviderManager.getIdentityProvider("idp-2")).thenReturn(identityProvider2);
TestObserver<User> observer = userAuthenticationManager.authenticate(client, new Authentication() {
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return "username";
}
@Override
public AuthenticationContext getContext() {
return null;
}
}).test();
observer.assertNoErrors();
observer.assertComplete();
observer.assertValue(user -> user.getUsername().equals("username1"));
verify(eventManager, times(1)).publishEvent(eq(AuthenticationEvent.SUCCESS), any());
client.setIdentityProviders(getApplicationIdentityProviders(false, "idp-1", "idp-2"));
when(identityProviderManager.get("idp-2")).thenReturn(Maybe.just(new AuthenticationProvider() {
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(Authentication authentication) {
return Maybe.just(new DefaultUser("username2"));
}
@Override
public Maybe<io.gravitee.am.identityprovider.api.User> loadUserByUsername(String username) {
return Maybe.empty();
}
}));
observer = userAuthenticationManager.authenticate(client, new Authentication() {
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return "username";
}
@Override
public AuthenticationContext getContext() {
return null;
}
}).test();
observer.assertNoErrors();
observer.assertComplete();
observer.assertValue(user -> user.getUsername().equals("username2"));
verify(eventManager, times(2)).publishEvent(eq(AuthenticationEvent.SUCCESS), any());
}
use of io.gravitee.am.model.IdentityProvider in project gravitee-access-management by gravitee-io.
the class UserAuthenticationManagerTest method shouldNotAuthenticateUser_onlyExternalProvider.
@Test
public void shouldNotAuthenticateUser_onlyExternalProvider() {
Client client = new Client();
client.setClientId("client-id");
client.setIdentityProviders(getApplicationIdentityProviders(true, "idp-1"));
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setId("idp-1");
identityProvider.setExternal(true);
when(identityProviderManager.getIdentityProvider("idp-1")).thenReturn(identityProvider);
TestObserver<User> observer = userAuthenticationManager.authenticate(client, null).test();
observer.assertNotComplete();
observer.assertError(InternalAuthenticationServiceException.class);
verifyZeroInteractions(userAuthenticationService);
}
Aggregations