From 4f02dd4697105b7db7498a5a07b517e5d9eb1f46 Mon Sep 17 00:00:00 2001 From: NThakur4 <nthakur4@slb.com> Date: Tue, 14 Feb 2023 11:15:39 -0600 Subject: [PATCH] tests --- .../SubscriberNotificationRequestLogger.java | 10 ++- ...bscriberNotificationRequestLoggerTest.java | 82 +++++++++++++++++++ 2 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 provider/notification-azure/src/test/java/org/opengroup/osdu/notification/util/SubscriberNotificationRequestLoggerTest.java diff --git a/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/util/SubscriberNotificationRequestLogger.java b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/util/SubscriberNotificationRequestLogger.java index 34fee92db..9cad07742 100644 --- a/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/util/SubscriberNotificationRequestLogger.java +++ b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/util/SubscriberNotificationRequestLogger.java @@ -3,6 +3,7 @@ package org.opengroup.osdu.notification.provider.azure.util; import org.opengroup.osdu.azure.logging.DependencyLogger; import org.opengroup.osdu.azure.logging.DependencyLoggingOptions; import org.opengroup.osdu.core.common.http.HttpResponse; +import org.opengroup.osdu.core.common.model.notification.Subscription; import org.opengroup.osdu.notification.provider.interfaces.ISubscriberNotificationRequestLogger; import org.springframework.stereotype.Component; @@ -17,16 +18,19 @@ public class SubscriberNotificationRequestLogger implements ISubscriberNotificat this.dependencyLogger = dependencyLogger; } - public void log(String notificationId, String endpoint, HttpResponse response) { + public void log(String notificationId, Subscription subscription, HttpResponse response) { final DependencyLoggingOptions loggingOptions = DependencyLoggingOptions.builder() .type(DEPENDENCY_TYPE) .name(DEPENDENCY_NAME) - .data(notificationId) - .target(endpoint) + .target(subscription.getPushEndpoint()) .timeTakenInMs(response.getLatency()) .resultCode(response.getResponseCode()) .success(response.isSuccessCode()) .build(); + final String data = response.isSuccessCode() + ? String.format("notificationId=%s subscriptionId=%s", notificationId, subscription.getId()) + : String.format("notificationId=%s subscriptionId=%s response=%s", notificationId, subscription.getId(), response.getBody()); + loggingOptions.setData(data); this.dependencyLogger.logDependency(loggingOptions); } } diff --git a/provider/notification-azure/src/test/java/org/opengroup/osdu/notification/util/SubscriberNotificationRequestLoggerTest.java b/provider/notification-azure/src/test/java/org/opengroup/osdu/notification/util/SubscriberNotificationRequestLoggerTest.java new file mode 100644 index 000000000..4f5d5d5d9 --- /dev/null +++ b/provider/notification-azure/src/test/java/org/opengroup/osdu/notification/util/SubscriberNotificationRequestLoggerTest.java @@ -0,0 +1,82 @@ +package org.opengroup.osdu.notification.util; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.opengroup.osdu.azure.logging.DependencyLogger; +import org.opengroup.osdu.azure.logging.DependencyLoggingOptions; +import org.opengroup.osdu.core.common.http.HttpResponse; +import org.opengroup.osdu.core.common.model.notification.HmacSecret; +import org.opengroup.osdu.core.common.model.notification.Subscription; +import org.opengroup.osdu.notification.provider.azure.util.SubscriberNotificationRequestLogger; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class SubscriberNotificationRequestLoggerTest { + + private final HttpResponse response = new HttpResponse(); + private static final String NOTIFICATION_ID = "test-notification-id"; + private static Subscription subscription; + + @Mock + private DependencyLogger dependencyLogger; + + @InjectMocks + private SubscriberNotificationRequestLogger sut; + + @BeforeClass + public static void setup() { + subscription = new Subscription(); + subscription.setName("hamc_test_subscription"); + subscription.setPushEndpoint("http://challenge"); + subscription.setDescription("Description"); + subscription.setTopic("records-changed"); + subscription.setNotificationId(NOTIFICATION_ID); + subscription.setId("id_1"); + subscription.setCreatedBy("test@test.com"); + HmacSecret secret = new HmacSecret(); + secret.setValue("testsecret"); + subscription.setSecret(secret); + } + + @Test + public void log_notifySubscriber_success() { + response.setResponseCode(200); + + this.sut.log(NOTIFICATION_ID, subscription, response); + + ArgumentCaptor<DependencyLoggingOptions> loggingOptionsArgumentCaptor = ArgumentCaptor.forClass(DependencyLoggingOptions.class); + verify(dependencyLogger, times(1)).logDependency(loggingOptionsArgumentCaptor.capture()); + DependencyLoggingOptions actualLoggingOptions = loggingOptionsArgumentCaptor.getValue(); + verifyDependencyLogging(actualLoggingOptions, "notificationId=test-notification-id subscriptionId=id_1", "http://challenge", 200, true); + } + + @Test + public void log_notifySubscriber_failure() { + response.setResponseCode(403); + response.setBody("unauthorized"); + + this.sut.log(NOTIFICATION_ID, subscription, response); + + ArgumentCaptor<DependencyLoggingOptions> loggingOptionsArgumentCaptor = ArgumentCaptor.forClass(DependencyLoggingOptions.class); + verify(dependencyLogger, times(1)).logDependency(loggingOptionsArgumentCaptor.capture()); + DependencyLoggingOptions actualLoggingOptions = loggingOptionsArgumentCaptor.getValue(); + verifyDependencyLogging(actualLoggingOptions, "notificationId=test-notification-id subscriptionId=id_1 response=unauthorized", "http://challenge", 403, false); + } + + private void verifyDependencyLogging(DependencyLoggingOptions capturedLoggingOptions, String data, String target, int resultCode, boolean success) { + assertEquals("Notification", capturedLoggingOptions.getType()); + assertEquals("NotifySubscriber", capturedLoggingOptions.getName()); + assertEquals(data, capturedLoggingOptions.getData()); + assertEquals(target, capturedLoggingOptions.getTarget()); + assertEquals(resultCode, capturedLoggingOptions.getResultCode()); + assertEquals(success, capturedLoggingOptions.isSuccess()); + } +} -- GitLab