@Test(groups = {"webservice"}) public void testSubmitReportMandatoryFieldsMissing() throws IOException { HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals("{\"error\":\"Missing mandatory fields\"}", responseEntity.getResponse()); reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setProgramCode("HIV"); responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals("{\"error\":\"Missing mandatory fields\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testMasterTemplateValidationMissingBothMandatoryUserInputFields() throws SQLException, IOException { HttpClient client = new HttpClient(); client.createContext(); dbWrapper.updateConfigureTemplate("HIV", "source", "U", "true", "stockInHand"); dbWrapper.updateConfigureTemplate("HIV", "source", "U", "true", "quantityDispensed"); Report reportFromJson = JsonUtility.readObjectFromFile(MINIMUM_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); reportFromJson.getProducts().get(0).setBeginningBalance(1); reportFromJson.getProducts().get(0).setQuantityReceived(4); reportFromJson.getProducts().get(0).setQuantityDispensed(null); reportFromJson.getProducts().get(0).setStockInHand(null); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals( "{\"error\":\"R&R has errors, please correct them to proceed.\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testMultipleSubmitReportForParentFacility() throws SQLException, IOException { dbWrapper.updateProgramsSupportedByField("startDate", "NOW()", "F10"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("F10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(201, responseEntity.getStatus()); assertTrue(responseEntity.getResponse().contains("{\"requisitionId\":")); responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals("{\"error\":\"Program configuration missing\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testInitiateRnrWhenProgramStartDateIsAfterCurrentDateAndInCurrentPeriod() throws SQLException, IOException { dbWrapper.updateProgramsSupportedByField("startDate", "2015-01-01", "V10"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(PRODUCT_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); reportFromJson.getProducts().get(0).setBeginningBalance(1); reportFromJson.getProducts().get(0).setQuantityDispensed(1); reportFromJson.getProducts().get(0).setQuantityReceived(4); reportFromJson.getProducts().get(0).setStockInHand(4); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(201, responseEntity.getStatus()); assertTrue(responseEntity.getResponse().contains("{\"requisitionId\":")); }
@Test(groups = {"webserviceSmoke"}) public void testRequisitionStatusUsingCommTrackUserForExportOrderFlagFalse() throws IOException, SQLException, ParserConfigurationException, SAXException { HttpClient client = new HttpClient(); client.createContext(); submitRnRThroughApi("V10", "HIV", "P10", 1, 10, 1, 0, 0, 2); Long id = (long) dbWrapper.getMaxRnrID(); ResponseEntity responseEntity = client.SendJSON("", URL + "recent", "GET", "", ""); assertEquals(200, responseEntity.getStatus()); assertEquals(StringUtils.countMatches(responseEntity.getResponse(), ":"), 41); List<String> feedJSONList = XmlUtils.getNodeValues(responseEntity.getResponse(), "content"); checkRequisitionStatusOnFeed("INITIATED", feedJSONList.get(0), id); checkRequisitionStatusOnFeed("SUBMITTED", feedJSONList.get(1), id); checkRequisitionStatusOnFeed("AUTHORIZED", feedJSONList.get(2), id); dbWrapper.setExportOrdersFlagInSupplyLinesTable(false, "F10"); approveRequisition(id, 65); dbWrapper.updateRestrictLogin("commTrack", false); convertToOrder("commTrack", "Admin123"); dbWrapper.updateRestrictLogin("commTrack", true); responseEntity = client.SendJSON("", URL + "1", "GET", "", ""); assertEquals(200, responseEntity.getStatus()); feedJSONList = XmlUtils.getNodeValues(responseEntity.getResponse(), "content"); checkRequisitionStatusOnFeed("APPROVED", feedJSONList.get(3), id); checkRequisitionStatusOnFeed("RELEASED", feedJSONList.get(4), id); responseEntity = client.SendJSON("", URL + "recent", "GET", "", ""); assertEquals(200, responseEntity.getStatus()); feedJSONList = XmlUtils.getNodeValues(responseEntity.getResponse(), "content"); checkOrderStatusOnFeed("READY_TO_PACK", feedJSONList.get(0), id); dbWrapper.assignRight("store in-charge", "MANAGE_POD"); OrderPOD OrderPODFromJson = JsonUtility.readObjectFromFile(FULL_JSON_POD_TXT_FILE_NAME, OrderPOD.class); OrderPODFromJson.getPodLineItems().get(0).setQuantityReceived(65); OrderPODFromJson.getPodLineItems().get(0).setProductCode("P10"); client.SendJSON( getJsonStringFor(OrderPODFromJson), format(POD_URL, id), "POST", "commTrack", "Admin123"); responseEntity = client.SendJSON("", URL + "recent", "GET", "", ""); assertEquals(200, responseEntity.getStatus()); feedJSONList = XmlUtils.getNodeValues(responseEntity.getResponse(), "content"); checkOrderStatusOnFeed("RECEIVED", feedJSONList.get(1), id); }
@Test(groups = {"webserviceSmoke"}) public void shouldReturn401StatusWhenSubmittingReportWithInvalidAPIUser() throws IOException { HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(MINIMUM_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack1000", "Admin123"); assertEquals(401, responseEntity.getStatus()); }
@Test(groups = {"webservice"}) public void testSubmitReportWhenParentFacilityInactive() throws SQLException, IOException { dbWrapper.updateFieldValue("facilities", "active", "false", "code", "V10"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals("{\"error\":\"Facility is inoperative\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testProductNotAvailableAtFacilitySubmitReport() throws SQLException, IOException { dbWrapper.deleteProductAvailableAtFacility("P10", "HIV", "V10"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals("{\"error\":\"Invalid product codes [P10]\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testInitiateRnrWhenCurrentPeriodNotDefined() throws IOException, SQLException { dbWrapper.deleteCurrentPeriod(); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(PRODUCT_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals(responseEntity.getResponse(), "{\"error\":\"Program configuration missing\"}"); }
@Test(groups = {"webservice"}) public void testSubmitReportWhenTemplateNotConfigured() throws SQLException, IOException { dbWrapper.deleteTable("program_rnr_columns"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals( "{\"error\":\"Please contact admin to define R&R template for this program\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testPreviousPeriodSubmitReportForParentFacility() throws IOException { HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(FULL_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("F10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals( "{\"error\":\"Please finish all R&R of previous period(s)\"}", responseEntity.getResponse()); }
@Test(groups = {"webservice"}) public void testInitiateRnrWhenProgramStartDateIsAfterCurrentDateAndCurrentPeriodEndDate() throws SQLException, IOException { dbWrapper.insertProcessingPeriod("future", "future period", "2016-01-30", "2017-01-30", 1, "M"); dbWrapper.updateProgramsSupportedByField("startDate", "2017-01-01", "V10"); HttpClient client = new HttpClient(); client.createContext(); Report reportFromJson = JsonUtility.readObjectFromFile(PRODUCT_JSON_TXT_FILE_NAME, Report.class); reportFromJson.setAgentCode("V10"); reportFromJson.setProgramCode("HIV"); reportFromJson.getProducts().get(0).setProductCode("P10"); ResponseEntity responseEntity = client.SendJSON( getJsonStringFor(reportFromJson), "http://localhost:9091/rest-api/requisitions.json", POST, "commTrack", "Admin123"); assertEquals(400, responseEntity.getStatus()); assertEquals(responseEntity.getResponse(), "{\"error\":\"Program configuration missing\"}"); }