merging current DTO during deserialization
This commit is contained in:
@ -6,6 +6,7 @@ import com.fasterxml.jackson.core.TreeNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.hostsharing.hsadminng.service.IdToDtoResolver;
|
||||
import org.hostsharing.hsadminng.service.dto.FluentBuilder;
|
||||
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
@ -13,9 +14,11 @@ import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||
@ -31,22 +34,41 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock
|
||||
public ApplicationContext ctx;
|
||||
private ApplicationContext ctx;
|
||||
|
||||
@Mock
|
||||
public JsonParser jsonParser;
|
||||
private AutowireCapableBeanFactory autowireCapableBeanFactory;
|
||||
|
||||
@Mock
|
||||
public ObjectCodec codec;
|
||||
private JsonParser jsonParser;
|
||||
|
||||
@Mock
|
||||
public TreeNode treeNode;
|
||||
private ObjectCodec codec;
|
||||
|
||||
@Mock
|
||||
private TreeNode treeNode;
|
||||
|
||||
@Mock
|
||||
private GivenService givenService;
|
||||
|
||||
@Mock
|
||||
private GivenChildService givenChildService;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(GivenDto.class, 1234L, Role.ACTUAL_CUSTOMER_USER);
|
||||
|
||||
given (ctx.getAutowireCapableBeanFactory()).willReturn(autowireCapableBeanFactory);
|
||||
given(autowireCapableBeanFactory.createBean(GivenService.class)).willReturn(givenService);
|
||||
given(givenService.findOne(1234L)).willReturn(Optional.of(new GivenDto()
|
||||
.with(dto -> dto.id = 1234L)
|
||||
.with(dto -> dto.openIntegerField = 1)
|
||||
.with(dto -> dto.openLongField = 2L)
|
||||
.with(dto -> dto.openStringField = "3")
|
||||
.with(dto -> dto.restrictedField = "initial value of restricted field")
|
||||
));
|
||||
|
||||
given(jsonParser.getCodec()).willReturn(codec);
|
||||
}
|
||||
|
||||
@ -99,21 +121,54 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
givenUserHavingRole(GivenDto.class, 1234L, Role.FINANCIAL_CONTACT);
|
||||
givenJSonTree(asJSon(
|
||||
ImmutablePair.of("id", 1234L),
|
||||
ImmutablePair.of("restrictedField", "Restricted String Value")));
|
||||
ImmutablePair.of("restrictedField", "update value of restricted field")));
|
||||
|
||||
// when
|
||||
GivenDto actualDto = new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenDto.class).deserialize();
|
||||
|
||||
// then
|
||||
assertThat(actualDto.restrictedField).isEqualTo("Restricted String Value");
|
||||
assertThat(actualDto.restrictedField).isEqualTo("update value of restricted field");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldDeserializeUnchangedStringFieldIfRequiredRoleIsNotCoveredByUser() throws IOException {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(GivenDto.class, 1234L, Role.ANY_CUSTOMER_USER);
|
||||
givenJSonTree(asJSon(
|
||||
ImmutablePair.of("id", 1234L),
|
||||
ImmutablePair.of("restrictedField", "initial value of restricted field")));
|
||||
|
||||
// when
|
||||
GivenDto actualDto = new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenDto.class).deserialize();
|
||||
|
||||
// then
|
||||
assertThat(actualDto.restrictedField).isEqualTo("initial value of restricted field");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotDeserializeUpatedStringFieldIfRequiredRoleIsNotCoveredByUser() throws IOException {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(GivenDto.class, 1L, Role.ANY_CUSTOMER_USER);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("restrictedField", "updated value of restricted field")));
|
||||
|
||||
// when
|
||||
Throwable exception = catchThrowable(() -> new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenDto.class).deserialize());
|
||||
|
||||
// then
|
||||
assertThat(exception).isInstanceOfSatisfying(BadRequestAlertException.class, badRequestAlertException -> {
|
||||
assertThat(badRequestAlertException.getParam()).isEqualTo("GivenDto.restrictedField");
|
||||
assertThat(badRequestAlertException.getErrorKey()).isEqualTo("initializationProhibited");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldInitializeFieldIfRequiredRoleIsNotCoveredByUser() throws IOException {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(null, null, Role.ANY_CUSTOMER_USER);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("restrictedField", "Restricted String Value")));
|
||||
givenUserHavingRole(GivenDto.class, 1L, Role.ANY_CUSTOMER_USER);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("restrictedField", "another value of restricted field")));
|
||||
|
||||
// when
|
||||
Throwable exception = catchThrowable(() -> new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenDto.class).deserialize());
|
||||
@ -130,7 +185,7 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(GivenDto.class, 9999L, Role.CONTRACTUAL_CONTACT);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("parentId", 1111L)));
|
||||
givenJSonTree(asJSon(ImmutablePair.of("parentId", 1234L)));
|
||||
|
||||
// when
|
||||
Throwable exception = catchThrowable(() -> new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenChildDto.class).deserialize());
|
||||
@ -146,14 +201,14 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
public void shouldCreateIfRoleRequiredByReferencedEntityIsCoveredByUser() throws IOException {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(GivenDto.class, 1111L, Role.CONTRACTUAL_CONTACT);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("parentId", 1111L)));
|
||||
givenUserHavingRole(GivenDto.class, 1234L, Role.CONTRACTUAL_CONTACT);
|
||||
givenJSonTree(asJSon(ImmutablePair.of("parentId", 1234L)));
|
||||
|
||||
// when
|
||||
final GivenChildDto actualDto = new JSonDeserializerWithAccessFilter<>(ctx, jsonParser, null, GivenChildDto.class).deserialize();
|
||||
|
||||
// then
|
||||
assertThat(actualDto.parentId).isEqualTo(1111L);
|
||||
assertThat(actualDto.parentId).isEqualTo(1234L);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -193,9 +248,12 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
given(codec.readTree(jsonParser)).willReturn(new ObjectMapper().readTree(givenJSon));
|
||||
}
|
||||
|
||||
public static class GivenDto {
|
||||
abstract class GivenService implements IdToDtoResolver<GivenDto> {
|
||||
}
|
||||
|
||||
@SelfId
|
||||
public static class GivenDto extends FluentBuilder<GivenDto> {
|
||||
|
||||
@SelfId(resolver = GivenService.class)
|
||||
@AccessFor(read = Role.ANY_CUSTOMER_USER)
|
||||
Long id;
|
||||
|
||||
@ -212,12 +270,12 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
Long openLongField;
|
||||
}
|
||||
|
||||
abstract class GivenService implements IdToDtoResolver<GivenDto> {
|
||||
abstract class GivenChildService implements IdToDtoResolver<GivenChildDto> {
|
||||
}
|
||||
|
||||
public static class GivenChildDto {
|
||||
public static class GivenChildDto extends FluentBuilder<GivenChildDto> {
|
||||
|
||||
@SelfId
|
||||
@SelfId(resolver = GivenChildService.class)
|
||||
@AccessFor(read = Role.ANY_CUSTOMER_USER)
|
||||
Long id;
|
||||
|
||||
@ -231,11 +289,11 @@ public class JSonDeserializerWithAccessFilterUnitTest {
|
||||
|
||||
public static class GivenDtoWithMultipleSelfId {
|
||||
|
||||
@SelfId
|
||||
@SelfId(resolver = GivenChildService.class)
|
||||
@AccessFor(read = Role.ANY_CUSTOMER_USER)
|
||||
Long id;
|
||||
|
||||
@SelfId
|
||||
@SelfId(resolver = GivenChildService.class)
|
||||
@AccessFor(read = Role.ANY_CUSTOMER_USER)
|
||||
Long id2;
|
||||
|
||||
|
@ -5,18 +5,22 @@ import org.apache.commons.lang3.NotImplementedException;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.commons.lang3.RandomUtils;
|
||||
import org.hostsharing.hsadminng.service.IdToDtoResolver;
|
||||
import org.hostsharing.hsadminng.service.dto.FluentBuilder;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@ -26,10 +30,16 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock
|
||||
public ApplicationContext ctx;
|
||||
private ApplicationContext ctx;
|
||||
|
||||
@Mock
|
||||
public JsonGenerator jsonGenerator;
|
||||
private AutowireCapableBeanFactory autowireCapableBeanFactory;
|
||||
|
||||
@Mock
|
||||
private JsonGenerator jsonGenerator;
|
||||
|
||||
@Mock
|
||||
private GivenCustomerService givenCustomerService;
|
||||
|
||||
private final GivenDto givenDTO = createSampleDto();
|
||||
|
||||
@ -37,6 +47,12 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
public void init() {
|
||||
MockSecurityContext.givenAuthenticatedUser();
|
||||
MockSecurityContext.givenUserHavingRole(GivenCustomerDto.class, 888L, Role.ANY_CUSTOMER_USER);
|
||||
|
||||
given(ctx.getAutowireCapableBeanFactory()).willReturn(autowireCapableBeanFactory);
|
||||
given(autowireCapableBeanFactory.createBean(GivenCustomerService.class)).willReturn(givenCustomerService);
|
||||
given(givenCustomerService.findOne(888L)).willReturn(Optional.of(new GivenCustomerDto()
|
||||
.with(dto -> dto.id = 888L)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -84,7 +100,7 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
}
|
||||
class GivenDtoWithUnimplementedFieldType {
|
||||
@AccessFor(read = Role.ANYBODY)
|
||||
Arbitrary fieldWithUnimplementedType;
|
||||
Arbitrary fieldWithUnimplementedType = new Arbitrary();
|
||||
}
|
||||
final GivenDtoWithUnimplementedFieldType givenDtoWithUnimplementedFieldType = new GivenDtoWithUnimplementedFieldType();
|
||||
|
||||
@ -107,8 +123,10 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
return dto;
|
||||
}
|
||||
|
||||
private static class GivenCustomerDto {
|
||||
|
||||
private static class GivenCustomerDto extends FluentBuilder<GivenCustomerDto> {
|
||||
@SelfId(resolver = GivenService.class)
|
||||
@AccessFor(read = Role.ANYBODY)
|
||||
Long id;
|
||||
}
|
||||
|
||||
private abstract class GivenCustomerService implements IdToDtoResolver<GivenCustomerDto> {
|
||||
@ -116,7 +134,12 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
|
||||
private static class GivenDto {
|
||||
|
||||
@SelfId(resolver = GivenService.class)
|
||||
@AccessFor(read = Role.ANYBODY)
|
||||
Long id;
|
||||
|
||||
@ParentId(resolver = GivenCustomerService.class)
|
||||
@AccessFor(read = {Role.TECHNICAL_CONTACT, Role.FINANCIAL_CONTACT})
|
||||
Long customerId;
|
||||
|
||||
@AccessFor(read = {Role.TECHNICAL_CONTACT, Role.FINANCIAL_CONTACT})
|
||||
@ -131,4 +154,9 @@ public class JSonSerializerWithAccessFilterUnitTest {
|
||||
@AccessFor(read = Role.ANYBODY)
|
||||
Long openLongField;
|
||||
}
|
||||
|
||||
private abstract class GivenService implements IdToDtoResolver<GivenService> {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -20,8 +20,13 @@ public class MockSecurityContext {
|
||||
|
||||
public static void givenUserHavingRole(final Class<?> onClass, final Long onId, final Role role) {
|
||||
if ((onClass == null || onId == null) && !role.isIndependent()) {
|
||||
throw new IllegalArgumentException("dependent roles like " + role + " depend on DtoClass and ID");
|
||||
throw new IllegalArgumentException("dependent roles like " + role + " missing DtoClass and ID");
|
||||
}
|
||||
SecurityUtils.addUserRole(onClass, onId, role);
|
||||
}
|
||||
|
||||
public static void givenUserHavingRole(final Role role) {
|
||||
givenUserHavingRole(null, null, role);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ public class RoleUnitTest {
|
||||
assertThat(Role.SUPPORTER.covers(Role.ADMIN)).isFalse();
|
||||
|
||||
assertThat(Role.ANY_CUSTOMER_CONTACT.covers(Role.SUPPORTER)).isFalse();
|
||||
assertThat(Role.CONTRACTUAL_CONTACT.covers(Role.ANY_CUSTOMER_CONTACT)).isFalse();
|
||||
assertThat(Role.ANY_CUSTOMER_CONTACT.covers(Role.CONTRACTUAL_CONTACT)).isFalse();
|
||||
assertThat(Role.FINANCIAL_CONTACT.covers(Role.CONTRACTUAL_CONTACT)).isFalse();
|
||||
assertThat(Role.FINANCIAL_CONTACT.covers(Role.TECHNICAL_CONTACT)).isFalse();
|
||||
assertThat(Role.TECHNICAL_CONTACT.covers(Role.CONTRACTUAL_CONTACT)).isFalse();
|
||||
@ -55,7 +55,7 @@ public class RoleUnitTest {
|
||||
|
||||
assertThat(Role.SUPPORTER.covers(Role.ANY_CUSTOMER_CONTACT)).isTrue();
|
||||
|
||||
assertThat(Role.ANY_CUSTOMER_CONTACT.covers(Role.CONTRACTUAL_CONTACT)).isTrue();
|
||||
assertThat(Role.CONTRACTUAL_CONTACT.covers(Role.ANY_CUSTOMER_CONTACT)).isTrue();
|
||||
assertThat(Role.CONTRACTUAL_CONTACT.covers(Role.FINANCIAL_CONTACT)).isTrue();
|
||||
assertThat(Role.CONTRACTUAL_CONTACT.covers(Role.TECHNICAL_CONTACT)).isTrue();
|
||||
assertThat(Role.TECHNICAL_CONTACT.covers(Role.ANY_CUSTOMER_USER)).isTrue();
|
||||
|
@ -2,54 +2,98 @@ package org.hostsharing.hsadminng.service.dto;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.hostsharing.hsadminng.domain.Customer;
|
||||
import org.hostsharing.hsadminng.domain.enumeration.CustomerKind;
|
||||
import org.hostsharing.hsadminng.domain.enumeration.VatRegion;
|
||||
import org.hostsharing.hsadminng.repository.CustomerRepository;
|
||||
import org.hostsharing.hsadminng.service.CustomerService;
|
||||
import org.hostsharing.hsadminng.service.accessfilter.Role;
|
||||
import org.hostsharing.hsadminng.service.mapper.CustomerMapper;
|
||||
import org.hostsharing.hsadminng.service.mapper.CustomerMapperImpl;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.json.JsonTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hostsharing.hsadminng.service.accessfilter.MockSecurityContext.givenAuthenticatedUser;
|
||||
import static org.hostsharing.hsadminng.service.accessfilter.MockSecurityContext.givenUserHavingRole;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
||||
@JsonTest
|
||||
@SpringBootTest(classes = {CustomerMapperImpl.class, CustomerRepository.class, CustomerService.class, CustomerDTO.CustomerJsonSerializer.class, CustomerDTO.CustomerJsonDeserializer.class})
|
||||
@RunWith(SpringRunner.class)
|
||||
public class CustomerDTOUnitTest {
|
||||
|
||||
@Rule
|
||||
public MockitoRule mockito = MockitoJUnit.rule();
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@Autowired
|
||||
private CustomerMapper customerMapper;
|
||||
|
||||
@MockBean
|
||||
private CustomerRepository customerRepository;
|
||||
|
||||
@MockBean
|
||||
private CustomerService customerService;
|
||||
|
||||
@Test
|
||||
public void testSerializationAsContractualCustomerContact() throws JsonProcessingException {
|
||||
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(CustomerDTO.class, null, Role.ANY_CUSTOMER_USER);
|
||||
CustomerDTO given = createSomeCustomerDTO();
|
||||
givenUserHavingRole(CustomerDTO.class, 1234L, Role.CONTRACTUAL_CONTACT);
|
||||
CustomerDTO given = createSomeCustomerDTO(1234L);
|
||||
|
||||
// when
|
||||
String actual = objectMapper.writeValueAsString(given);
|
||||
|
||||
// then
|
||||
given.setContractualAddress(null);
|
||||
given.setContractualSalutation(null);
|
||||
given.setBillingAddress(null);
|
||||
given.setBillingSalutation(null);
|
||||
given.setRemark(null);
|
||||
assertEquals(createExpectedJSon(given), actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationAsTechnicalCustomerUser() throws JsonProcessingException {
|
||||
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(CustomerDTO.class, 1234L, Role.TECHNICAL_CONTACT);
|
||||
CustomerDTO given = createSomeCustomerDTO(1234L);
|
||||
|
||||
// when
|
||||
String actual = objectMapper.writeValueAsString(given);
|
||||
|
||||
// then
|
||||
final String expectedJSon = "{" +
|
||||
toJSonFieldDefinition("id", given.getId()) + "," +
|
||||
toJSonFieldDefinition("reference", given.getReference()) + "," +
|
||||
toJSonFieldDefinition("prefix", given.getPrefix()) + "," +
|
||||
toJSonFieldDefinition("name", given.getName()) +
|
||||
"}";
|
||||
assertEquals(expectedJSon, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializationAsSupporter() throws JsonProcessingException {
|
||||
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(CustomerDTO.class, null, Role.SUPPORTER);
|
||||
CustomerDTO given = createSomeCustomerDTO();
|
||||
CustomerDTO given = createSomeCustomerDTO(1234L);
|
||||
|
||||
// when
|
||||
String actual = objectMapper.writeValueAsString(given);
|
||||
@ -62,7 +106,8 @@ public class CustomerDTOUnitTest {
|
||||
public void testDeserializeAsContractualCustomerContact() throws IOException {
|
||||
// given
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(CustomerDTO.class, null, Role.CONTRACTUAL_CONTACT);
|
||||
givenUserHavingRole(CustomerDTO.class, 1234L, Role.CONTRACTUAL_CONTACT);
|
||||
given(customerRepository.findById(1234L)).willReturn(Optional.of(new Customer().id(1234L)));
|
||||
String json = "{\"id\":1234,\"contractualSalutation\":\"Hallo Updated\",\"billingSalutation\":\"Moin Updated\"}";
|
||||
|
||||
// when
|
||||
@ -84,14 +129,35 @@ public class CustomerDTOUnitTest {
|
||||
toJSonFieldDefinitionIfPresent("reference", dto.getReference()) +
|
||||
toJSonFieldDefinitionIfPresent("prefix", dto.getPrefix()) +
|
||||
toJSonFieldDefinitionIfPresent("name", dto.getName()) +
|
||||
toJSonFieldDefinitionIfPresent("kind", "LEGAL") +
|
||||
toJSonNullFieldDefinition("birthDate") +
|
||||
toJSonNullFieldDefinition("birthPlace") +
|
||||
toJSonFieldDefinitionIfPresent("registrationCourt", "Registergericht") +
|
||||
toJSonFieldDefinitionIfPresent("registrationNumber", "Registernummer") +
|
||||
toJSonFieldDefinitionIfPresent("vatRegion", "DOMESTIC") +
|
||||
toJSonFieldDefinitionIfPresent("vatNumber", "DE1234") +
|
||||
toJSonFieldDefinitionIfPresent("contractualSalutation", dto.getContractualSalutation()) +
|
||||
toJSonFieldDefinitionIfPresent("contractualAddress", dto.getContractualAddress()) +
|
||||
toJSonFieldDefinitionIfPresent("billingSalutation", dto.getBillingSalutation()) +
|
||||
toJSonFieldDefinitionIfPresent("billingAddress", dto.getBillingAddress()) +
|
||||
toJSonFieldDefinitionIfPresent("remark", dto.getRemark()) ;
|
||||
toJSonFieldDefinitionIfPresent("remark", dto.getRemark());
|
||||
return "{" + json.substring(0, json.length() - 1) + "}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String toJSonFieldDefinition(String name, String value) {
|
||||
return inQuotes(name) + ":" + (value != null ? inQuotes(value) : "null");
|
||||
}
|
||||
|
||||
private String toJSonFieldDefinition(String name, Number value) {
|
||||
return inQuotes(name) + ":" + (value != null ? value : "null");
|
||||
}
|
||||
|
||||
private String toJSonNullFieldDefinition(String name) {
|
||||
return inQuotes(name) + ":null,";
|
||||
}
|
||||
|
||||
private String toJSonFieldDefinitionIfPresent(String name, String value) {
|
||||
return value != null ? inQuotes(name) + ":" + inQuotes(value) + "," : "";
|
||||
}
|
||||
@ -104,12 +170,17 @@ public class CustomerDTOUnitTest {
|
||||
return "\"" + value.toString() + "\"";
|
||||
}
|
||||
|
||||
private CustomerDTO createSomeCustomerDTO() {
|
||||
CustomerDTO given = new CustomerDTO();
|
||||
given.setId(1234L);
|
||||
private CustomerDTO createSomeCustomerDTO(final long id) {
|
||||
final CustomerDTO given = new CustomerDTO();
|
||||
given.setId(id);
|
||||
given.setReference(10001);
|
||||
given.setPrefix("abc");
|
||||
given.setName("Mein Name");
|
||||
given.setKind(CustomerKind.LEGAL);
|
||||
given.setRegistrationCourt("Registergericht");
|
||||
given.setRegistrationNumber("Registernummer");
|
||||
given.setVatRegion(VatRegion.DOMESTIC);
|
||||
given.setVatNumber("DE1234");
|
||||
given.setContractualAddress("Eine Adresse");
|
||||
given.setContractualSalutation("Hallo");
|
||||
given.setBillingAddress("Noch eine Adresse");
|
||||
|
@ -5,6 +5,8 @@ import com.fasterxml.jackson.core.ObjectCodec;
|
||||
import com.fasterxml.jackson.core.TreeNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.hostsharing.hsadminng.service.CustomerService;
|
||||
import org.hostsharing.hsadminng.service.MembershipService;
|
||||
import org.hostsharing.hsadminng.service.accessfilter.JSonDeserializerWithAccessFilter;
|
||||
import org.hostsharing.hsadminng.service.accessfilter.Role;
|
||||
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
|
||||
@ -14,9 +16,11 @@ import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||
@ -31,20 +35,36 @@ public class MembershipDTOUnitTest {
|
||||
public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock
|
||||
public ApplicationContext ctx;
|
||||
private ApplicationContext ctx;
|
||||
|
||||
@Mock
|
||||
public JsonParser jsonParser;
|
||||
private AutowireCapableBeanFactory autowireCapableBeanFactory;
|
||||
|
||||
@Mock
|
||||
public ObjectCodec codec;
|
||||
private JsonParser jsonParser;
|
||||
|
||||
@Mock
|
||||
public TreeNode treeNode;
|
||||
private ObjectCodec codec;
|
||||
|
||||
@Mock
|
||||
private TreeNode treeNode;
|
||||
|
||||
@Mock
|
||||
private MembershipService membershipService;
|
||||
|
||||
@Mock
|
||||
private CustomerService customerService;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
given(jsonParser.getCodec()).willReturn(codec);
|
||||
|
||||
given (ctx.getAutowireCapableBeanFactory()).willReturn(autowireCapableBeanFactory);
|
||||
given(autowireCapableBeanFactory.createBean(MembershipService.class)).willReturn(membershipService);
|
||||
given(autowireCapableBeanFactory.createBean(CustomerService.class)).willReturn(customerService);
|
||||
given(customerService.findOne(1234L)).willReturn(Optional.of(new CustomerDTO()
|
||||
.with(dto -> dto.setId(1234L))
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -154,7 +154,7 @@ public class ShareDTOUnitTest {
|
||||
givenDTO.setAction(ShareAction.SUBSCRIPTION);
|
||||
givenDTO.setQuantity(3);
|
||||
givenDTO.setDocumentDate(LocalDate.parse("2019-04-22"));
|
||||
givenDTO.setMembershipDocumentDate("2019-04-21"); // TODO: why is this not a LocalDate?
|
||||
givenDTO.setMembershipDisplayReference("2019-04-21"); // TODO: why is this not a LocalDate?
|
||||
givenDTO.setValueDate(LocalDate.parse("2019-04-30"));
|
||||
givenDTO.setRemark("Some Remark");
|
||||
return givenDTO;
|
||||
|
@ -9,6 +9,7 @@ import org.hostsharing.hsadminng.domain.enumeration.VatRegion;
|
||||
import org.hostsharing.hsadminng.repository.CustomerRepository;
|
||||
import org.hostsharing.hsadminng.service.CustomerQueryService;
|
||||
import org.hostsharing.hsadminng.service.CustomerService;
|
||||
import org.hostsharing.hsadminng.service.accessfilter.Role;
|
||||
import org.hostsharing.hsadminng.service.dto.CustomerDTO;
|
||||
import org.hostsharing.hsadminng.service.mapper.CustomerMapper;
|
||||
import org.hostsharing.hsadminng.web.rest.errors.ExceptionTranslator;
|
||||
@ -34,9 +35,12 @@ import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.hasItem;
|
||||
import static org.hostsharing.hsadminng.service.accessfilter.MockSecurityContext.givenAuthenticatedUser;
|
||||
import static org.hostsharing.hsadminng.service.accessfilter.MockSecurityContext.givenUserHavingRole;
|
||||
import static org.hostsharing.hsadminng.web.rest.TestUtil.createFormattingConversionService;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||
|
||||
/**
|
||||
* Test class for the CustomerResource REST controller.
|
||||
*
|
||||
@ -133,6 +137,10 @@ public class CustomerResourceIntTest {
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
givenAuthenticatedUser();
|
||||
givenUserHavingRole(Role.ADMIN);
|
||||
|
||||
final CustomerResource customerResource = new CustomerResource(customerService, customerQueryService);
|
||||
this.restCustomerMockMvc = MockMvcBuilders.standaloneSetup(customerResource)
|
||||
.setCustomArgumentResolvers(pageableArgumentResolver)
|
||||
@ -144,7 +152,7 @@ public class CustomerResourceIntTest {
|
||||
|
||||
/**
|
||||
* Create an entity for this test.
|
||||
*
|
||||
* <p>
|
||||
* This is a static method, as tests for other entities might also need it,
|
||||
* if they test an entity which requires the current entity.
|
||||
*/
|
||||
@ -170,7 +178,7 @@ public class CustomerResourceIntTest {
|
||||
|
||||
/**
|
||||
* Create another entity for tests.
|
||||
*
|
||||
* <p>
|
||||
* This is a static method, as tests for other entities might also need it,
|
||||
* if they test an entity which requires the current entity.
|
||||
*/
|
||||
@ -372,22 +380,22 @@ public class CustomerResourceIntTest {
|
||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
|
||||
.andExpect(jsonPath("$.[*].id").value(hasItem(customer.getId().intValue())))
|
||||
.andExpect(jsonPath("$.[*].reference").value(hasItem(DEFAULT_REFERENCE)))
|
||||
.andExpect(jsonPath("$.[*].prefix").value(hasItem(DEFAULT_PREFIX.toString())))
|
||||
.andExpect(jsonPath("$.[*].name").value(hasItem(DEFAULT_NAME.toString())))
|
||||
.andExpect(jsonPath("$.[*].prefix").value(hasItem(DEFAULT_PREFIX)))
|
||||
.andExpect(jsonPath("$.[*].name").value(hasItem(DEFAULT_NAME)))
|
||||
.andExpect(jsonPath("$.[*].kind").value(hasItem(DEFAULT_KIND.toString())))
|
||||
.andExpect(jsonPath("$.[*].birthDate").value(hasItem(DEFAULT_BIRTH_DATE.toString())))
|
||||
.andExpect(jsonPath("$.[*].birthPlace").value(hasItem(DEFAULT_BIRTH_PLACE.toString())))
|
||||
.andExpect(jsonPath("$.[*].registrationCourt").value(hasItem(DEFAULT_REGISTRATION_COURT.toString())))
|
||||
.andExpect(jsonPath("$.[*].registrationNumber").value(hasItem(DEFAULT_REGISTRATION_NUMBER.toString())))
|
||||
.andExpect(jsonPath("$.[*].birthPlace").value(hasItem(DEFAULT_BIRTH_PLACE)))
|
||||
.andExpect(jsonPath("$.[*].registrationCourt").value(hasItem(DEFAULT_REGISTRATION_COURT)))
|
||||
.andExpect(jsonPath("$.[*].registrationNumber").value(hasItem(DEFAULT_REGISTRATION_NUMBER)))
|
||||
.andExpect(jsonPath("$.[*].vatRegion").value(hasItem(DEFAULT_VAT_REGION.toString())))
|
||||
.andExpect(jsonPath("$.[*].vatNumber").value(hasItem(DEFAULT_VAT_NUMBER.toString())))
|
||||
.andExpect(jsonPath("$.[*].contractualSalutation").value(hasItem(DEFAULT_CONTRACTUAL_SALUTATION.toString())))
|
||||
.andExpect(jsonPath("$.[*].contractualAddress").value(hasItem(DEFAULT_CONTRACTUAL_ADDRESS.toString())))
|
||||
.andExpect(jsonPath("$.[*].billingSalutation").value(hasItem(DEFAULT_BILLING_SALUTATION.toString())))
|
||||
.andExpect(jsonPath("$.[*].billingAddress").value(hasItem(DEFAULT_BILLING_ADDRESS.toString())))
|
||||
.andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK.toString())));
|
||||
.andExpect(jsonPath("$.[*].vatNumber").value(hasItem(DEFAULT_VAT_NUMBER)))
|
||||
.andExpect(jsonPath("$.[*].contractualSalutation").value(hasItem(DEFAULT_CONTRACTUAL_SALUTATION)))
|
||||
.andExpect(jsonPath("$.[*].contractualAddress").value(hasItem(DEFAULT_CONTRACTUAL_ADDRESS)))
|
||||
.andExpect(jsonPath("$.[*].billingSalutation").value(hasItem(DEFAULT_BILLING_SALUTATION)))
|
||||
.andExpect(jsonPath("$.[*].billingAddress").value(hasItem(DEFAULT_BILLING_ADDRESS)))
|
||||
.andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK)));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
public void getCustomer() throws Exception {
|
||||
@ -1162,8 +1170,8 @@ public class CustomerResourceIntTest {
|
||||
// Disconnect from session so that the updates on updatedCustomer are not directly saved in db
|
||||
em.detach(updatedCustomer);
|
||||
updatedCustomer
|
||||
.reference(UPDATED_REFERENCE)
|
||||
.prefix(UPDATED_PREFIX)
|
||||
.reference(null)
|
||||
.prefix(null)
|
||||
.name(UPDATED_NAME)
|
||||
.kind(UPDATED_KIND)
|
||||
.birthDate(UPDATED_BIRTH_DATE)
|
||||
@ -1188,8 +1196,8 @@ public class CustomerResourceIntTest {
|
||||
List<Customer> customerList = customerRepository.findAll();
|
||||
assertThat(customerList).hasSize(databaseSizeBeforeUpdate);
|
||||
Customer testCustomer = customerList.get(customerList.size() - 1);
|
||||
assertThat(testCustomer.getReference()).isEqualTo(UPDATED_REFERENCE);
|
||||
assertThat(testCustomer.getPrefix()).isEqualTo(UPDATED_PREFIX);
|
||||
assertThat(testCustomer.getReference()).isEqualTo(DEFAULT_REFERENCE);
|
||||
assertThat(testCustomer.getPrefix()).isEqualTo(DEFAULT_PREFIX);
|
||||
assertThat(testCustomer.getName()).isEqualTo(UPDATED_NAME);
|
||||
assertThat(testCustomer.getKind()).isEqualTo(UPDATED_KIND);
|
||||
assertThat(testCustomer.getBirthDate()).isEqualTo(UPDATED_BIRTH_DATE);
|
||||
|
Reference in New Issue
Block a user