diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java index b984c4c1..2d55d26c 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java @@ -103,6 +103,10 @@ private GeneratedDocumentInfo getGeneratedDocumentInfo(String templateName, Map< @Override public GeneratedDocumentInfo storeDocument(byte[] document, String authorizationToken, String fileName) { + if (document == null) { + log.error("Cannot Store the document [{}] because it's null", fileName); + throw new IllegalArgumentException("Document is missing for " + fileName); + } log.debug("Store document requested with document of size [{}]", document.length); String serviceAuthToken = authTokenGenerator.generate(); diff --git a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImplTest.java b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImplTest.java index 3b24f7bf..8e267a13 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImplTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImplTest.java @@ -21,6 +21,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.same; @@ -56,22 +57,22 @@ public class DocumentManagementServiceImplTest { ArgumentCaptor> placeHolderCaptor; static final Map placeholderMap = new HashMap<>(); - static final String authToken = "userAuthToken"; - static final String s2sToken = "s2sAuthToken"; + static final String AUTH_TOKEN = "userAuthToken"; + static final String S2S_TOKEN = "s2sAuthToken"; static final byte[] data = {126}; static final UploadResponse uploadResponse = new UploadResponse(List.of(mockCaseDocsDocuments())); @Test public void testGenerateAndStoreDraftDocumentMock() { - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.generate(D8_PETITION_WELSH_TEMPLATE, placeholderMap)).thenReturn(data); Mockito.when(templatesConfiguration.getFileNameByTemplateName(D8_PETITION_WELSH_TEMPLATE)) .thenReturn(MINI_PETITION_NAME_FOR_WELSH_PDF_FILE); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.generateAndStoreDraftDocument(D8_PETITION_WELSH_TEMPLATE, placeholderMap, authToken); + classUnderTest.generateAndStoreDraftDocument(D8_PETITION_WELSH_TEMPLATE, placeholderMap, AUTH_TOKEN); verify(pdfGenerationService).generate(same(D8_PETITION_WELSH_TEMPLATE), placeHolderCaptor.capture()); Map value = placeHolderCaptor.getValue(); @@ -81,13 +82,13 @@ public void testGenerateAndStoreDraftDocumentMock() { @Test public void testGenerateAndStoreDraftDocumentMockWithDynamicName() { placeholderMap.put("dynamic_fileName","test-file.pdf"); - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.generate(D8_PETITION_WELSH_TEMPLATE, placeholderMap)).thenReturn(data); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.generateAndStoreDraftDocument(D8_PETITION_WELSH_TEMPLATE, placeholderMap, authToken); + classUnderTest.generateAndStoreDraftDocument(D8_PETITION_WELSH_TEMPLATE, placeholderMap, AUTH_TOKEN); verify(pdfGenerationService).generate(same(D8_PETITION_WELSH_TEMPLATE), placeHolderCaptor.capture()); Map value = placeHolderCaptor.getValue(); @@ -96,13 +97,13 @@ public void testGenerateAndStoreDraftDocumentMockWithDynamicName() { @Test public void testGenerateAndStoreDraftDocument_WithDraftPrefixMock() { - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.generate(DRAFT_MINI_PETITION_TEMPLATE_ID, placeholderMap)).thenReturn(data); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.generateAndStoreDraftDocument(DRAFT_MINI_PETITION_TEMPLATE_ID, placeholderMap, authToken); + classUnderTest.generateAndStoreDraftDocument(DRAFT_MINI_PETITION_TEMPLATE_ID, placeholderMap, AUTH_TOKEN); verify(pdfGenerationService).generate(same(DRAFT_MINI_PETITION_TEMPLATE_ID), placeHolderCaptor.capture()); Map value = placeHolderCaptor.getValue(); @@ -115,14 +116,14 @@ public void testConvertToPdf() { byte[] test = "Any String you want".getBytes(); placeholders.put("fileName",test); - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.converToPdf(placeholders,"fileName")).thenReturn(test); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.converToPdf(placeholders, authToken,"fileName"); + classUnderTest.converToPdf(placeholders, AUTH_TOKEN,"fileName"); verify(pdfGenerationService).converToPdf(placeholders,"fileName"); } @@ -131,13 +132,13 @@ public void testConvertToPdf() { @Test public void testGenerateAndStoreFinalDocument_WithDynamicFileName() { placeholderMap.put("dynamic_fileName","test-file.pdf"); - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.generate(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap)).thenReturn(data); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.generateAndStoreDocument(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap, authToken); + classUnderTest.generateAndStoreDocument(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap, AUTH_TOKEN); verify(pdfGenerationService).generate(same(FINAL_MINI_PETITION_TEMPLATE_ID), placeHolderCaptor.capture()); Map value = placeHolderCaptor.getValue(); @@ -147,18 +148,25 @@ public void testGenerateAndStoreFinalDocument_WithDynamicFileName() { @Test public void testGenerateAndStoreFinalDocument_WithOutDynamicFileName() { placeholderMap.remove("dynamic_fileName"); - Mockito.when(authTokenGenerator.generate()).thenReturn(s2sToken); + Mockito.when(authTokenGenerator.generate()).thenReturn(S2S_TOKEN); Mockito.when(pdfGenerationService.generate(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap)).thenReturn(data); Mockito.when(templatesConfiguration.getFileNameByTemplateName(FINAL_MINI_PETITION_TEMPLATE_ID)) .thenReturn(DRAFT_MINI_PETITION_NAME_FOR_PDF_FILE); - Mockito.when(caseDocumentClient.uploadDocuments(eq(authToken), - eq(s2sToken), eq("PRLAPPS"), eq("PRIVATELAW"), any())) + Mockito.when(caseDocumentClient.uploadDocuments(eq(AUTH_TOKEN), + eq(S2S_TOKEN), eq("PRLAPPS"), eq("PRIVATELAW"), any())) .thenReturn(uploadResponse); - classUnderTest.generateAndStoreDocument(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap, authToken); + classUnderTest.generateAndStoreDocument(FINAL_MINI_PETITION_TEMPLATE_ID, placeholderMap, AUTH_TOKEN); verify(pdfGenerationService).generate(same(FINAL_MINI_PETITION_TEMPLATE_ID), placeHolderCaptor.capture()); Map value = placeHolderCaptor.getValue(); Assert.assertNotNull(value); } + + @Test + public void shouldThrowIllegalArgumentExceptionWhenDocumentIsNull() { + assertThrows(IllegalArgumentException.class, () -> { + classUnderTest.storeDocument(null, AUTH_TOKEN ,"File Name"); + }); + } }