package gov.samhsa.acs.xdsb.common;
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import gov.samhsa.acs.common.tool.FileReaderImpl;
import gov.samhsa.acs.common.tool.SimpleMarshallerImpl;
import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest;
import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest.DocumentRequest;
import ihe.iti.xds_b._2007.RetrieveDocumentSetResponse;
import ihe.iti.xds_b._2007.RetrieveDocumentSetResponse.DocumentResponse;
import java.io.IOException;
import java.util.HashMap;
import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryResponse;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
public class XdsbErrorFactoryTest {
private SimpleMarshallerImpl marshaller = new SimpleMarshallerImpl();
private FileReaderImpl fileReader = new FileReaderImpl();
private XdsbErrorFactory sut;
@Before
public void setUp() throws Exception {
sut = new XdsbErrorFactory(new RegistryErrorListSetterImpl());
}
@Test
public void testErrorAdhocQueryResponseConstructByErrorMessage() throws SAXException, IOException, Throwable{
// Arrange
String expectedResponse = fileReader.readFile("errorAdhocQueryResponseConstructByErrorMessage.xml");
String errorMessageMock = "errorMessageMock";
// Act
AdhocQueryResponse actualResponse =sut.errorAdhocQueryResponseConstructByErrorMessage(errorMessageMock);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseNoConsentsFound() throws SAXException, Throwable{
// Arrange
String expectedResponse = fileReader.readFile("errorRetrieveDocumentSetResponseNoConsentsFound.xml");
String patientUniqueIdMock = "patientUniqueIdMock";
// Act
RetrieveDocumentSetResponse actualResponse =sut.errorRetrieveDocumentSetResponseNoConsentsFound(patientUniqueIdMock);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseSchemaValidation_Partial_Success() {
// Arrange
RetrieveDocumentSetResponse response = new RetrieveDocumentSetResponse();
DocumentResponse document = new DocumentResponse();
document.setDocumentUniqueId("1");
response.getDocumentResponse().add(document);
HashMap<String, String> map = new HashMap<String, String>();
map.put("2", "error message");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseSchemaValidation(response, map);
// Assert
assertEquals(1, actualResponse.getDocumentResponse().size());
assertEquals(document, actualResponse.getDocumentResponse().get(0));
assertEquals(
"urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:PartialSuccess",
actualResponse.getRegistryResponse().getStatus());
assertEquals(
"Document validation error(s) occurred in Policy Enforcement Point for document(s): [2]. Please contact to system administrator if this error persists.",
actualResponse.getRegistryResponse().getRegistryErrorList()
.getRegistryError().get(0).getCodeContext());
}
@Test
public void testErrorRetrieveDocumentSetResponseSchemaValidation_Failure() {
// Arrange
RetrieveDocumentSetResponse response = new RetrieveDocumentSetResponse();
HashMap<String, String> map = new HashMap<String, String>();
map.put("2", "error message");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseSchemaValidation(response, map);
// Assert
assertEquals(0, actualResponse.getDocumentResponse().size());
assertEquals(
"urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Failure",
actualResponse.getRegistryResponse().getStatus());
assertEquals(
"Document validation error(s) occurred in Policy Enforcement Point for document(s): [2]. Please contact to system administrator if this error persists.",
actualResponse.getRegistryResponse().getRegistryErrorList()
.getRegistryError().get(0).getCodeContext());
}
@Test
public void testSetRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor_Failure()
throws SAXException, IOException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorSetRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor_Failure.xml");
RetrieveDocumentSetResponse response = new RetrieveDocumentSetResponse();
int numRemoved = 2;
String patientIdMock = "patientIdMock";
String authorNPIMock = "authorNPIMock";
// Act
RetrieveDocumentSetResponse actualResponse = sut
.setRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor(
response, numRemoved, patientIdMock, authorNPIMock);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testSetRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor_PartialSuccess()
throws SAXException, IOException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorSetRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor_PartialSuccess.xml");
RetrieveDocumentSetResponse response = new RetrieveDocumentSetResponse();
response.getDocumentResponse().add(new DocumentResponse());
response.getDocumentResponse().add(new DocumentResponse());
int numRemoved = 2;
String patientIdMock = "patientIdMock";
String authorNPIMock = "authorNPIMock";
// Act
RetrieveDocumentSetResponse actualResponse = sut
.setRetrieveDocumentSetResponseRegistryErrorListFilteredByPatientAndAuthor(
response, numRemoved, patientIdMock, authorNPIMock);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseMultipleRepositoryId()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorRetrieveDocumentSetResponseMultipleRepositoryId.xml");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseMultipleRepositoryId();
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseNotExistsOrAccessible()
throws SAXException, IOException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorRetrieveDocumentSetResponseNotExistsOrAccessible.xml");
RetrieveDocumentSetRequest input = new RetrieveDocumentSetRequest();
DocumentRequest doc1 = new DocumentRequest();
doc1.setDocumentUniqueId("DocumentUniqueId1");
doc1.setRepositoryUniqueId("RepositoryUniqueId1");
DocumentRequest doc2 = new DocumentRequest();
doc2.setDocumentUniqueId("DocumentUniqueId2");
doc2.setRepositoryUniqueId("RepositoryUniqueId2");
input.getDocumentRequest().add(doc1);
input.getDocumentRequest().add(doc2);
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseNotExistsOrAccessible(input);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseRepositoryNotAvailable()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorRetrieveDocumentSetResponseRepositoryNotAvailable.xml");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseRepositoryNotAvailable();
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseInternalPEPError()
throws SAXException, IOException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorRetrieveDocumentSetResponseInternalPEPError.xml");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseInternalPEPError();
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorRetrieveDocumentSetResponseAccessDeniedByPDP()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorRetrieveDocumentSetResponseAccessDeniedByPDP.xml");
// Act
RetrieveDocumentSetResponse actualResponse = sut
.errorRetrieveDocumentSetResponseAccessDeniedByPDP();
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorAdhocQueryResponseRegistryNotAvailable()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorAdhocQueryResponseRegistryNotAvailable.xml");
// Act
AdhocQueryResponse actualResponse = sut
.errorAdhocQueryResponseRegistryNotAvailable();
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorAdhocQueryResponseAccessDeniedByPDP()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorAdhocQueryResponseAccessDeniedByPDP.xml");
// Act
AdhocQueryResponse actualResponse = sut
.errorAdhocQueryResponseAccessDeniedByPDP();
// assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorAdhocQueryResponseNoDocumentsFound()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorAdhocQueryResponseNoDocumentsFound.xml");
String patientUniqueIdMock = "patientUniqueIdMock";
String intermediarySubjectNPIMock = "intermediarySubjectNPIMock";
// Act
AdhocQueryResponse actualResponse = sut
.errorAdhocQueryResponseNoDocumentsFound(patientUniqueIdMock,
intermediarySubjectNPIMock);
// Assert
assertResponse(expectedResponse, actualResponse);
}
@Test
public void testErrorAdhocQueryResponseMissingParameters()
throws SAXException, Throwable {
// Arrange
String expectedResponse = fileReader
.readFile("errorAdhocQueryResponseMissingParameters.xml");
// Act
AdhocQueryResponse actualResponse = sut
.errorAdhocQueryResponseMissingParameters();
// Assert
assertResponse(expectedResponse, actualResponse);
}
private void assertResponse(String expectedResponse, Object actualResponse)
throws SAXException, IOException, Throwable {
assertNotNull(actualResponse);
assertXMLEqual("", expectedResponse,
marshaller.marshal(actualResponse));
}
}