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 }