[1240] | 1 | package gov.va.med.edp.rpc;
|
---|
| 2 |
|
---|
| 3 | import gov.va.med.vistalink.adapter.record.LoginsDisabledFaultException;
|
---|
| 4 | import gov.va.med.vistalink.adapter.record.VistaLinkFaultException;
|
---|
| 5 | import gov.va.med.vistalink.rpc.NoRpcContextFaultException;
|
---|
| 6 | import gov.va.med.vistalink.rpc.RpcNotInContextFaultException;
|
---|
| 7 | import gov.va.med.vistalink.rpc.RpcNotOkForProxyUseException;
|
---|
| 8 | import gov.va.med.vistalink.security.m.SecurityAccessVerifyCodePairInvalidException;
|
---|
| 9 | import org.springframework.dao.DataAccessResourceFailureException;
|
---|
| 10 | import org.springframework.dao.DataRetrievalFailureException;
|
---|
| 11 | import org.springframework.dao.PermissionDeniedDataAccessException;
|
---|
| 12 |
|
---|
| 13 | public class VistaLinkRpcTemplateTest extends AbstractVistaLinkConnectionTest {
|
---|
| 14 |
|
---|
| 15 | private static final String TEST_DUZ = "1234567";
|
---|
| 16 | protected static final String TEST_RPC_CONTEXT = "FOO RPC CONTEXT";
|
---|
| 17 | protected static final String TEST_RPC = "FOO BAR RPC";
|
---|
| 18 | protected static final String TEST_DIVISION = "500";
|
---|
| 19 |
|
---|
| 20 | public void testExecuteRpcAsUserNoParams() {
|
---|
| 21 | expectVistaLinkDuzConnection(TEST_DUZ);
|
---|
| 22 | expectRpcAndReturn(TEST_RPC_CONTEXT, TEST_RPC, "<foo/>");
|
---|
| 23 |
|
---|
| 24 | replay();
|
---|
| 25 |
|
---|
| 26 | VistaLinkRpcTemplate t = new VistaLinkRpcTemplate(mockConnectionFactoryLocator);
|
---|
| 27 |
|
---|
| 28 | String result = t.rpcAsUser(TEST_DIVISION, TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC);
|
---|
| 29 | assertEquals("<foo/>", result);
|
---|
| 30 |
|
---|
| 31 | verify();
|
---|
| 32 | }
|
---|
| 33 |
|
---|
| 34 | public void testExecuteRpcAsApplicationNoParams() {
|
---|
| 35 | expectVistaLinkAppProxyConnection(TEST_DUZ);
|
---|
| 36 | expectRpcAndReturn(TEST_RPC_CONTEXT, TEST_RPC, "<foo/>");
|
---|
| 37 |
|
---|
| 38 | replay();
|
---|
| 39 |
|
---|
| 40 | VistaLinkRpcTemplate t = new VistaLinkRpcTemplate(mockConnectionFactoryLocator);
|
---|
| 41 |
|
---|
| 42 | String result = t.rpcAsApplication(TEST_DIVISION, TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC);
|
---|
| 43 | assertEquals("<foo/>", result);
|
---|
| 44 |
|
---|
| 45 | verify();
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | public void testDataAccessResourceFailureExceptionFromLocator() {
|
---|
| 49 | VistaLinkRpcTemplate t = new VistaLinkRpcTemplate(mockConnectionFactoryLocator);
|
---|
| 50 | try {
|
---|
| 51 | t.rpcAsUser("600", TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC); // locator can only find station 500
|
---|
| 52 | fail("expected data access resource failure exception");
|
---|
| 53 | } catch (DataAccessResourceFailureException e) {
|
---|
| 54 | // NOOP
|
---|
| 55 | }
|
---|
| 56 | }
|
---|
| 57 |
|
---|
| 58 | public void testVistaLinkFaultException() {
|
---|
| 59 | assertExceptionDuringRpc(DataRetrievalFailureException.class, new VistaLinkFaultException("foo bar baz"));
|
---|
| 60 | }
|
---|
| 61 |
|
---|
| 62 | public void testSecurityFaultException() {
|
---|
| 63 | assertExceptionDuringRpc(VistaLinkRpcPermissionDeniedException.class, new SecurityAccessVerifyCodePairInvalidException(new VistaLinkFaultException("foo bar baz")));
|
---|
| 64 | }
|
---|
| 65 |
|
---|
| 66 | public void testRpcNotInContextException() {
|
---|
| 67 | assertExceptionDuringRpc(VistaLinkRpcPermissionDeniedException.class, new RpcNotInContextFaultException(new VistaLinkFaultException("foo bar baz")));
|
---|
| 68 | }
|
---|
| 69 |
|
---|
| 70 |
|
---|
| 71 | public void testNoRpcContextException() {
|
---|
| 72 | assertExceptionDuringRpc(VistaLinkRpcInvalidApiUsageException.class, new NoRpcContextFaultException(new VistaLinkFaultException("foo bar baz")));
|
---|
| 73 | }
|
---|
| 74 |
|
---|
| 75 | public void testRpcNotOkForProxyUseException() {
|
---|
| 76 | expectVistaLinkAppProxyConnection(TEST_DUZ);
|
---|
| 77 | expectRpcAndDefaultThrow(TEST_RPC_CONTEXT, TEST_RPC, new RpcNotOkForProxyUseException(new VistaLinkFaultException("foo bar baz")));
|
---|
| 78 |
|
---|
| 79 | replay();
|
---|
| 80 |
|
---|
| 81 | VistaLinkRpcTemplate t = new VistaLinkRpcTemplate(mockConnectionFactoryLocator);
|
---|
| 82 | try {
|
---|
| 83 | t.rpcAsApplication(TEST_DIVISION, TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC);
|
---|
| 84 | fail("expected permission denied exception");
|
---|
| 85 | } catch (VistaLinkRpcInvalidApiUsageException e) {
|
---|
| 86 | // NOOP
|
---|
| 87 | }
|
---|
| 88 | verify();
|
---|
| 89 | }
|
---|
| 90 |
|
---|
| 91 | public void testLoginsDisabledException() {
|
---|
| 92 | assertExceptionDuringRpc(DataAccessResourceFailureException.class, new LoginsDisabledFaultException(new VistaLinkFaultException("foo bar baz")));
|
---|
| 93 | }
|
---|
| 94 |
|
---|
| 95 | public void assertExceptionDuringRpc(Class expectedException, Throwable throwDuringRpc) {
|
---|
| 96 | expectVistaLinkDuzConnection(TEST_DUZ);
|
---|
| 97 | expectVistaLinkAppProxyConnection(TEST_DUZ);
|
---|
| 98 | expectRpcAndDefaultThrow(TEST_RPC_CONTEXT, TEST_RPC, throwDuringRpc);
|
---|
| 99 |
|
---|
| 100 | replay();
|
---|
| 101 |
|
---|
| 102 | VistaLinkRpcTemplate t = new VistaLinkRpcTemplate(mockConnectionFactoryLocator);
|
---|
| 103 | try {
|
---|
| 104 | t.rpcAsUser(TEST_DIVISION, TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC);
|
---|
| 105 | fail("expected " + expectedException.getName());
|
---|
| 106 | } catch (Exception e) {
|
---|
| 107 | assertTrue(expectedException.isAssignableFrom(e.getClass()));
|
---|
| 108 | }
|
---|
| 109 |
|
---|
| 110 | try {
|
---|
| 111 | t.rpcAsApplication(TEST_DIVISION, TEST_DUZ, TEST_RPC_CONTEXT, TEST_RPC);
|
---|
| 112 | fail("expected " + expectedException.getName());
|
---|
| 113 | } catch (Exception e) {
|
---|
| 114 | assertTrue(expectedException.isAssignableFrom(e.getClass()));
|
---|
| 115 | }
|
---|
| 116 |
|
---|
| 117 | verify();
|
---|
| 118 | }
|
---|
| 119 |
|
---|
| 120 | protected String getStationNumber() {
|
---|
| 121 | return TEST_DIVISION;
|
---|
| 122 | }
|
---|
| 123 | }
|
---|