diff --git a/orcid-core/src/main/java/org/orcid/core/manager/v3/impl/ClientManagerImpl.java b/orcid-core/src/main/java/org/orcid/core/manager/v3/impl/ClientManagerImpl.java index 0094b97f22..b9766632f7 100644 --- a/orcid-core/src/main/java/org/orcid/core/manager/v3/impl/ClientManagerImpl.java +++ b/orcid-core/src/main/java/org/orcid/core/manager/v3/impl/ClientManagerImpl.java @@ -30,12 +30,7 @@ import org.orcid.persistence.dao.ClientSecretDao; import org.orcid.persistence.dao.ProfileDao; import org.orcid.persistence.dao.ProfileLastModifiedDao; -import org.orcid.persistence.jpa.entities.ClientAuthorisedGrantTypeEntity; -import org.orcid.persistence.jpa.entities.ClientDetailsEntity; -import org.orcid.persistence.jpa.entities.ClientGrantedAuthorityEntity; -import org.orcid.persistence.jpa.entities.ClientResourceIdEntity; -import org.orcid.persistence.jpa.entities.ClientScopeEntity; -import org.orcid.persistence.jpa.entities.ProfileEntity; +import org.orcid.persistence.jpa.entities.*; import org.orcid.persistence.jpa.entities.keys.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -136,6 +131,10 @@ private Client create(Client newClient, boolean publicClient) { clientResourceIdEntities.add(clientResourceIdEntity); newEntity.setClientResourceIds(clientResourceIdEntities); + for(ClientRedirectUriEntity rUri : newEntity.getClientRegisteredRedirectUris()) { + rUri.setClientId(newEntity.getClientId()); + } + // Set ClientAuthorisedGrantTypeEntity Set clientAuthorisedGrantTypeEntities = new HashSet(); for (String clientAuthorisedGrantType : Arrays.asList("client_credentials", "authorization_code", "refresh_token", "implicit")) { @@ -175,7 +174,8 @@ private Client create(Client newClient, boolean publicClient) { throw e; } - return jpaJaxbClientAdapter.toClient(newEntity); + Client theNewClient = jpaJaxbClientAdapter.toClient(newEntity); + return theNewClient; } @Override @@ -244,7 +244,7 @@ private void refreshGrantTypesForObo(ClientDetailsEntity clientDetails, boolean Iterator grantTypes = clientDetails.getClientAuthorizedGrantTypes().iterator(); while (grantTypes.hasNext()) { ClientAuthorisedGrantTypeEntity g = grantTypes.next(); - if (g != null && OrcidOauth2Constants.IETF_EXCHANGE_GRANT_TYPE.equals(g.getId().getGrantType())) { + if (g != null && OrcidOauth2Constants.IETF_EXCHANGE_GRANT_TYPE.equals(g.getGrantType())) { oboAlreadyEnabled = true; if (!enableObo) { grantTypes.remove(); diff --git a/orcid-persistence/src/main/java/org/orcid/persistence/jpa/entities/ClientRedirectUriEntity.java b/orcid-persistence/src/main/java/org/orcid/persistence/jpa/entities/ClientRedirectUriEntity.java index a0edb57a6b..16804748cd 100644 --- a/orcid-persistence/src/main/java/org/orcid/persistence/jpa/entities/ClientRedirectUriEntity.java +++ b/orcid-persistence/src/main/java/org/orcid/persistence/jpa/entities/ClientRedirectUriEntity.java @@ -108,7 +108,7 @@ public static Map mapByUriAndType(Set()); client.getErrors().add(errorDesciption); diff --git a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/OauthRegistrationController.java b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/OauthRegistrationController.java index fb4fd9dd94..45d177c8fd 100644 --- a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/OauthRegistrationController.java +++ b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/OauthRegistrationController.java @@ -48,6 +48,10 @@ public RegistrationController getRegistrationController() { return registrationController; } + public void setRequestInfoFormLocalCache(RequestInfoFormLocalCache requestInfoFormLocalCache) { + this.requestInfoFormLocalCache = requestInfoFormLocalCache; + } + public void setRegistrationController(RegistrationController registrationController) { this.registrationController = registrationController; } diff --git a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ClientsControllerTest.java b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ClientsControllerTest.java index efc4f9247d..76ed4b0e57 100644 --- a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ClientsControllerTest.java +++ b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ClientsControllerTest.java @@ -265,7 +265,6 @@ public void addClientTest() { Client client = new Client(); client.setAllowAutoDeprecate(Checkbox.valueOf(true)); client.setType(Text.valueOf(ClientType.CREATOR.name())); - client.setClientId(Text.valueOf("XXXXXX")); client.setDisplayName(Text.valueOf("My client name")); client.setMemberId(Text.valueOf("0000-0000-0000-0000")); client.setMemberName(Text.valueOf("My member name")); diff --git a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ManageMembersControllerTest.java b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ManageMembersControllerTest.java index fb2a43eaf4..abad1da10a 100644 --- a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ManageMembersControllerTest.java +++ b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/ManageMembersControllerTest.java @@ -308,7 +308,7 @@ public void editMemberTest() throws Exception { public void editMemberWithInvalidEmailTest() throws Exception { //Create one member Member group = new Member(); - String email = "group" + System.currentTimeMillis() + "@email.com"; + String email = "group1" + System.currentTimeMillis() + "@email.com"; group.setEmail(Text.valueOf(email)); group.setGroupName(Text.valueOf("Group Name")); group.setType(Text.valueOf("premium-institution")); diff --git a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/OauthRegistrationControllerTest.java b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/OauthRegistrationControllerTest.java index f315d4cfa1..d6f9a7e3fe 100644 --- a/orcid-web/src/test/java/org/orcid/frontend/web/controllers/OauthRegistrationControllerTest.java +++ b/orcid-web/src/test/java/org/orcid/frontend/web/controllers/OauthRegistrationControllerTest.java @@ -2,6 +2,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,6 +31,7 @@ import org.mockito.stubbing.Answer; import org.orcid.core.oauth.OrcidOAuth2Authentication; import org.orcid.core.oauth.service.OrcidAuthorizationEndpoint; +import org.orcid.frontend.util.RequestInfoFormLocalCache; import org.orcid.jaxb.model.message.CreationMethod; import org.orcid.pojo.ajaxForm.Checkbox; import org.orcid.pojo.ajaxForm.OauthRegistrationForm; @@ -64,6 +66,9 @@ public class OauthRegistrationControllerTest { @Mock private HttpServletResponse servletResponse; + + @Mock + private RequestInfoFormLocalCache requestInfoFormLocalCache; @Before public void before() { @@ -75,12 +80,16 @@ public void before() { @Test public void testStripHtmlFromNames() throws UnsupportedEncodingException { + RequestInfoForm rf = new RequestInfoForm(); HttpSession session = mock(HttpSession.class); - RequestInfoForm rf = new RequestInfoForm(); + requestInfoFormLocalCache = mock(RequestInfoFormLocalCache.class); + when(requestInfoFormLocalCache.get(any())).thenReturn(rf); + oauthRegistrationController.setRequestInfoFormLocalCache(requestInfoFormLocalCache); RedirectView mv = new RedirectView(); when(servletRequest.getSession()).thenReturn(session); - when(authorizationEndpoint.approveOrDeny(Matchers.anyMap(), Matchers.anyMap(), Matchers.any(SessionStatus.class), Matchers.any(Principal.class))).thenReturn(mv); - when(authenticationManager.authenticate(Matchers.any(Authentication.class))).thenAnswer(new Answer(){ + when(session.getId()).thenReturn("ID1"); + when(authorizationEndpoint.approveOrDeny(Matchers.anyMap(), Matchers.anyMap(), any(SessionStatus.class), any(Principal.class))).thenReturn(mv); + when(authenticationManager.authenticate(any(Authentication.class))).thenAnswer(new Answer(){ @Override public Authentication answer(InvocationOnMock invocation) throws Throwable { OrcidOAuth2Authentication mockedAuthentication = mock(OrcidOAuth2Authentication.class);