}
@Test
- public void register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser() {
+ public void register_whenNewManagedUserAndManagedInstanceAndSignupTrue_shouldCreateAndReturnUser() {
+ register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(true);
+ }
+
+ @Test
+ public void register_whenNewManagedUserAndManagedInstanceAndSignupFalse_shouldCreateAndReturnUser() {
+ register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(false);
+ }
+
+ private void register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(boolean signup) {
when(managedInstanceService.isInstanceExternallyManaged()).thenReturn(true);
- TestIdentityProvider identityProvider = composeIdentityProvider("saml", "Okta", true, true);
+ TestIdentityProvider identityProvider = composeIdentityProvider("saml", "Okta", true, signup);
Source source = realm(AuthenticationEvent.Method.FORM, identityProvider.getName());
UserRegistration registration = composeUserRegistration(USER_IDENTITY, identityProvider, source, true);
if (!userDto.isActive()) {
return registerNewUser(dbSession, userDto, registration);
}
- return registerExistingUser(dbSession, userDto, registration);
+ return updateExistingUser(dbSession, userDto, registration);
}
}
}
}
- private UserDto registerExistingUser(DbSession dbSession, UserDto userDto, UserRegistration authenticatorParameters) {
+ private UserDto updateExistingUser(DbSession dbSession, UserDto userDto, UserRegistration authenticatorParameters) {
UpdateUser update = new UpdateUser()
.setEmail(authenticatorParameters.getUserIdentity().getEmail())
.setName(authenticatorParameters.getUserIdentity().getName())
return Optional.of(defaultGroupFinder.findDefaultGroup(dbSession));
}
- private static NewUser createNewUser(UserRegistration authenticatorParameters) {
+ private NewUser createNewUser(UserRegistration authenticatorParameters) {
String identityProviderKey = authenticatorParameters.getProvider().getKey();
- if (!authenticatorParameters.getProvider().allowsUsersToSignUp()) {
+ if (!managedInstanceService.isInstanceExternallyManaged() && !authenticatorParameters.getProvider().allowsUsersToSignUp()) {
throw AuthenticationException.newBuilder()
.setSource(authenticatorParameters.getSource())
.setLogin(authenticatorParameters.getUserIdentity().getProviderLogin())