Skip to content

Commit

Permalink
Lint Coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
fdaugan committed Jan 2, 2024
1 parent 8d3dd5c commit d827b9d
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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}<br>
*/
Expand All @@ -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");
}

Expand All @@ -58,23 +54,23 @@ void mock() {
*/
@Test
void getContainers() {
final TableItem<String> 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());
}

/**
* Check managed companies for write.
*/
@Test
void getContainersForWrite() {
final TableItem<String> 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());
}

/**
Expand All @@ -83,7 +79,7 @@ void getContainersForWrite() {
@Test
void getContainersForWrite2() {
initSpringSecurityContext("mtuyer");
final TableItem<String> 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());
Expand All @@ -94,18 +90,45 @@ void getContainersForWrite2() {
* administration.
*/
@Test
void getContainersForAdmin() {
void getContainersForAdminNoRight() {
initSpringSecurityContext("mlavoine");
final TableItem<String> 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<String, CompanyOrg>();
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<String, CompanyOrg>();
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<String> 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());
Expand All @@ -132,7 +155,7 @@ void findByIdExpected() {
@Test
void getContainersMyCompany() {
initSpringSecurityContext("mmartin");
final TableItem<String> 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());
Expand All @@ -146,120 +169,108 @@ 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");
}

/**
* Container is locked itself
*/
@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<String, CompanyOrg> 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<String, CompanyOrg>();
companies.put("france", companyOrg1);
companies.put("ing-internal", companyOrg2);

final Map<String, UserOrg> users = new HashMap<>();
final UserOrg user1 = new UserOrg();
final var users = new HashMap<String, UserOrg>();
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));
}

@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");
}

@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<ContainerCountVo> 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<String, UserOrg> users = new HashMap<>();
final UserOrg user1 = new UserOrg();
final var users = new HashMap<String, UserOrg>();
final var user1 = new UserOrg();
user1.setCompany("france");
users.put("user1", user1);
final UserOrg user2 = new UserOrg();
Expand All @@ -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<ContainerCountVo> 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());
Expand All @@ -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());
Expand All @@ -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");
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit d827b9d

Please sign in to comment.