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 }