View Javadoc
1   package fr.paris.lutece.plugins.identitystore.v3.request.application;
2   
3   import fr.paris.lutece.plugins.identitystore.business.application.ClientApplicationHome;
4   import fr.paris.lutece.plugins.identitystore.v3.request.AbstractIdentityStoreRequestTest;
5   import fr.paris.lutece.plugins.identitystore.v3.web.request.application.ClientCreateRequest;
6   import fr.paris.lutece.plugins.identitystore.v3.web.request.application.ClientUpdateRequest;
7   import fr.paris.lutece.plugins.identitystore.v3.web.rs.DtoConverter;
8   import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.application.ClientApplicationDto;
9   import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.application.ClientChangeResponse;
10  import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.ResponseStatusType;
11  import fr.paris.lutece.plugins.identitystore.v3.web.rs.util.Constants;
12  import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
13  import fr.paris.lutece.plugins.identitystore.web.exception.RequestFormatException;
14  import fr.paris.lutece.plugins.identitystore.web.exception.ResourceNotFoundException;
15  
16  import java.util.concurrent.TimeUnit;
17  
18  public class ClientUpdateRequestTest extends AbstractIdentityStoreRequestTest {
19  
20      @Override
21      public void test_1_RequestOK() throws Exception {
22          final ClientApplicationDto mockClientApplication = createMockClientApplication();
23  
24          String strTestCase = "1.1. Update existing client application's name";
25          final String newName = "ClientUpdateRequestTestNewName";
26          mockClientApplication.setName(newName);
27          try {
28              final ClientUpdateRequest request = new ClientUpdateRequest(mockClientApplication, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
29              final ClientChangeResponse response = (ClientChangeResponse) this.executeRequestOK(request, strTestCase, ResponseStatusType.SUCCESS);
30              assertNotNull( strTestCase + " : client application in response is null", response.getClientApplication() );
31              assertEquals(strTestCase + " : client application in response doesn't have the axpected new name", newName, response.getClientApplication().getName( ) );
32  
33              TimeUnit.SECONDS.sleep(1);
34              assertEquals(strTestCase + " : client application name in database is not the expected after update", newName, ClientApplicationHome.findByPrimaryKey(response.getClientApplication().getId()).getName());
35          } catch (final IdentityStoreException e) {
36              fail(strTestCase + " : FAIL : " + e.getMessage());
37          } finally {
38              ClientApplicationHome.remove(DtoConverter.convertDtoToClient(mockClientApplication));
39          }
40      }
41  
42      @Override
43      public void test_2_RequestKO() throws Exception {
44          String strTestCase = "2.1. Update request without client application";
45          try {
46              final ClientUpdateRequest request = new ClientUpdateRequest(null, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
47              this.executeRequestKO(request, strTestCase, RequestFormatException.class, Constants.PROPERTY_REST_ERROR_CLIENT_APPLICATION_NULL);
48          } catch (final IdentityStoreException e) {
49              fail(strTestCase + " : FAIL : " + e.getMessage());
50          }
51  
52          strTestCase = "2.2. Update request with empty client application";
53          try {
54              final ClientUpdateRequest request = new ClientUpdateRequest(new ClientApplicationDto(), H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
55              this.executeRequestKO(request, strTestCase, RequestFormatException.class, Constants.PROPERTY_REST_ERROR_CLIENT_APPLICATION_WITHOUT_CLIENT_CODE);
56          } catch (final IdentityStoreException e) {
57              fail(strTestCase + " : FAIL : " + e.getMessage());
58          }
59  
60          strTestCase = "2.3. Update request with uknown client code";
61          ClientApplicationDto clientApp = new ClientApplicationDto();
62          clientApp.setClientCode("unknownClientCode");
63          try {
64              final ClientUpdateRequest request = new ClientUpdateRequest(clientApp, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
65              this.executeRequestKO(request, strTestCase, ResourceNotFoundException.class, Constants.PROPERTY_REST_ERROR_NO_CLIENT_FOUND);
66          } catch (final IdentityStoreException e) {
67              fail(strTestCase + " : FAIL : " + e.getMessage());
68          }
69  
70      }
71  
72      private ClientApplicationDto createMockClientApplication() throws Exception {
73          final ClientApplicationDto clientApp = ClientCreateRequestTest.getClientApplicationDtoForCreate();
74          clientApp.setName("ClientUpdateRequestTest");
75          final ClientCreateRequest request = new ClientCreateRequest(clientApp, H_CLIENT_CODE, H_APP_CODE, H_AUTHOR_NAME, H_AUTHOR_TYPE);
76          final ClientApplicationDto mock = ((ClientChangeResponse) request.doRequest()).getClientApplication();
77          TimeUnit.SECONDS.sleep(1);
78          return mock;
79      }
80  }