From 47786660d5c4a734600c1de16b238975df19265a Mon Sep 17 00:00:00 2001 From: jamesagnew Date: Tue, 7 Apr 2020 13:58:24 -0400 Subject: [PATCH] Test fixes --- ...ashMapResourceProviderConceptMapDstu3.java | 10 +- .../HashMapResourceProviderConceptMapR4.java | 10 +- .../r4/ResourceProviderInterceptorR4Test.java | 172 +++++------------- .../SubscriptionChannelFactoryTest.java | 1 - .../SubscriptionChannelRegistryTest.java | 6 + .../WebsocketConnectionValidatorTest.java | 6 + 6 files changed, 73 insertions(+), 132 deletions(-) diff --git a/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapDstu3.java b/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapDstu3.java index 9550a66ab17..3e86c205e80 100644 --- a/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapDstu3.java +++ b/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapDstu3.java @@ -24,6 +24,7 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.rest.annotation.*; import ca.uhn.fhir.rest.api.MethodOutcome; +import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; import ca.uhn.fhir.rest.server.provider.HashMapResourceProvider; import com.google.common.base.Charsets; @@ -88,7 +89,8 @@ public class HashMapResourceProviderConceptMapDstu3 extends HashMapResourceProvi @Update public MethodOutcome update( @ResourceParam ConceptMap theConceptMap, - @ConditionalUrlParam String theConditional) { + @ConditionalUrlParam String theConditional, + RequestDetails theRequestDetails) { MethodOutcome methodOutcome = new MethodOutcome(); @@ -112,14 +114,14 @@ public class HashMapResourceProviderConceptMapDstu3 extends HashMapResourceProvi List conceptMaps = searchByUrl(url); if (!conceptMaps.isEmpty()) { - methodOutcome = super.update(conceptMaps.get(0), null); + methodOutcome = super.update(conceptMaps.get(0), null, theRequestDetails); } else { - methodOutcome = create(theConceptMap); + methodOutcome = create(theConceptMap, theRequestDetails); } } } else { - methodOutcome = super.update(theConceptMap, null); + methodOutcome = super.update(theConceptMap, null, theRequestDetails); } return methodOutcome; diff --git a/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapR4.java b/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapR4.java index 471af74a751..2ae3a4b8a0b 100644 --- a/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapR4.java +++ b/hapi-fhir-cli/hapi-fhir-cli-api/src/test/java/ca/uhn/fhir/cli/HashMapResourceProviderConceptMapR4.java @@ -24,6 +24,7 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.rest.annotation.*; import ca.uhn.fhir.rest.api.MethodOutcome; +import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; import ca.uhn.fhir.rest.server.provider.HashMapResourceProvider; import com.google.common.base.Charsets; @@ -88,7 +89,8 @@ public class HashMapResourceProviderConceptMapR4 extends HashMapResourceProvider @Update public MethodOutcome update( @ResourceParam ConceptMap theConceptMap, - @ConditionalUrlParam String theConditional) { + @ConditionalUrlParam String theConditional, + RequestDetails theRequestDetails) { MethodOutcome methodOutcome = new MethodOutcome(); @@ -111,14 +113,14 @@ public class HashMapResourceProviderConceptMapR4 extends HashMapResourceProvider List conceptMaps = searchByUrl(url); if (!conceptMaps.isEmpty()) { - methodOutcome = super.update(conceptMaps.get(0), null); + methodOutcome = super.update(conceptMaps.get(0), null, theRequestDetails); } else { - methodOutcome = create(theConceptMap); + methodOutcome = create(theConceptMap, theRequestDetails); } } } else { - methodOutcome = super.update(theConceptMap, null); + methodOutcome = super.update(theConceptMap, null, theRequestDetails); } return methodOutcome; diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/ResourceProviderInterceptorR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/ResourceProviderInterceptorR4Test.java index e906b795610..fccd7b0d6eb 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/ResourceProviderInterceptorR4Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/ResourceProviderInterceptorR4Test.java @@ -46,6 +46,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.time.Duration; import java.util.ArrayList; import java.util.List; @@ -58,9 +59,6 @@ import static org.mockito.Mockito.*; public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Test { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ResourceProviderInterceptorR4Test.class); - private IServerOperationInterceptor myDaoInterceptor; - - private IServerOperationInterceptor myServerInterceptor; private List myInterceptors = new ArrayList<>(); @Mock private IAnonymousInterceptor myHook; @@ -73,47 +71,11 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes super.after(); myDaoConfig.setSearchPreFetchThresholds(new DaoConfig().getSearchPreFetchThresholds()); - ourRestServer.unregisterInterceptor(myServerInterceptor); - - myInterceptorRegistry.unregisterInterceptors(myInterceptors); - myInterceptors.clear(); - } - - @Override - public void before() throws Exception { - super.before(); - - myServerInterceptor = mock(IServerOperationInterceptor.class); - myDaoInterceptor = mock(IServerOperationInterceptor.class); - - resetServerInterceptor(); - - ourRestServer.registerInterceptor(myServerInterceptor); - - ourRestServer.registerInterceptor(new InterceptorAdapter() { - @Override - public void incomingRequestPreHandled(RestOperationTypeEnum theOperation, ActionRequestDetails theProcessedRequest) { - super.incomingRequestPreHandled(theOperation, theProcessedRequest); - } - }); - - } - - private void resetServerInterceptor() throws ServletException, IOException { - reset(myServerInterceptor); - reset(myDaoInterceptor); - when(myServerInterceptor.handleException(any(RequestDetails.class), any(BaseServerResponseException.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); - when(myServerInterceptor.incomingRequestPostProcessed(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); - when(myServerInterceptor.incomingRequestPreProcessed(any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); - when(myServerInterceptor.outgoingResponse(any(RequestDetails.class))).thenReturn(true); - when(myServerInterceptor.outgoingResponse(any(RequestDetails.class), any(IBaseResource.class))).thenReturn(true); - when(myServerInterceptor.outgoingResponse(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); - when(myServerInterceptor.outgoingResponse(any(RequestDetails.class), any(IBaseResource.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); - when(myServerInterceptor.outgoingResponse(any(RequestDetails.class), any(ResponseDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(true); + ourRestServer.getInterceptorService().unregisterAllInterceptors(); } @Test - public void testPerfInterceptors() throws InterruptedException { + public void testPerfInterceptors() { myDaoConfig.setSearchPreFetchThresholds(Lists.newArrayList(15, 100)); for (int i = 0; i < 30; i++) { Patient p = new Patient(); @@ -123,11 +85,11 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes } IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); - myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_FIRST_RESULT_LOADED, interceptor); - myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_COMPLETE, interceptor); - myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_FAILED, interceptor); - myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_PASS_COMPLETE, interceptor); - myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_SELECT_COMPLETE, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_FIRST_RESULT_LOADED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_COMPLETE, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_FAILED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_PASS_COMPLETE, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.JPA_PERFTRACE_SEARCH_SELECT_COMPLETE, interceptor); myInterceptors.add(interceptor); myInterceptors.add(new PerformanceTracingLoggingInterceptor()); @@ -148,6 +110,7 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes // Load the next (and final) page reset(interceptor); results = ourClient.loadPage().next(results).execute(); + assertNotNull(results); verify(interceptor, times(1)).invoke(eq(Pointcut.JPA_PERFTRACE_SEARCH_FIRST_RESULT_LOADED), myParamsCaptor.capture()); verify(interceptor, times(1)).invoke(eq(Pointcut.JPA_PERFTRACE_SEARCH_SELECT_COMPLETE), myParamsCaptor.capture()); verify(interceptor, times(1)).invoke(eq(Pointcut.JPA_PERFTRACE_SEARCH_COMPLETE), myParamsCaptor.capture()); @@ -176,7 +139,12 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes transaction(bundle); // Do it again but with a conditional create that shouldn't actually create - resetServerInterceptor(); + IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_POST_PROCESSED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.STORAGE_PRESTORAGE_RESOURCE_CREATED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.STORAGE_PRESTORAGE_RESOURCE_UPDATED, interceptor); + entry.getRequest().setIfNoneExist("Patient?name=" + methodName); transaction(bundle); @@ -184,22 +152,12 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes * Server Interceptor */ - ArgumentCaptor ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class); - ArgumentCaptor opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class); - verify(myServerInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture()); - assertEquals(RestOperationTypeEnum.TRANSACTION, opTypeCaptor.getAllValues().get(0)); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(1)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED), myParamsCaptor.capture()); + assertEquals(RestOperationTypeEnum.TRANSACTION, myParamsCaptor.getAllValues().get(0).get(RestOperationTypeEnum.class)); - verify(myServerInterceptor, times(1)).incomingRequestPostProcessed(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class)); - verify(myServerInterceptor, times(0)).resourceCreated(any(RequestDetails.class), any(IBaseResource.class)); - verify(myServerInterceptor, times(0)).resourceUpdated(any(RequestDetails.class), any(IBaseResource.class), any(IBaseResource.class)); - - /* - * DAO Interceptor - */ - - verify(myDaoInterceptor, times(0)).incomingRequestPostProcessed(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class)); - verify(myDaoInterceptor, times(0)).resourceCreated(any(RequestDetails.class), any(IBaseResource.class)); - verify(myDaoInterceptor, times(0)).resourceUpdated(any(RequestDetails.class), any(IBaseResource.class), any(IBaseResource.class)); + verify(interceptor, times(1)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_POST_PROCESSED), myParamsCaptor.capture()); + verify(interceptor, times(0)).invoke(eq(Pointcut.STORAGE_PRESTORAGE_RESOURCE_CREATED), myParamsCaptor.capture()); + verify(interceptor, times(0)).invoke(eq(Pointcut.STORAGE_PRESTORAGE_RESOURCE_UPDATED), myParamsCaptor.capture()); } @@ -211,8 +169,8 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes pt.addName().setFamily(methodName); String resource = myFhirCtx.newXmlParser().encodeResourceToString(pt); - verify(myServerInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class)); - verify(myDaoInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class)); + IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED, interceptor); HttpPost post = new HttpPost(ourServerBase + "/Patient"); post.setEntity(new StringEntity(resource, ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); @@ -224,12 +182,9 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes assertThat(newIdString, startsWith(ourServerBase + "/Patient/")); } - ArgumentCaptor ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class); - ArgumentCaptor opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class); - verify(myServerInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture()); - assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue()); - assertEquals("Patient", ardCaptor.getValue().getResourceType()); - assertNotNull(ardCaptor.getValue().getResource()); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(1)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED), myParamsCaptor.capture()); + assertEquals(RestOperationTypeEnum.CREATE, myParamsCaptor.getValue().get(RestOperationTypeEnum.class)); + assertEquals("Patient", myParamsCaptor.getValue().get(RequestDetails.class).getResource().getIdElement().getResourceType()); } @@ -248,27 +203,18 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes entry.getRequest().setMethod(HTTPVerb.POST); entry.getRequest().setUrl("Patient"); + IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_POST_PROCESSED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.STORAGE_PRECOMMIT_RESOURCE_CREATED, interceptor); + transaction(bundle); - /* - * Server Interceptor - */ - - ArgumentCaptor ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class); - ArgumentCaptor opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class); - verify(myServerInterceptor, times(2)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture()); - assertEquals(RestOperationTypeEnum.TRANSACTION, opTypeCaptor.getAllValues().get(0)); - assertEquals(null, ardCaptor.getAllValues().get(0).getResourceType()); - assertNotNull(ardCaptor.getAllValues().get(0).getResource()); - assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getAllValues().get(1)); - assertEquals("Patient", ardCaptor.getAllValues().get(1).getResourceType()); - assertNotNull(ardCaptor.getAllValues().get(1).getResource()); - - ArgumentCaptor rdCaptor = ArgumentCaptor.forClass(RequestDetails.class); - ArgumentCaptor srCaptor = ArgumentCaptor.forClass(HttpServletRequest.class); - ArgumentCaptor sRespCaptor = ArgumentCaptor.forClass(HttpServletResponse.class); - verify(myServerInterceptor, times(1)).incomingRequestPostProcessed(rdCaptor.capture(), srCaptor.capture(), sRespCaptor.capture()); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(2)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED), myParamsCaptor.capture()); + assertEquals(RestOperationTypeEnum.CREATE, myParamsCaptor.getValue().get(RestOperationTypeEnum.class)); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(1)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_POST_PROCESSED), myParamsCaptor.capture()); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(1)).invoke(eq(Pointcut.STORAGE_PRECOMMIT_RESOURCE_CREATED), myParamsCaptor.capture()); } @Test @@ -306,8 +252,6 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes IIdType orgId = ourClient.create().resource(org).execute().getId().toUnqualified(); assertNotNull(orgId.getVersionIdPartAsLong()); - resetServerInterceptor(); - Patient pt = new Patient(); pt.addName().setFamily(methodName); pt.setManagingOrganization(new Reference(orgId)); @@ -319,8 +263,8 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes ourLog.info(resource); - verify(myServerInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class)); - verify(myDaoInterceptor, times(0)).incomingRequestPreHandled(any(RestOperationTypeEnum.class), any(ActionRequestDetails.class)); + IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED, interceptor); HttpPost post = new HttpPost(ourServerBase + "/Patient"); post.setEntity(new StringEntity(resource, ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); @@ -332,16 +276,10 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes assertThat(newIdString, startsWith(ourServerBase + "/Patient/")); } - ArgumentCaptor ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class); - ArgumentCaptor opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class); - verify(myServerInterceptor, times(1)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture()); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(1)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED), myParamsCaptor.capture()); + assertEquals(RestOperationTypeEnum.CREATE, myParamsCaptor.getValue().get(RestOperationTypeEnum.class)); - assertEquals(RestOperationTypeEnum.CREATE, opTypeCaptor.getValue()); - assertEquals("Patient", ardCaptor.getValue().getResourceType()); - assertNotNull(ardCaptor.getValue().getResource()); - - Patient patient; - patient = (Patient) ardCaptor.getAllValues().get(0).getResource(); + Patient patient = (Patient) myParamsCaptor.getValue().get(RequestDetails.class).getResource(); assertEquals(orgId.getValue(), patient.getManagingOrganization().getReference()); } @@ -366,31 +304,19 @@ public class ResourceProviderInterceptorR4Test extends BaseResourceProviderR4Tes transaction(bundle); // Do it again but with an update that shouldn't actually create - resetServerInterceptor(); + IAnonymousInterceptor interceptor = mock(IAnonymousInterceptor.class); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.STORAGE_PRECOMMIT_RESOURCE_CREATED, interceptor); + ourRestServer.getInterceptorService().registerAnonymousInterceptor(Pointcut.STORAGE_PRECOMMIT_RESOURCE_UPDATED, interceptor); + entry.getRequest().setIfNoneExist("Patient?name=" + methodName); transaction(bundle); - /* - * Server Interceptor - */ - - ArgumentCaptor ardCaptor = ArgumentCaptor.forClass(ActionRequestDetails.class); - ArgumentCaptor opTypeCaptor = ArgumentCaptor.forClass(RestOperationTypeEnum.class); - verify(myServerInterceptor, times(2)).incomingRequestPreHandled(opTypeCaptor.capture(), ardCaptor.capture()); - assertEquals(RestOperationTypeEnum.TRANSACTION, opTypeCaptor.getAllValues().get(0)); - assertEquals(RestOperationTypeEnum.UPDATE, opTypeCaptor.getAllValues().get(1)); - - verify(myServerInterceptor, times(1)).incomingRequestPostProcessed(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class)); - verify(myServerInterceptor, times(0)).resourceCreated(any(RequestDetails.class), any(IBaseResource.class)); - verify(myServerInterceptor, times(0)).resourceUpdated(any(RequestDetails.class), any(IBaseResource.class), any(IBaseResource.class)); - - /* - * DAO Interceptor - */ - - verify(myDaoInterceptor, times(0)).incomingRequestPostProcessed(any(RequestDetails.class), any(HttpServletRequest.class), any(HttpServletResponse.class)); - verify(myDaoInterceptor, times(0)).resourceCreated(any(RequestDetails.class), any(IBaseResource.class)); - verify(myDaoInterceptor, times(0)).resourceUpdated(any(RequestDetails.class), any(IBaseResource.class), any(IBaseResource.class)); + verify(interceptor, timeout(Duration.ofSeconds(10)).times(2)).invoke(eq(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED), myParamsCaptor.capture()); + assertEquals(RestOperationTypeEnum.TRANSACTION, myParamsCaptor.getAllValues().get(0).get(RestOperationTypeEnum.class)); + assertEquals(RestOperationTypeEnum.UPDATE, myParamsCaptor.getAllValues().get(1).get(RestOperationTypeEnum.class)); + verify(interceptor, times(0)).invoke(eq(Pointcut.STORAGE_PRECOMMIT_RESOURCE_CREATED), any()); + verify(interceptor, times(0)).invoke(eq(Pointcut.STORAGE_PRECOMMIT_RESOURCE_UPDATED), any()); } diff --git a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/channel/subscription/SubscriptionChannelFactoryTest.java b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/channel/subscription/SubscriptionChannelFactoryTest.java index d3406d03c0a..51d300fb3bb 100644 --- a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/channel/subscription/SubscriptionChannelFactoryTest.java +++ b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/channel/subscription/SubscriptionChannelFactoryTest.java @@ -52,7 +52,6 @@ public class SubscriptionChannelFactoryTest { Message input = new GenericMessage<>("TEST"); when(myInterceptor.preSend(any(),any())).thenAnswer(t->t.getArgument(0, Message.class)); - when(myInterceptor.postReceive(any(),any())).thenAnswer(t->t.getArgument(0, Message.class)); try { channel.send(input); diff --git a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/channel/SubscriptionChannelRegistryTest.java b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/channel/SubscriptionChannelRegistryTest.java index ea850a80a76..57c4e2ab888 100644 --- a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/channel/SubscriptionChannelRegistryTest.java +++ b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/channel/SubscriptionChannelRegistryTest.java @@ -1,6 +1,7 @@ package ca.uhn.fhir.jpa.subscription.module.channel; import ca.uhn.fhir.jpa.model.entity.ModelConfig; +import ca.uhn.fhir.jpa.subscription.channel.api.IChannelProducer; import ca.uhn.fhir.jpa.subscription.model.CanonicalSubscription; import ca.uhn.fhir.jpa.subscription.match.registry.ActiveSubscription; import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionChannelFactory; @@ -17,6 +18,9 @@ import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @RunWith(SpringRunner.class) public class SubscriptionChannelRegistryTest { @@ -48,6 +52,8 @@ public class SubscriptionChannelRegistryTest { cansubB.setIdElement(new IdDt("B")); ActiveSubscription activeSubscriptionB = new ActiveSubscription(cansubB, TEST_CHANNEL_NAME); + when(mySubscriptionDeliveryChannelFactory.newDeliverySendingChannel(any(), any())).thenReturn(mock(IChannelProducer.class)); + assertNull(mySubscriptionChannelRegistry.getDeliveryReceiverChannel(TEST_CHANNEL_NAME)); mySubscriptionChannelRegistry.add(activeSubscriptionA); assertNotNull(mySubscriptionChannelRegistry.getDeliveryReceiverChannel(TEST_CHANNEL_NAME)); diff --git a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/subscriber/websocket/WebsocketConnectionValidatorTest.java b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/subscriber/websocket/WebsocketConnectionValidatorTest.java index 0d58fb07c2b..cddf8e3b339 100644 --- a/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/subscriber/websocket/WebsocketConnectionValidatorTest.java +++ b/hapi-fhir-jpaserver-subscription/src/test/java/ca/uhn/fhir/jpa/subscription/module/subscriber/websocket/WebsocketConnectionValidatorTest.java @@ -127,5 +127,11 @@ public class WebsocketConnectionValidatorTest { return mock(AsyncTaskExecutor.class); } + @Bean + public WebsocketConnectionValidator websocketConnectionValidator() { + return new WebsocketConnectionValidator(); + } + + } }