From d827b9d84d39f8432de6620ba776fda2d4bf6c69 Mon Sep 17 00:00:00 2001 From: Fabrice Daugan Date: Tue, 2 Jan 2024 20:17:09 +0100 Subject: [PATCH] Lint Coverage --- .../id/resource/CompanyResourceTest.java | 145 ++++++++++-------- .../TestAbstractPluginIdResourceTest.java | 9 +- 2 files changed, 84 insertions(+), 70 deletions(-) diff --git a/src/test/java/org/ligoj/app/plugin/id/resource/CompanyResourceTest.java b/src/test/java/org/ligoj/app/plugin/id/resource/CompanyResourceTest.java index 93c421e..1690e53 100644 --- a/src/test/java/org/ligoj/app/plugin/id/resource/CompanyResourceTest.java +++ b/src/test/java/org/ligoj/app/plugin/id/resource/CompanyResourceTest.java @@ -3,13 +3,7 @@ */ package org.ligoj.app.plugin.id.resource; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - import jakarta.transaction.Transactional; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,9 +13,7 @@ import org.ligoj.app.iam.UserOrg; import org.ligoj.app.model.ContainerType; import org.ligoj.app.plugin.id.dao.ContainerScopeRepository; -import org.ligoj.app.plugin.id.model.ContainerScope; import org.ligoj.bootstrap.MatcherUtil; -import org.ligoj.bootstrap.core.json.TableItem; import org.ligoj.bootstrap.core.validation.ValidationJsonException; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; @@ -31,6 +23,10 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; + /** * Test of {@link CompanyResource}
*/ @@ -46,7 +42,7 @@ class CompanyResourceTest extends AbstractContainerResourceTest { void mock() { resource = new CompanyResource(); applicationContext.getAutowireCapableBeanFactory().autowireBean(resource); - resource.iamProvider = new IamProvider[] { iamProvider }; + resource.iamProvider = new IamProvider[]{iamProvider}; Mockito.when(companyRepository.getTypeName()).thenReturn("company"); } @@ -58,11 +54,11 @@ void mock() { */ @Test void getContainers() { - final TableItem items = resource.getContainers(newUriInfo()); + final var items = resource.getContainers(newUriInfo()); Assertions.assertEquals(9, items.getRecordsFiltered()); Assertions.assertEquals(9, items.getRecordsTotal()); Assertions.assertEquals(9, items.getData().size()); - Assertions.assertEquals("external", items.getData().get(0)); + Assertions.assertEquals("external", items.getData().getFirst()); } /** @@ -70,11 +66,11 @@ void getContainers() { */ @Test void getContainersForWrite() { - final TableItem items = resource.getContainersForWrite(newUriInfo()); + final var items = resource.getContainersForWrite(newUriInfo()); Assertions.assertEquals(9, items.getRecordsFiltered()); Assertions.assertEquals(9, items.getRecordsTotal()); Assertions.assertEquals(9, items.getData().size()); - Assertions.assertEquals("external", items.getData().get(0)); + Assertions.assertEquals("external", items.getData().getFirst()); } /** @@ -83,7 +79,7 @@ void getContainersForWrite() { @Test void getContainersForWrite2() { initSpringSecurityContext("mtuyer"); - final TableItem items = resource.getContainersForWrite(newUriInfo()); + final var items = resource.getContainersForWrite(newUriInfo()); Assertions.assertEquals(0, items.getRecordsFiltered()); Assertions.assertEquals(0, items.getRecordsTotal()); Assertions.assertEquals(0, items.getData().size()); @@ -94,18 +90,45 @@ void getContainersForWrite2() { * administration. */ @Test - void getContainersForAdmin() { + void getContainersForAdminNoRight() { initSpringSecurityContext("mlavoine"); - final TableItem items = resource.getContainersForAdmin(newUriInfo()); + final var items = resource.getContainersForAdmin(newUriInfo()); Assertions.assertEquals(0, items.getRecordsFiltered()); Assertions.assertEquals(0, items.getRecordsTotal()); Assertions.assertEquals(0, items.getData().size()); } @Test - void getContainersForAdmin2() { + void getContainersForAdminInternalNoRight() { + initSpringSecurityContext("mlavoine"); + final var companyOrg1 = new CompanyOrg("ou=france,ou=people,dc=sample,dc=com", "france"); + final var companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); + final var companies = new HashMap(); + companies.put("france", companyOrg1); + companies.put("ing-internal", companyOrg2); + Mockito.when(companyRepository.findAll()).thenReturn(companies); + final var items = resource.getContainersForAdmin(); + Assertions.assertEquals(0, items.size()); + } + + @Test + void getContainersForAdminInternal() { + initSpringSecurityContext("fdaugan"); + final var companyOrg1 = new CompanyOrg("ou=france,ou=people,dc=sample,dc=com", "france"); + final var companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); + final var companies = new HashMap(); + companies.put("france", companyOrg1); + companies.put("ing-internal", companyOrg2); + Mockito.when(companyRepository.findAll()).thenReturn(companies); + final var items = resource.getContainersForAdmin(); + Assertions.assertEquals(1, items.size()); + Assertions.assertEquals("ing-internal", items.stream().iterator().next().getId()); + } + + @Test + void getContainersForAdmin() { initSpringSecurityContext("fdaugan"); - final TableItem items = resource.getContainersForAdmin(newUriInfo()); + final var items = resource.getContainersForAdmin(newUriInfo()); Assertions.assertEquals(2, items.getRecordsFiltered()); Assertions.assertEquals(2, items.getRecordsTotal()); Assertions.assertEquals(2, items.getData().size()); @@ -132,7 +155,7 @@ void findByIdExpected() { @Test void getContainersMyCompany() { initSpringSecurityContext("mmartin"); - final TableItem items = resource.getContainers(newUriInfo()); + final var items = resource.getContainers(newUriInfo()); Assertions.assertEquals(4, items.getRecordsFiltered()); Assertions.assertEquals(4, items.getRecordsTotal()); Assertions.assertEquals(4, items.getData().size()); @@ -146,24 +169,20 @@ void getContainersMyCompany() { @Test void createNoWriteRight() { - final ContainerScope scope = containerScopeRepository.findByName("France"); - final ContainerEditionVo group = new ContainerEditionVo(); + final var scope = containerScopeRepository.findByName("France"); + final var group = new ContainerEditionVo(); group.setName("New-Ax-1-z:Z 0"); group.setScope(scope.getId()); initSpringSecurityContext("mmartin"); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.create(group); - }), "name", "read-only"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.create(group)), "name", "read-only"); } @Test void deleteNotVisile() { initSpringSecurityContext("mmartin"); - final CompanyOrg companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); + final var companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); Mockito.when(companyRepository.findByIdExpected("mmartin", "ligoj")).thenReturn(companyOrg1); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.delete("ligoj"); - }), "company", "unknown-id"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.delete("ligoj")), "company", "unknown-id"); } /** @@ -171,65 +190,57 @@ void deleteNotVisile() { */ @Test void deleteLocked() { - final CompanyOrg company = new CompanyOrg("ou=quarantine,ou=ing,ou=external,ou=people,dc=sample,dc=com", "quarantine"); + final var company = new CompanyOrg("ou=quarantine,ou=ing,ou=external,ou=people,dc=sample,dc=com", "quarantine"); company.setLocked(true); Mockito.when(companyRepository.findByIdExpected(DEFAULT_USER, "quarantine")).thenReturn(company); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.delete("quarantine"); - }), "company", "locked"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.delete("quarantine")), "company", "locked"); } @Test void deleteNotEmptyParent() { - final CompanyOrg companyOrg1 = new CompanyOrg("ou=france,ou=people,dc=sample,dc=com", "france"); - final CompanyOrg companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); - final Map companies = new HashMap<>(); + final var companyOrg1 = new CompanyOrg("ou=france,ou=people,dc=sample,dc=com", "france"); + final var companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); + final var companies = new HashMap(); companies.put("france", companyOrg1); companies.put("ing-internal", companyOrg2); - final Map users = new HashMap<>(); - final UserOrg user1 = new UserOrg(); + final var users = new HashMap(); + final var user1 = new UserOrg(); user1.setCompany("france"); users.put("user1", user1); Mockito.when(userRepository.findAll()).thenReturn(users); Mockito.when(companyRepository.findByIdExpected(DEFAULT_USER, "france")).thenReturn(companyOrg1); Mockito.when(companyRepository.findAll()).thenReturn(companies); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.delete("france"); - }), "company", "not-empty-company"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.delete("france")), "company", "not-empty-company"); } @Test void createAlreadyExists() { - final ContainerScope scope = containerScopeRepository.findByName("France"); - final ContainerEditionVo group = new ContainerEditionVo(); + final var scope = containerScopeRepository.findByName("France"); + final var group = new ContainerEditionVo(); group.setName("orange"); group.setScope(scope.getId()); Mockito.when(companyRepository.findById("orange")).thenReturn(new CompanyOrg("", "")); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.create(group); - }), "name", "already-exist"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.create(group)), "name", "already-exist"); } @Test void createInvalidType() { - final ContainerScope scope = containerScopeRepository.findByName("Fonction"); - final ContainerEditionVo company = new ContainerEditionVo(); + final var scope = containerScopeRepository.findByName("Fonction"); + final var company = new ContainerEditionVo(); company.setName("New-Ax-1-z:Z 0"); company.setScope(scope.getId()); - MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> { - resource.create(company); - }), "type", "container-scope-match"); + MatcherUtil.assertThrows(Assertions.assertThrows(ValidationJsonException.class, () -> resource.create(company)), "type", "container-scope-match"); } @Test void create() { - final ContainerScope scope = containerScopeRepository.findByName("France"); - final ContainerEditionVo company = new ContainerEditionVo(); + final var scope = containerScopeRepository.findByName("France"); + final var company = new ContainerEditionVo(); company.setName("new-company"); company.setScope(scope.getId()); - final CompanyOrg companyOrg1 = new CompanyOrg("ou=new-company,ou=france,ou=people,dc=sample,dc=com", "new-company"); + final var companyOrg1 = new CompanyOrg("ou=new-company,ou=france,ou=people,dc=sample,dc=com", "new-company"); Mockito.when(companyRepository.create("ou=new-company,ou=france,ou=people,dc=sample,dc=com", "new-company")) .thenReturn(companyOrg1); Assertions.assertEquals("new-company", resource.create(company)); @@ -237,7 +248,7 @@ void create() { @Test void delete() { - final CompanyOrg companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); + final var companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); Mockito.when(companyRepository.findByIdExpected(DEFAULT_USER, "ligoj")).thenReturn(companyOrg1); resource.delete("ligoj"); } @@ -245,21 +256,21 @@ void delete() { @Test void findAllExternal() { Mockito.when( - companyRepository.findAll(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())) + companyRepository.findAll(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())) .thenReturn(new PageImpl<>(Collections.emptyList())); initSpringSecurityContext("mtuyer"); - final TableItem groups = resource.findAll(newUriInfoAscSearch("name", "ligoj")); + final var groups = resource.findAll(newUriInfoAscSearch("name", "ligoj")); Assertions.assertEquals(0, groups.getRecordsTotal()); } @Test void findAll() { - final CompanyOrg companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); - final CompanyOrg companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); + final var companyOrg1 = new CompanyOrg("ou=ligoj,ou=france,ou=people,dc=sample,dc=com", "ligoj"); + final var companyOrg2 = new CompanyOrg("ou=ing-internal,ou=ing,ou=external,ou=people,dc=sample,dc=com", "ing-internal"); companyOrg2.setLocked(true); - final Map users = new HashMap<>(); - final UserOrg user1 = new UserOrg(); + final var users = new HashMap(); + final var user1 = new UserOrg(); user1.setCompany("france"); users.put("user1", user1); final UserOrg user2 = new UserOrg(); @@ -269,12 +280,12 @@ void findAll() { Mockito.when(userRepository.findAll()).thenReturn(users); Mockito.when( - companyRepository.findAll(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())) + companyRepository.findAll(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())) .thenReturn(new PageImpl<>(Arrays.asList(companyOrg1, companyOrg2))); - final TableItem groups = resource.findAll(newUriInfoAscSearch("name", "g")); + final var groups = resource.findAll(newUriInfoAscSearch("name", "g")); Assertions.assertEquals(2, groups.getRecordsTotal()); - final ContainerCountVo group0 = groups.getData().get(0); + final var group0 = groups.getData().getFirst(); Assertions.assertEquals("ligoj", group0.getName()); Assertions.assertEquals(0, group0.getCount()); Assertions.assertEquals(0, group0.getCountVisible()); @@ -286,7 +297,7 @@ void findAll() { Assertions.assertEquals(ContainerType.COMPANY, group0.getContainerType()); // No group type case - final ContainerCountVo group2 = groups.getData().get(1); + final var group2 = groups.getData().get(1); Assertions.assertEquals("ing-internal", group2.getName()); Assertions.assertEquals(1, group2.getCount()); Assertions.assertEquals(0, group2.getCountVisible()); @@ -301,9 +312,9 @@ void findAll() { @Test void isUserInternalCompanyExternal() { initSpringSecurityContext("mlavoine"); - final UserOrg user = new UserOrg(); + final var user = new UserOrg(); user.setCompany("ext"); - final CompanyOrg company = new CompanyOrg("ou=external,dc=sample,dc=com", "sub"); + final var company = new CompanyOrg("ou=external,dc=sample,dc=com", "sub"); Mockito.when(userRepository.findById("mlavoine")).thenReturn(user); Mockito.when(companyRepository.findById("ext")).thenReturn(company); Mockito.when(userRepository.getPeopleInternalBaseDn()).thenReturn("ou=internal,dc=sample,dc=com"); @@ -321,7 +332,7 @@ void isUserInternalCompanyAny() { @Test void isUserInternalCompany() { initSpringSecurityContext("mmartin"); - final UserOrg user = new UserOrg(); + final var user = new UserOrg(); user.setCompany("sub"); final CompanyOrg company = new CompanyOrg("ou=sub,ou=internal,dc=sample,dc=com", "sub"); Mockito.when(userRepository.findById("mmartin")).thenReturn(user); diff --git a/src/test/java/org/ligoj/app/plugin/id/resource/TestAbstractPluginIdResourceTest.java b/src/test/java/org/ligoj/app/plugin/id/resource/TestAbstractPluginIdResourceTest.java index b2d9b15..8869746 100644 --- a/src/test/java/org/ligoj/app/plugin/id/resource/TestAbstractPluginIdResourceTest.java +++ b/src/test/java/org/ligoj/app/plugin/id/resource/TestAbstractPluginIdResourceTest.java @@ -297,14 +297,17 @@ void authenticateFailed() { @Test void authenticatePrimary() { final var authentication = new UsernamePasswordAuthenticationToken(SECONDARY_LOGIN, "secret"); - Mockito.doReturn(true).when(userRepository).authenticate(SECONDARY_LOGIN, "secret"); - Assertions.assertSame(authentication, resource.authenticate(authentication, "service:id:test:node1", true)); + final var user =new UserOrg(); + user.setId(SECONDARY_LOGIN); + Mockito.doReturn(user).when(userRepository).authenticate(SECONDARY_LOGIN, "secret"); + final var ressult = resource.authenticate(authentication, "service:id:test:node1", true); + Assertions.assertEquals(SECONDARY_LOGIN, ressult.getName()); } @Test void authenticateSecondary() { final var authentication = new UsernamePasswordAuthenticationToken(SECONDARY_LOGIN, "secret"); - Mockito.doReturn(true).when(userRepository).authenticate(SECONDARY_LOGIN, "secret"); + Mockito.doReturn(new UserOrg()).when(userRepository).authenticate(SECONDARY_LOGIN, "secret"); // Create a new IAM node plugged to the primary node final var user = new UserOrg();