KON-13 KON-534 showAnonimized Flag in 5 Services und SonarWork
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java index b16586a..b42e692 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
@@ -36,6 +36,7 @@ import java.net.URI; import java.util.List; +import java.util.Optional; import java.util.UUID; @Log4j2 @@ -62,8 +63,9 @@ @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")}) public Page<CompanyDto> readCompanys( + @RequestParam( "alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous, @PageableDefault(sort = {"companyName"}, direction = Sort.Direction.ASC) Pageable pageable){ - return companyService.findCompanies(pageable); + return companyService.findCompanies(alsoShowAnonymous.orElse(false), pageable); } @PostMapping @@ -107,9 +109,12 @@ @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"), @ApiResponse(code = 404, message = "Ansprechpartner wurden nicht gefunden")}) - public List<ContactPersonDto> findContactPersons(@PathVariable("contactUuid") UUID contactUuid) { + public List<ContactPersonDto> findContactPersons( + @PathVariable("contactUuid") UUID contactUuid, + @RequestParam("alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous ) { - return companyService.findContactPersonsToCompany(contactUuid); + return companyService.findContactPersonsToCompany( + contactUuid, alsoShowAnonymous.orElse(false)); } }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java index 86a5f3f..6ea0938 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
@@ -34,6 +34,7 @@ import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import java.net.URI; +import java.util.Optional; import java.util.UUID; @Log4j2 @@ -60,8 +61,9 @@ @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")}) public Page<ExternalPersonDto> readExternalPersons( + @RequestParam( "alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous, @PageableDefault(sort = {"lastName"}, direction = Sort.Direction.ASC) Pageable pageable){ - return externalPersonService.findExternalPersons(pageable); + return externalPersonService.findExternalPersons(alsoShowAnonymous.orElse(false), pageable); } @PostMapping
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java index adf51c8..bd7639d 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
@@ -63,8 +63,10 @@ public Page<InternalPersonDto> readInternalPersons( @RequestParam( "uid") Optional<String> uid, @RequestParam( "userRef" ) Optional<String> userRef, + @RequestParam( "alsoShowAnonymous" ) Optional<Boolean> alsoShowAnonymous, @PageableDefault(sort = {"lastName"}, direction = Sort.Direction.ASC) Pageable pageable){ return internalPersonService.findInternalPersons( + alsoShowAnonymous.orElse( false ), uid.orElse(null ), userRef.orElse(null ), pageable);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java index b27c86c..efb44aa 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
@@ -15,6 +15,8 @@ package org.eclipse.openk.contactbasedata.repository; import org.eclipse.openk.contactbasedata.model.TblCompany; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -25,4 +27,6 @@ public interface CompanyRepository extends JpaRepository<TblCompany, Long > { @Query("select co from TblCompany co where co.contact.uuid = :contactUuid") Optional<TblCompany> findByTblContactUuid(@Param("contactUuid") UUID contactUuid); + + Page<TblCompany> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java index cdb48e6..d7fd41c 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java
@@ -18,6 +18,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import java.util.List; import java.util.Optional; import java.util.UUID; @@ -26,4 +27,5 @@ @Query("select cp from TblContactPerson cp where cp.contact.uuid = ?1") Optional< TblContactPerson > findByTblContactUuid(final UUID contactUuid); + List<TblContactPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(); // NOSONAR fd 07.02.2020: Method name cannot be changed }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java index ba554e0..a144706 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
@@ -41,7 +41,7 @@ + " and (COALESCE(:filterDelLockExceeded) = false or COALESCE(:filterDelLockExceeded) = true and dc.fkContactId in " + " (select distinct amc.tblContact.id from TblAssignmentModulContact amc where " + " amc.deletionLockUntil is not null and amc.deletionLockUntil < :dateTimeNow ))" - + " and (COALESCE(:showAnonymized) = false and COALESCE(dc.anonymized, false) = false or COALESCE(:showAnonymized) = true and dc.anonymized = true)" + + " and (COALESCE(:showAnonymized) = false and COALESCE(dc.anonymized, false) = false)" ) Page<VwDetailedContact> findByFilter(@Param("contactType")String contactType, // NOSONAR _fd 07.02.2020 moving to a param object will not increase the readability here! @Param("personType") UUID personType,
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java index b93f36f..68888ba 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
@@ -15,8 +15,11 @@ package org.eclipse.openk.contactbasedata.repository; import org.eclipse.openk.contactbasedata.model.TblExternalPerson; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; + import java.util.Optional; import java.util.UUID; @@ -24,4 +27,6 @@ @Query("select ep from TblExternalPerson ep where ep.contact.uuid = ?1") Optional< TblExternalPerson > findByTblContactUuid(final UUID contactUuid ); + Page<TblExternalPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed + }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java index 29c780d..22348d0 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
@@ -35,4 +35,6 @@ @Param( "userRef") String userRef, Pageable pageable); + Page<TblInternalPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed + }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java index 3f8ab69..1f76b0e 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -74,8 +74,12 @@ ); } - public Page<CompanyDto> findCompanies(Pageable pageable) { - return companyRepository.findAll(pageable).map(companyMapper::toCompanyDto); + public Page<CompanyDto> findCompanies(Boolean showAlsoAnonymous, Pageable pageable) { + return (Boolean.TRUE.equals(showAlsoAnonymous) + ? companyRepository.findAll(pageable) + : companyRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable)) + .map(companyMapper::toCompanyDto); + } @@ -113,10 +117,16 @@ return companyMapper.toCompanyDto(companyUpdated); } - public List<ContactPersonDto> findContactPersonsToCompany( UUID companyContactUuid ) { + public List<ContactPersonDto> findContactPersonsToCompany(UUID companyContactUuid, boolean alsoShowAnonymous) { TblCompany company = companyRepository.findByTblContactUuid( companyContactUuid ) .orElseThrow( NotFoundException::new); List<TblContactPerson> tblContactPeople = company.getContactPersons(); + + if( !alsoShowAnonymous ) { + tblContactPeople = tblContactPeople.stream().filter( cp -> cp.getContact().getAnonymized() == null + || !cp.getContact().getAnonymized() ) + .collect(Collectors.toList()); + } Map<UUID, TblContactPerson> tblContactPersonMap = tblContactPeople.stream() .collect( Collectors.toMap(cp -> cp.getContact().getUuid(), x -> x));
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java index b71207e..45feaa4 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java
@@ -84,7 +84,7 @@ companyService.updateCompany(dto); // kill 'em all - companyService.findContactPersonsToCompany(contactUuid).stream() + companyService.findContactPersonsToCompany(contactUuid, false).stream() .forEach(contactPersonDto -> anonymizeContactPerson(contactPersonDto.getContactUuid())); processDependencies(contactUuid);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java index d822078..653cb80 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
@@ -64,8 +64,11 @@ ); } - public Page<ExternalPersonDto> findExternalPersons(Pageable pageable) { - return externalPersonRepository.findAll(pageable).map(externalPersonMapper::toExternalPersonDto); + public Page<ExternalPersonDto> findExternalPersons(boolean showAlsoAnonymous, Pageable pageable) { + return (showAlsoAnonymous + ? externalPersonRepository.findAll(pageable) + : externalPersonRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable)) + .map(externalPersonMapper::toExternalPersonDto); }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java index ef5f4aa..6cf8c54 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -64,10 +64,12 @@ ); } - public Page<InternalPersonDto> findInternalPersons(String uid, String userRef, Pageable pageable) { + public Page<InternalPersonDto> findInternalPersons( boolean showAlsoAnonymous, String uid, String userRef, Pageable pageable) { Page<TblInternalPerson> returnPageDb; if( uid == null && userRef == null) { - returnPageDb = internalPersonRepository.findAll( pageable ); + returnPageDb = showAlsoAnonymous ? + internalPersonRepository.findAll( pageable ) + : internalPersonRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable); } else { returnPageDb = internalPersonRepository.findByFilter( uid, userRef, pageable );
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java index ed0fcf1..8d0468d 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -114,4 +114,7 @@ @Bean public AssignmentModulContactService myAssignmentModulContactService() { return new AssignmentModulContactService(); } + + @Bean + public ContactAnonymizerService myContactAnonymizerService() { return new ContactAnonymizerService(); } }
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java index 1448b60..1d47783 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
@@ -37,6 +37,7 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @@ -71,7 +72,7 @@ public void shouldReturnAllCompany() throws Exception { Page<CompanyDto> epPage = MockDataHelper.mockCompanyDtoPage(); - when(companyService.findCompanies(any(Pageable.class))).thenReturn(epPage); + when(companyService.findCompanies(anyBoolean(), any(Pageable.class))).thenReturn(epPage); mockMvc.perform(get("/companies")) .andExpect(status().is2xxSuccessful()) @@ -123,7 +124,7 @@ public void shouldReturnContactPerson() throws Exception { List<ContactPersonDto> contactPersonDtos = MockDataHelper.mockContactPersonDtos(); - when( companyService.findContactPersonsToCompany(any(UUID.class))).thenReturn(contactPersonDtos); + when( companyService.findContactPersonsToCompany(any(UUID.class), anyBoolean())).thenReturn(contactPersonDtos); mockMvc.perform(get("/companies/"+UUID.randomUUID().toString()+"/contact-persons" )) .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java index 9ceef5d..e844db2 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
@@ -35,6 +35,7 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @@ -69,7 +70,7 @@ public void shouldReturnAllExtPerson() throws Exception { Page<ExternalPersonDto> epPage = MockDataHelper.mockExternalPersonDtoPage(); - when(externalPersonService.findExternalPersons(any(Pageable.class))).thenReturn(epPage); + when(externalPersonService.findExternalPersons(anyBoolean(), any(Pageable.class))).thenReturn(epPage); mockMvc.perform(get("/external-persons")) .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java index f899812..38e135b 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
@@ -34,8 +34,7 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @@ -70,7 +69,7 @@ public void shouldReturnAllIntPersons() throws Exception { Page<InternalPersonDto> ipPage = MockDataHelper.mockInternalPersonDtoPage(); - when(internalPersonService.findInternalPersons(anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage); + when(internalPersonService.findInternalPersons(anyBoolean(), anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage); mockMvc.perform(get("/internal-persons?uid=ABC&userRef=123")) .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java index 9a89a99..d834488 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
@@ -149,7 +149,7 @@ TblCompany company = MockDataHelper.mockCompany(); company.setContactPersons( MockDataHelper.mockTblContactPersons()); when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(company)); - List<ContactPersonDto> cpDtos = companyService.findContactPersonsToCompany(UUID.randomUUID()); + List<ContactPersonDto> cpDtos = companyService.findContactPersonsToCompany(UUID.randomUUID(), false); assertEquals(company.getContactPersons().size(), cpDtos.size()); assertEquals(company.getContactPersons().get(1).getContact().getUuid(), cpDtos.get(1).getContactUuid()); } @@ -158,6 +158,6 @@ @Test public void findContactPersonsToCompanyWithException() { when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty()); - assertThrows( NotFoundException.class, ()-> companyService.findContactPersonsToCompany(UUID.randomUUID())); + assertThrows( NotFoundException.class, ()-> companyService.findContactPersonsToCompany(UUID.randomUUID(), false)); } } \ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java new file mode 100644 index 0000000..60906b5 --- /dev/null +++ b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java
@@ -0,0 +1,182 @@ +/* + ******************************************************************************* + * Copyright (c) 2019 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + ******************************************************************************* + */ +package org.eclipse.openk.contactbasedata.service; + +import org.eclipse.openk.contactbasedata.config.TestConfiguration; +import org.eclipse.openk.contactbasedata.constants.Constants; +import org.eclipse.openk.contactbasedata.model.TblContact; +import org.eclipse.openk.contactbasedata.support.MockDataHelper; +import org.eclipse.openk.contactbasedata.viewmodel.*; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +@DataJpaTest +@ContextConfiguration(classes = {TestConfiguration.class}) +public class ContactAnonymizerServiceTest { + @Qualifier("myContactAnonymizerService") + @Autowired + private ContactAnonymizerService contactAnonymizerService; + + @MockBean + private ContactService contactService; + + @MockBean + private InternalPersonService internalPersonService; + + @MockBean + private ExternalPersonService externalPersonService; + + @MockBean + private CompanyService companyService; + + @MockBean + private ContactPersonService contactPersonService; + + @MockBean + private AddressService addressService; + + @MockBean + private CommunicationService communicationService; + + @Test + public void shouldAnonymizeInternalPerson() { + UUID theContactUuid = UUID.randomUUID(); + TblContact tblIntPers = MockDataHelper.mockTblContact(); + tblIntPers.setUuid(theContactUuid); + tblIntPers.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON); + when( contactService.findTblContact(theContactUuid)).thenReturn(tblIntPers); + + InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto(); + ipDto.setContactUuid(theContactUuid); + when( internalPersonService.findInternalPerson(theContactUuid)) + .thenReturn(ipDto); + + List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList(); + when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos); + + List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList(); + when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos); + + assertNull( ipDto.getContactAnonymized()); + assertNotEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity()); + assertNotEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData()); + + contactAnonymizerService.anonymize(theContactUuid); + + assertTrue( ipDto.getContactAnonymized()); + assertEquals( Constants.ANONYMOUS_TAG , ipDto.getLastName()); + assertNull( ipDto.getFirstName()); + assertNull( ipDto.getSalutationUuid()); + assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity()); + assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData()); + } + + @Test + public void shouldAnonymizeExternalPerson() { + UUID theContactUuid = UUID.randomUUID(); + TblContact tblExtPers = MockDataHelper.mockTblContact(); + tblExtPers.setUuid(theContactUuid); + tblExtPers.setContactType(Constants.CONTACT_TYPE_EXTERNAL_PERSON); + when( contactService.findTblContact(theContactUuid)).thenReturn(tblExtPers); + + ExternalPersonDto epDto = MockDataHelper.mockExternalPersonDto(); + epDto.setContactUuid(theContactUuid); + when( externalPersonService.findExternalPerson(theContactUuid)) + .thenReturn(epDto); + + List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList(); + when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos); + + List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList(); + when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos); + + contactAnonymizerService.anonymize(theContactUuid); + + assertTrue( epDto.getContactAnonymized()); + assertEquals( Constants.ANONYMOUS_TAG, epDto.getLastName() ); + assertNull( epDto.getFirstName()); + assertNull( epDto.getSalutationUuid()); + assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity()); + assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData()); + + } + + + @Test + public void shouldAnonymizeCompany() { + UUID theContactUuid = UUID.randomUUID(); + TblContact tblCompany = MockDataHelper.mockTblContact(); + tblCompany.setUuid(theContactUuid); + tblCompany.setContactType(Constants.CONTACT_TYPE_COMPANY); + when( contactService.findTblContact(theContactUuid)).thenReturn(tblCompany); + + CompanyDto companyDto = MockDataHelper.mockCompanyDto(); + companyDto.setContactUuid(theContactUuid); + when( companyService.findCompany(theContactUuid)) + .thenReturn(companyDto); + + List<ContactPersonDto> contactPersonDtos = MockDataHelper.mockContactPersonDtos(); + when( companyService.findContactPersonsToCompany(theContactUuid, false)) + .thenReturn(contactPersonDtos); + + UUID cp0UUID = contactPersonDtos.get(0).getContactUuid(); + UUID cp1UUID = contactPersonDtos.get(1).getContactUuid(); + when(contactPersonService.findContactPerson(cp0UUID)).thenReturn(contactPersonDtos.get(0)); + when(contactPersonService.findContactPerson(cp1UUID)).thenReturn(contactPersonDtos.get(1)); + + // Addresses and communications for the company + List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList(); + when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos); + List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList(); + when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos); + + // Addresses and communications for the first contact person + List<AddressDto> addressDtosForCp = MockDataHelper.mockAddressDtoList(); + when( addressService.getAddressesByContactUuid(cp0UUID)).thenReturn(addressDtosForCp); + when( addressService.getAddressesByContactUuid(cp1UUID)).thenReturn(new ArrayList<>()); + List<CommunicationDto> communicationDtosForCp = MockDataHelper.mockCommunicationDtoList(); + when( communicationService.getCommunicationsByContactUuid(cp0UUID)).thenReturn(new ArrayList<>()); + when( communicationService.getCommunicationsByContactUuid(cp1UUID)).thenReturn(communicationDtosForCp); + + contactAnonymizerService.anonymize(theContactUuid); + + assertTrue( companyDto.getContactAnonymized()); + assertEquals( Constants.ANONYMOUS_TAG, companyDto.getCompanyName() ); + assertNull( companyDto.getCompanyType()); + assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity() ); + assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData() ); + + assertTrue( contactPersonDtos.get(0).getContactAnonymized()); + assertTrue( contactPersonDtos.get(1).getContactAnonymized()); + assertEquals( Constants.ANONYMOUS_TAG, contactPersonDtos.get(0).getLastName() ); + assertEquals( Constants.ANONYMOUS_TAG, contactPersonDtos.get(1).getLastName() ); + assertNull( contactPersonDtos.get(0).getFirstName()); + assertNull( contactPersonDtos.get(1).getFirstName()); + assertEquals( Constants.ANONYMOUS_TAG, addressDtosForCp.get(0).getCommunity() ); + assertEquals( Constants.ANONYMOUS_TAG, communicationDtosForCp.get(0).getCommunicationData() ); + + } +}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java index 0c94c90..b4b8d5f 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
@@ -79,8 +79,8 @@ when(internalPersonRepository.findAll(any(Pageable.class))).thenReturn(ipPage); when(internalPersonRepository.findByFilter(anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage); - Page<InternalPersonDto> dtoPage = internalPersonService.findInternalPersons(null, null, Pageable.unpaged()); - Page<InternalPersonDto> dtoPage2= internalPersonService.findInternalPersons("abc", "123", Pageable.unpaged()); + Page<InternalPersonDto> dtoPage = internalPersonService.findInternalPersons( false, null, null, Pageable.unpaged()); + Page<InternalPersonDto> dtoPage2= internalPersonService.findInternalPersons( false, "abc", "123", Pageable.unpaged()); verify( internalPersonRepository, times(1)).findAll(any(Pageable.class)); verify( internalPersonRepository, times( 1 )).findByFilter(anyString(), anyString(), any(Pageable.class));