@ -15,627 +15,63 @@
* /
package org.thingsboard.server.dao.service ;
import org.junit.After ;
import org.junit.Test ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.thingsboard.server.common.data.StringUtils ;
import org.thingsboard.server.common.data.id.TenantId ;
import org.thingsboard.server.common.data.oauth2.OAuth2Client ;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo ;
import org.thingsboard.server.common.data.oauth2.PlatformType ;
import org.thingsboard.server.dao.oauth2.OAuth2ClientService ;
import org.thingsboard.server.dao.oauth2.OAuth2Utils ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.stream.Collectors ;
import static org.assertj.core.api.Assertions.assertThat ;
@DaoSqlTest
public class OAuth2ClientServiceTest extends AbstractServiceTest {
// private static final OAuth2Info EMPTY_PARAMS = new OAuth2Info(false, false, Collections.emptyList());
@Autowired
protected OAuth2ClientService oAuth2ClientService ;
// @Before
// public void beforeRun() {
// Assert.assertTrue(oAuth2Service.findOauth2ProvidersByTenantId().isEmpty());
// }
//
// @After
// public void after() {
// oAuth2Service.saveOAuth2Info(EMPTY_PARAMS);
// Assert.assertTrue(oAuth2Service.findOauth2ProvidersByTenantId().isEmpty());
// Assert.assertTrue(oAuth2Service.findOAuth2Info().getOauth2ParamsInfos().isEmpty());
// }
//
// @Test
// public void testSaveHttpAndMixedDomainsTogether() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
// Assertions.assertThrows(DataValidationException.class, () -> {
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// });
// }
//
// @Test
// public void testSaveHttpsAndMixedDomainsTogether() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTPS).build(),
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
// Assertions.assertThrows(DataValidationException.class, () -> {
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// });
// }
//
// @Test
// public void testCreateAndFindParams() {
// OAuth2Info oAuth2Info = createDefaultOAuth2Info();
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// // TODO ask if it's safe to check equality on AdditionalProperties
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
// }
//
// @Test
// public void testDisableParams() {
// OAuth2Info oAuth2Info = createDefaultOAuth2Info();
// oAuth2Info.setEnabled(true);
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// oAuth2Info.setEnabled(false);
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundDisabledOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertEquals(oAuth2Info, foundDisabledOAuth2Info);
// }
//
// @Test
// public void testClearDomainParams() {
// OAuth2Info oAuth2Info = createDefaultOAuth2Info();
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// oAuth2Service.saveOAuth2Info(EMPTY_PARAMS);
// OAuth2Info foundAfterClearClientsParams = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundAfterClearClientsParams);
// Assert.assertEquals(EMPTY_PARAMS, foundAfterClearClientsParams);
// }
//
// @Test
// public void testUpdateClientsParams() {
// OAuth2Info oAuth2Info = createDefaultOAuth2Info();
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// OAuth2Info newOAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("another-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("test-domain").scheme(SchemeType.MIXED).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo()
// ))
// .build()
// ));
// oAuth2Service.saveOAuth2Info(newOAuth2Info);
// OAuth2Info foundAfterUpdateOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundAfterUpdateOAuth2Info);
// Assert.assertEquals(newOAuth2Info, foundAfterUpdateOAuth2Info);
// }
//
// @Test
// public void testGetOAuth2Clients() {
// List<OAuth2RegistrationInfo> firstGroup = Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// );
// List<OAuth2RegistrationInfo> secondGroup = Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// );
// List<OAuth2RegistrationInfo> thirdGroup = Lists.newArrayList(
// validRegistrationInfo()
// );
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(firstGroup)
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(secondGroup)
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTPS).build(),
// OAuth2DomainInfo.builder().name("fifth-domain").scheme(SchemeType.HTTP).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(thirdGroup)
// .build()
// ));
//
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// List<OAuth2ClientInfo> firstGroupClientInfos = firstGroup.stream()
// .map(registrationInfo -> new OAuth2ClientInfo(
// registrationInfo.getLoginButtonLabel(), registrationInfo.getLoginButtonIcon(), null))
// .collect(Collectors.toList());
// List<OAuth2ClientInfo> secondGroupClientInfos = secondGroup.stream()
// .map(registrationInfo -> new OAuth2ClientInfo(
// registrationInfo.getLoginButtonLabel(), registrationInfo.getLoginButtonIcon(), null))
// .collect(Collectors.toList());
// List<OAuth2ClientInfo> thirdGroupClientInfos = thirdGroup.stream()
// .map(registrationInfo -> new OAuth2ClientInfo(
// registrationInfo.getLoginButtonLabel(), registrationInfo.getLoginButtonIcon(), null))
// .collect(Collectors.toList());
//
// List<OAuth2ClientInfo> nonExistentDomainClients = oAuth2Service.getOAuth2Clients("http", "non-existent-domain", null, null);
// Assert.assertTrue(nonExistentDomainClients.isEmpty());
//
// List<OAuth2ClientInfo> firstDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "first-domain", null, null);
// Assert.assertEquals(firstGroupClientInfos.size(), firstDomainHttpClients.size());
// firstGroupClientInfos.forEach(firstGroupClientInfo -> {
// Assert.assertTrue(
// firstDomainHttpClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(firstGroupClientInfo.getIcon())
// && clientInfo.getName().equals(firstGroupClientInfo.getName()))
// );
// });
//
// List<OAuth2ClientInfo> firstDomainHttpsClients = oAuth2Service.getOAuth2Clients("https", "first-domain", null, null);
// Assert.assertTrue(firstDomainHttpsClients.isEmpty());
//
// List<OAuth2ClientInfo> fourthDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "fourth-domain", null, null);
// Assert.assertEquals(secondGroupClientInfos.size(), fourthDomainHttpClients.size());
// secondGroupClientInfos.forEach(secondGroupClientInfo -> {
// Assert.assertTrue(
// fourthDomainHttpClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(secondGroupClientInfo.getIcon())
// && clientInfo.getName().equals(secondGroupClientInfo.getName()))
// );
// });
// List<OAuth2ClientInfo> fourthDomainHttpsClients = oAuth2Service.getOAuth2Clients("https", "fourth-domain", null, null);
// Assert.assertEquals(secondGroupClientInfos.size(), fourthDomainHttpsClients.size());
// secondGroupClientInfos.forEach(secondGroupClientInfo -> {
// Assert.assertTrue(
// fourthDomainHttpsClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(secondGroupClientInfo.getIcon())
// && clientInfo.getName().equals(secondGroupClientInfo.getName()))
// );
// });
//
// List<OAuth2ClientInfo> secondDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "second-domain", null, null);
// Assert.assertEquals(firstGroupClientInfos.size() + secondGroupClientInfos.size(), secondDomainHttpClients.size());
// firstGroupClientInfos.forEach(firstGroupClientInfo -> {
// Assert.assertTrue(
// secondDomainHttpClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(firstGroupClientInfo.getIcon())
// && clientInfo.getName().equals(firstGroupClientInfo.getName()))
// );
// });
// secondGroupClientInfos.forEach(secondGroupClientInfo -> {
// Assert.assertTrue(
// secondDomainHttpClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(secondGroupClientInfo.getIcon())
// && clientInfo.getName().equals(secondGroupClientInfo.getName()))
// );
// });
//
// List<OAuth2ClientInfo> secondDomainHttpsClients = oAuth2Service.getOAuth2Clients("https", "second-domain", null, null);
// Assert.assertEquals(firstGroupClientInfos.size() + thirdGroupClientInfos.size(), secondDomainHttpsClients.size());
// firstGroupClientInfos.forEach(firstGroupClientInfo -> {
// Assert.assertTrue(
// secondDomainHttpsClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(firstGroupClientInfo.getIcon())
// && clientInfo.getName().equals(firstGroupClientInfo.getName()))
// );
// });
// thirdGroupClientInfos.forEach(thirdGroupClientInfo -> {
// Assert.assertTrue(
// secondDomainHttpsClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(thirdGroupClientInfo.getIcon())
// && clientInfo.getName().equals(thirdGroupClientInfo.getName()))
// );
// });
// }
//
// @Test
// public void testGetOAuth2ClientsForHttpAndHttps() {
// List<OAuth2RegistrationInfo> firstGroup = Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// );
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(firstGroup)
// .build()
// ));
//
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertNotNull(foundOAuth2Info);
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// List<OAuth2ClientInfo> firstGroupClientInfos = firstGroup.stream()
// .map(registrationInfo -> new OAuth2ClientInfo(
// registrationInfo.getLoginButtonLabel(), registrationInfo.getLoginButtonIcon(), null))
// .collect(Collectors.toList());
//
// List<OAuth2ClientInfo> firstDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "first-domain", null, null);
// Assert.assertEquals(firstGroupClientInfos.size(), firstDomainHttpClients.size());
// firstGroupClientInfos.forEach(firstGroupClientInfo -> {
// Assert.assertTrue(
// firstDomainHttpClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(firstGroupClientInfo.getIcon())
// && clientInfo.getName().equals(firstGroupClientInfo.getName()))
// );
// });
//
// List<OAuth2ClientInfo> firstDomainHttpsClients = oAuth2Service.getOAuth2Clients("https", "first-domain", null, null);
// Assert.assertEquals(firstGroupClientInfos.size(), firstDomainHttpsClients.size());
// firstGroupClientInfos.forEach(firstGroupClientInfo -> {
// Assert.assertTrue(
// firstDomainHttpsClients.stream().anyMatch(clientInfo ->
// clientInfo.getIcon().equals(firstGroupClientInfo.getIcon())
// && clientInfo.getName().equals(firstGroupClientInfo.getName()))
// );
// });
// }
//
// @Test
// public void testGetDisabledOAuth2Clients() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
//
// oAuth2Service.saveOAuth2Info(oAuth2Info);
//
// List<OAuth2ClientInfo> secondDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "second-domain", null, null);
// Assert.assertEquals(5, secondDomainHttpClients.size());
//
// oAuth2Info.setEnabled(false);
// oAuth2Service.saveOAuth2Info(oAuth2Info);
//
// List<OAuth2ClientInfo> secondDomainHttpDisabledClients = oAuth2Service.getOAuth2Clients("http", "second-domain", null, null);
// Assert.assertEquals(0, secondDomainHttpDisabledClients.size());
// }
//
// @Test
// public void testFindAllRegistrations() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTPS).build(),
// OAuth2DomainInfo.builder().name("fifth-domain").scheme(SchemeType.HTTP).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo()
// ))
// .build()
// ));
//
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// List<OAuth2Provider> foundRegistrations = oAuth2Service.findOauth2ProvidersByTenantId();
// Assert.assertEquals(6, foundRegistrations.size());
// oAuth2Info.getOauth2ParamsInfos().stream()
// .flatMap(paramsInfo -> paramsInfo.getClientRegistrations().stream())
// .forEach(registrationInfo ->
// Assert.assertTrue(
// foundRegistrations.stream()
// .anyMatch(registration -> registration.getClientId().equals(registrationInfo.getClientId()))
// )
// );
// }
//
// @Test
// public void testFindRegistrationById() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTPS).build(),
// OAuth2DomainInfo.builder().name("fifth-domain").scheme(SchemeType.HTTP).build()
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo()
// ))
// .build()
// ));
//
// oAuth2Service.saveOAuth2Info(oAuth2Info);
// List<OAuth2Provider> foundRegistrations = oAuth2Service.findOauth2ProvidersByTenantId();
// foundRegistrations.forEach(registration -> {
// OAuth2Provider foundRegistration = oAuth2Service.findProvider(registration.getUuidId());
// Assert.assertEquals(registration, foundRegistration);
// });
// }
//
// @Test
// public void testFindAppSecret() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Lists.newArrayList(
// validMobileInfo("com.test.pkg1", "testPkg1AppSecret"),
// validMobileInfo("com.test.pkg2", "testPkg2AppSecret")
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
// oAuth2Service.saveOAuth2Info(oAuth2Info);
//
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// List<OAuth2ClientInfo> firstDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "first-domain", "com.test.pkg1", null);
// Assert.assertEquals(3, firstDomainHttpClients.size());
// for (OAuth2ClientInfo clientInfo : firstDomainHttpClients) {
// String[] segments = clientInfo.getUrl().split("/");
// String registrationId = segments[segments.length-1];
// String appSecret = oAuth2Service.findAppSecret(UUID.fromString(registrationId), "com.test.pkg1");
// Assert.assertNotNull(appSecret);
// Assert.assertEquals("testPkg1AppSecret", appSecret);
// appSecret = oAuth2Service.findAppSecret(UUID.fromString(registrationId), "com.test.pkg2");
// Assert.assertNotNull(appSecret);
// Assert.assertEquals("testPkg2AppSecret", appSecret);
// appSecret = oAuth2Service.findAppSecret(UUID.fromString(registrationId), "com.test.pkg3");
// Assert.assertNull(appSecret);
// }
// }
//
// @Test
// public void testFindClientsByPackageAndPlatform() {
// OAuth2Info oAuth2Info = new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Lists.newArrayList(
// validMobileInfo("com.test.pkg1", "testPkg1Callback"),
// validMobileInfo("com.test.pkg2", "testPkg2Callback")
// ))
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo("Google", Arrays.asList(PlatformType.WEB, PlatformType.ANDROID)),
// validRegistrationInfo("Facebook", Arrays.asList(PlatformType.IOS)),
// validRegistrationInfo("GitHub", Collections.emptyList())
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
// oAuth2Service.saveOAuth2Info(oAuth2Info);
//
// OAuth2Info foundOAuth2Info = oAuth2Service.findOAuth2Info();
// Assert.assertEquals(oAuth2Info, foundOAuth2Info);
//
// List<OAuth2ClientInfo> firstDomainHttpClients = oAuth2Service.getOAuth2Clients("http", "first-domain", null, null);
// Assert.assertEquals(3, firstDomainHttpClients.size());
// List<OAuth2ClientInfo> pkg1Clients = oAuth2Service.getOAuth2Clients("http", "first-domain", "com.test.pkg1", null);
// Assert.assertEquals(3, pkg1Clients.size());
// List<OAuth2ClientInfo> pkg1AndroidClients = oAuth2Service.getOAuth2Clients("http", "first-domain", "com.test.pkg1", PlatformType.ANDROID);
// Assert.assertEquals(2, pkg1AndroidClients.size());
// Assert.assertTrue(pkg1AndroidClients.stream().anyMatch(client -> client.getName().equals("Google")));
// Assert.assertTrue(pkg1AndroidClients.stream().anyMatch(client -> client.getName().equals("GitHub")));
// List<OAuth2ClientInfo> pkg1IOSClients = oAuth2Service.getOAuth2Clients("http", "first-domain", "com.test.pkg1", PlatformType.IOS);
// Assert.assertEquals(2, pkg1IOSClients.size());
// Assert.assertTrue(pkg1IOSClients.stream().anyMatch(client -> client.getName().equals("Facebook")));
// Assert.assertTrue(pkg1IOSClients.stream().anyMatch(client -> client.getName().equals("GitHub")));
// }
//
// private OAuth2Info createDefaultOAuth2Info() {
// return new OAuth2Info(true, false, Lists.newArrayList(
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("first-domain").scheme(SchemeType.HTTP).build(),
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("third-domain").scheme(SchemeType.HTTPS).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build(),
// OAuth2ParamsInfo.builder()
// .domainInfos(Lists.newArrayList(
// OAuth2DomainInfo.builder().name("second-domain").scheme(SchemeType.MIXED).build(),
// OAuth2DomainInfo.builder().name("fourth-domain").scheme(SchemeType.MIXED).build()
// ))
// .mobileInfos(Collections.emptyList())
// .clientRegistrations(Lists.newArrayList(
// validRegistrationInfo(),
// validRegistrationInfo()
// ))
// .build()
// ));
// }
//
// private OAuth2RegistrationInfo validRegistrationInfo() {
// return validRegistrationInfo(null, Collections.emptyList());
// }
//
// private OAuth2RegistrationInfo validRegistrationInfo(String label, List<PlatformType> platforms) {
// return OAuth2RegistrationInfo.builder()
// .clientId(UUID.randomUUID().toString())
// .clientSecret(UUID.randomUUID().toString())
// .authorizationUri(UUID.randomUUID().toString())
// .accessTokenUri(UUID.randomUUID().toString())
// .scope(Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString()))
// .platforms(platforms == null ? Collections.emptyList() : platforms)
// .userInfoUri(UUID.randomUUID().toString())
// .userNameAttributeName(UUID.randomUUID().toString())
// .jwkSetUri(UUID.randomUUID().toString())
// .clientAuthenticationMethod(UUID.randomUUID().toString())
// .loginButtonLabel(label != null ? label : UUID.randomUUID().toString())
// .loginButtonIcon(UUID.randomUUID().toString())
// .additionalInfo(JacksonUtil.newObjectNode().put(UUID.randomUUID().toString(), UUID.randomUUID().toString()))
// .mapperConfig(
// OAuth2MapperConfig.builder()
// .allowUserCreation(true)
// .activateUser(true)
// .type(MapperType.CUSTOM)
// .custom(
// OAuth2CustomMapperConfig.builder()
// .url(UUID.randomUUID().toString())
// .build()
// )
// .build()
// )
// .build();
// }
//
// private MobileAppInfo validMobileInfo(String pkgName, String appSecret) {
// return MobileAppInfo.builder().pkgName(pkgName)
// .appSecret(appSecret != null ? appSecret : StringUtils.randomAlphanumeric(24))
// .build();
// }
@After
public void after ( ) {
oAuth2ClientService . deleteByTenantId ( TenantId . SYS_TENANT_ID ) ;
}
@Test
public void testSaveOauth2Client ( ) {
OAuth2Client oAuth2Client = validClientInfo ( TenantId . SYS_TENANT_ID , "Test google client" , List . of ( PlatformType . ANDROID ) ) ;
OAuth2Client savedOauth2Client = oAuth2ClientService . saveOAuth2Client ( SYSTEM_TENANT_ID , oAuth2Client ) ;
OAuth2Client retrievedOauth2Client = oAuth2ClientService . findOAuth2ClientById ( savedOauth2Client . getTenantId ( ) , savedOauth2Client . getId ( ) ) ;
assertThat ( retrievedOauth2Client ) . isEqualTo ( savedOauth2Client ) ;
savedOauth2Client . setTitle ( "New title" ) ;
OAuth2Client updatedOauth2Client = oAuth2ClientService . saveOAuth2Client ( SYSTEM_TENANT_ID , savedOauth2Client ) ;
OAuth2Client retrievedOauth2Client2 = oAuth2ClientService . findOAuth2ClientById ( savedOauth2Client . getTenantId ( ) , savedOauth2Client . getId ( ) ) ;
assertThat ( retrievedOauth2Client2 ) . isEqualTo ( updatedOauth2Client ) ;
}
@Test
public void testGetTenantOAuth2Clients ( ) {
List < OAuth2Client > oAuth2Clients = new ArrayList < > ( ) ;
for ( int i = 0 ; i < 5 ; i + + ) {
OAuth2Client oAuth2Client = validClientInfo ( TenantId . SYS_TENANT_ID , StringUtils . randomAlphabetic ( 5 ) ) ;
OAuth2Client savedOauth2Client = oAuth2ClientService . saveOAuth2Client ( SYSTEM_TENANT_ID , oAuth2Client ) ;
oAuth2Clients . add ( savedOauth2Client ) ;
}
List < OAuth2Client > retrieved = oAuth2ClientService . findOAuth2ClientsByTenantId ( TenantId . SYS_TENANT_ID ) ;
assertThat ( retrieved ) . containsOnlyOnceElementsOf ( oAuth2Clients ) ;
List < OAuth2ClientInfo > retrievedInfos = oAuth2ClientService . findOAuth2ClientInfosByTenantId ( TenantId . SYS_TENANT_ID ) ;
List < OAuth2ClientInfo > oAuth2ClientInfos = oAuth2Clients . stream ( ) . map ( OAuth2Utils : : toClientInfo ) . collect ( Collectors . toList ( ) ) ;
assertThat ( retrievedInfos ) . containsOnlyOnceElementsOf ( oAuth2ClientInfos ) ;
}
}