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 }