1 package fr.paris.lutece.plugins.identitystore.v3.request.contract;
2
3 import fr.paris.lutece.plugins.identitystore.business.contract.ServiceContractHome;
4 import fr.paris.lutece.plugins.identitystore.v3.request.AbstractIdentityStoreRequestTest;
5 import fr.paris.lutece.plugins.identitystore.v3.web.request.contract.ServiceContractCreateRequest;
6 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.ResponseStatusType;
7 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractChangeResponse;
8 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractDto;
9 import fr.paris.lutece.plugins.identitystore.v3.web.rs.util.Constants;
10 import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
11 import fr.paris.lutece.plugins.identitystore.web.exception.RequestFormatException;
12 import fr.paris.lutece.plugins.identitystore.web.exception.ResourceNotFoundException;
13
14 import java.sql.Date;
15 import java.text.ParseException;
16 import java.text.SimpleDateFormat;
17 import java.util.concurrent.TimeUnit;
18
19 public class ServiceContractCreateRequestTest extends AbstractIdentityStoreRequestTest {
20
21 @Override
22 public void test_1_RequestOK() throws Exception {
23 final String strTestCase = "1.1. Create service contract request";
24 final ServiceContractDto contract = getServiceContractDtoForCreate();
25 try {
26 final ServiceContractCreateRequest request = new ServiceContractCreateRequest(contract, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
27 final ServiceContractChangeResponse response = (ServiceContractChangeResponse) this.executeRequestOK(request, strTestCase, ResponseStatusType.SUCCESS);
28 assertNotNull(strTestCase + " : service contract in response is null", response.getServiceContract());
29
30 TimeUnit.SECONDS.sleep(1);
31 assertNotNull(strTestCase + " : service contract not found in database after creation", ServiceContractHome.findByPrimaryKey(response.getServiceContract().getId( )).orElse(null));
32
33 ServiceContractHome.remove(response.getServiceContract().getId( ));
34 } catch (final IdentityStoreException e) {
35 fail(strTestCase + " : FAIL : " + e.getMessage());
36 }
37 }
38
39 @Override
40 public void test_2_RequestKO() throws Exception {
41 String strTestCase = "2.1. Create request without service contract";
42 try {
43 final ServiceContractCreateRequest request = new ServiceContractCreateRequest(null, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
44 this.executeRequestKO(request, strTestCase, RequestFormatException.class, Constants.PROPERTY_REST_ERROR_PROVIDED_SERVICE_CONTRACT_NULL);
45 } catch (final IdentityStoreException e) {
46 fail(strTestCase + " : FAIL : " + e.getMessage());
47 }
48
49 strTestCase = "2.2. Create request with empty service contract";
50 try {
51 final ServiceContractCreateRequest request = new ServiceContractCreateRequest(new ServiceContractDto(), H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
52 this.executeRequestKO(request, strTestCase, RequestFormatException.class, Constants.PROPERTY_REST_ERROR_SERVICE_CONTRACT_WITHOUT_MANDATORY_FIELDS);
53 } catch (final IdentityStoreException e) {
54 fail(strTestCase + " : FAIL : " + e.getMessage());
55 }
56
57 strTestCase = "2.3. Create request with unknown client code";
58 ServiceContractDto contract = new ServiceContractDto();
59 contract.setClientCode("unknownClientCode");
60 try {
61 final ServiceContractCreateRequest request = new ServiceContractCreateRequest(contract, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
62 this.executeRequestKO(request, strTestCase, ResourceNotFoundException.class, Constants.PROPERTY_REST_ERROR_APPLICATION_NOT_FOUND);
63 } catch (final IdentityStoreException e) {
64 fail(strTestCase + " : FAIL : " + e.getMessage());
65 }
66
67 strTestCase = "2.4. Create request with one missing mandatory field";
68 contract = getServiceContractDtoForCreate();
69 contract.setMoaContactName(null);
70 try {
71 final ServiceContractCreateRequest request = new ServiceContractCreateRequest(contract, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
72 this.executeRequestKO(request, strTestCase, RequestFormatException.class, Constants.PROPERTY_REST_ERROR_SERVICE_CONTRACT_WITHOUT_MANDATORY_FIELDS);
73 } catch (final IdentityStoreException e) {
74 fail(strTestCase + " : FAIL : " + e.getMessage());
75 }
76
77 }
78
79 public static ServiceContractDto getServiceContractDtoForCreate() throws ParseException {
80 final ServiceContractDto contract = new ServiceContractDto();
81 contract.setClientCode(H_CLIENT_CODE);
82 contract.setStartingDate(new Date(new SimpleDateFormat("yyyy-MM-dd").parse("1990-01-01").getTime()));
83 contract.setName("ServiceContractCreateRequestTest");
84 contract.setMoaEntityName("moaEntityName");
85 contract.setMoaContactName("moaContactName");
86 contract.setMoeEntityName("moeEntityName");
87 contract.setMoeResponsibleName("moeResponsibleName");
88 contract.setServiceType("serviceType");
89 return contract;
90 }
91 }