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