View Javadoc
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  }