1010import static com .github .tomakehurst .wiremock .client .WireMock .verify ;
1111import static java .lang .String .format ;
1212import static java .util .UUID .randomUUID ;
13+
14+ import org .hamcrest .CoreMatchers ;
15+ import org .jboss .resteasy .specimpl .MultivaluedMapImpl ;
16+
17+ import static javax .ws .rs .core .HttpHeaders .CONTENT_TYPE ;
1318import static javax .ws .rs .core .MediaType .TEXT_PLAIN ;
19+ import static javax .ws .rs .core .Response .Status .OK ;
1420import static org .apache .openejb .util .NetworkUtil .getNextAvailablePort ;
1521import static org .hamcrest .MatcherAssert .assertThat ;
1622import static org .hamcrest .core .Is .is ;
17- import static org .junit .Assert .assertTrue ;
18- import static org .junit .Assert .assertFalse ;
19- import static org .junit .Assert .fail ;
20- import static org .junit .Assert .assertEquals ;
23+ import static org .junit .Assert .*;
2124import static uk .gov .justice .services .test .utils .common .reflection .ReflectionUtils .setField ;
2225
2326import uk .gov .justice .services .file .alfresco .common .AlfrescoRestClient ;
2932import java .util .Optional ;
3033
3134import javax .ws .rs .ProcessingException ;
35+ import javax .ws .rs .core .Response ;
3236import javax .ws .rs .core .MultivaluedMap ;
3337
3438import com .github .tomakehurst .wiremock .junit .WireMockRule ;
@@ -44,7 +48,7 @@ public class AlfrescoFileRequesterIT {
4448 private static final String UNUSED_MIME_TYPE = "text/plain" ;
4549 private static final String UNUSED_FILE_NAME = "file.txt" ;
4650 private static final String ALFRESCO_WORKSPACE_PATH = "/service/api/node/content/workspace/SpacesStore/" ;
47- private static final String ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH = "/ service/api/requestpdf /workspace/SpacesStore/" ;
51+ private static final String ALFRESCO_WORKSPACE_TRANSFORMATION_PATH = "service/api/node /workspace/SpacesStore/" ;
4852
4953
5054 private static int PORT = getNextAvailablePort ();
@@ -53,7 +57,7 @@ public class AlfrescoFileRequesterIT {
5357
5458 private RestClient restClient ;
5559
56- private MultivaluedMap <String , Object > headers ;
60+ private MultivaluedMap <String ,Object > headers ;
5761
5862 @ Rule
5963 public WireMockRule wireMock = new WireMockRule (PORT );
@@ -98,18 +102,44 @@ public void shouldReturnPdfContentFromAlfresco() throws IOException {
98102 final String fileId = randomUUID ().toString ();
99103 final String mimeType = "application/pdf" ;
100104 final String fileName = "file123.txt" ;
101- final String fileContent = "abcd" ;
102105
103- stubFor (get (urlMatching (format ("/alfresco%s%s/%s" , ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH , fileId , fileName )))
104- .withHeader ("cppuid" , equalTo ("user1234" ))
105- .willReturn (aResponse ().withHeader ("Content-Type" , mimeType ).withBody (fileContent )));
106+ restClient = new RestClient ();
107+
108+ headers = new MultivaluedMapImpl <>();
109+ headers .add ("cppuid" , "user1234" );
106110
107- final Optional <InputStream > inputStream = fileRequester .requestPdf (fileId , fileName );
111+ final Response readMaterialResponseAsPdf = restClient .query (format (basePathWithPort (PORT ) + "/%s%s?transformpdf=true" , ALFRESCO_WORKSPACE_TRANSFORMATION_PATH , fileId ), "*/*" , headers );
112+
113+ assertThat (readMaterialResponseAsPdf .getStatus (), is (OK .getStatusCode ()));
114+ assertThat (readMaterialResponseAsPdf .getHeaderString (CONTENT_TYPE ), CoreMatchers .equalTo ("application/pdf;charset=UTF-8" ));
115+
116+ final Optional <InputStream > inputStream = fileRequester .request (fileId , mimeType , fileName , true );
108117 assertTrue (inputStream .isPresent ());
109118
110- assertThat (IOUtils .toString (inputStream .get ()), is ( fileContent ));
119+ assertEquals (IOUtils .toString (inputStream .get ()). length (), readMaterialResponseAsPdf . readEntity ( String . class ). length ( ));
111120 }
112121
122+ @ Test
123+ public void shouldReturnOriginalContentFromAlfresco () throws IOException {
124+ final String fileId = randomUUID ().toString ();
125+ final String mimeType = "text/plain" ;
126+ final String fileName = "file123.txt" ;
127+
128+ restClient = new RestClient ();
129+
130+ headers = new MultivaluedMapImpl <>();
131+ headers .add ("cppuid" , "user1234" );
132+
133+ final Response readMaterialResponseAsPdf = restClient .query (format (basePathWithPort (PORT ) + "/%s%s?transformpdf=false" , ALFRESCO_WORKSPACE_TRANSFORMATION_PATH , fileId ), "*/*" , headers );
134+
135+ assertThat (readMaterialResponseAsPdf .getStatus (), is (OK .getStatusCode ()));
136+ assertThat (readMaterialResponseAsPdf .getHeaderString (CONTENT_TYPE ), CoreMatchers .equalTo ("text/plain;charset=UTF-8" ));
137+
138+ final Optional <InputStream > inputStream = fileRequester .request (fileId , mimeType , fileName , false );
139+ assertTrue (inputStream .isPresent ());
140+
141+ assertEquals (IOUtils .toString (inputStream .get ()).length (), readMaterialResponseAsPdf .readEntity (String .class ).length ());
142+ }
113143
114144 @ Test
115145 public void shouldReturnOptionalEmptyFromAlfrescoIfFileIsNotFound () {
@@ -154,7 +184,7 @@ public void shouldThrowAnExceptionIfAlfrescoServiceIsUnavailable() {
154184 private static AlfrescoFileRequester alfrescoFileRequesterWith (final String basePath ) {
155185 AlfrescoFileRequester fileRequester = new AlfrescoFileRequester ();
156186 fileRequester .alfrescoWorkspacePath = ALFRESCO_WORKSPACE_PATH ;
157- fileRequester .alfrescoPdfContentWorkspacePath = ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH ;
187+ fileRequester .alfrescoPdfContentWorkspacePath = "/" + ALFRESCO_WORKSPACE_TRANSFORMATION_PATH ;
158188 fileRequester .alfrescoReadUser = "user1234" ;
159189 fileRequester .restClient = new AlfrescoRestClient ();
160190 setField (fileRequester .restClient , "alfrescoBaseUri" , basePath );
0 commit comments