Clean up of Pair classes - models
[policy/models.git] / models-interactions / model-impl / sdnc / src / test / java / org / onap / policy / sdnc / SdncManagerTest.java
index ca6df0d..45461de 100644 (file)
@@ -4,8 +4,8 @@
  * ================================================================================
  * Copyright (C) 2018 Huawei. All rights reserved.
  * ================================================================================
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.sdnc;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
+import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyMap;
 import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.endsWith;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.startsWith;
-
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.UUID;
-
-import org.drools.core.WorkingMemory;
-import org.junit.After;
-import org.junit.AfterClass;
+import org.apache.commons.lang3.tuple.Pair;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
-import org.onap.policy.drools.system.PolicyEngine;
 import org.onap.policy.rest.RestManager;
-import org.onap.policy.rest.RestManager.Pair;
+import org.onap.policy.sdnc.SdncManager.SdncCallback;
 import org.onap.policy.sdnc.util.Serialization;
 
-public class SdncManagerTest {
-    private static WorkingMemory mockedWorkingMemory;
+public class SdncManagerTest implements SdncCallback {
+    private static final String SOMEWHERE_OVER_THE_RAINBOW = "http://somewhere.over.the.rainbow";
+
+    private static final String DOROTHY = "Dorothy";
 
     private RestManager   mockedRestManager;
 
     private Pair<Integer, String> httpResponsePutOk;
-    private Pair<Integer, String> httpResponseGetOk;
     private Pair<Integer, String> httpResponseBadResponse;
     private Pair<Integer, String> httpResponseErr;
 
     private SdncRequest  request;
     private SdncResponse response;
 
-    @BeforeClass
-    public static void beforeTestSdncManager() {
-        mockedWorkingMemory = mock(WorkingMemory.class);
-    }
-
     /**
      * Set up the mocked REST manager.
      */
     @Before
     public void setupMockedRest() {
         mockedRestManager   = mock(RestManager.class);
-        
-        httpResponsePutOk       = mockedRestManager.new Pair<>(202, Serialization.gsonPretty.toJson(response));
-        httpResponseGetOk       = mockedRestManager.new Pair<>(200, Serialization.gsonPretty.toJson(response));
-        httpResponseBadResponse = mockedRestManager.new Pair<>(202, Serialization.gsonPretty.toJson(null));
-        httpResponseErr         = mockedRestManager.new Pair<>(200, null);
+
+        httpResponsePutOk       = Pair.of(202, Serialization.gsonPretty.toJson(response));
+        httpResponseBadResponse = Pair.of(202, Serialization.gsonPretty.toJson(null));
+        httpResponseErr         = Pair.of(200, null);
     }
-    
+
     /**
      * Create the request and response before.
      */
@@ -92,7 +78,7 @@ public class SdncManagerTest {
         SdncHealRequestHeaderInfo additionalParams = new SdncHealRequestHeaderInfo();
         additionalParams.setSvcAction("Go Home");
         additionalParams.setSvcRequestId("My Request");
-    
+
         SdncHealRequest healRequest = new SdncHealRequest();
         healRequest.setRequestHeaderInfo(additionalParams);
         healRequest.setServiceInfo(serviceInfo);
@@ -101,7 +87,7 @@ public class SdncManagerTest {
         request = new SdncRequest();
         request.setRequestId(requestId);
         request.setHealRequest(healRequest);
-        request.setNsInstanceId("Dorothy");
+        request.setNsInstanceId(DOROTHY);
 
         SdncResponseOutput responseDescriptor = new SdncResponseOutput();
         responseDescriptor.setSvcRequestId("1234");
@@ -112,173 +98,95 @@ public class SdncManagerTest {
         response.setRequestId(request.getRequestId().toString());
         response.setResponseOutput(responseDescriptor);
     }
-    
-    /**
-     * After Test clean up.
-     */
-    @After
-    public void afterTestSdncManager() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().remove("sdnc.password");
-        PolicyEngine.manager.getEnvironment().remove("sdnc.username");
-        PolicyEngine.manager.getEnvironment().remove("sdnc.url");
-    }
 
     @Test
-    public void testSdncInitiation() throws InterruptedException {
-        try {
-            new SdncManager(null, null);
-            fail("test should throw an exception here");
-        }
-        catch (IllegalArgumentException e) {
-            assertEquals(
-                "the parameters \"wm\" and \"request\" on the SdncManager constructor may not be null", 
-                e.getMessage()
-            );
-        }
-    
-        try {
-            new SdncManager(mockedWorkingMemory, null);
-            fail("test should throw an exception here");
-        }
-        catch (IllegalArgumentException e) {
-            assertEquals(
-                "the parameters \"wm\" and \"request\" on the SdncManager constructor may not be null", 
-                e.getMessage()
-            );
-        }
-        
-        try {
-            new SdncManager(mockedWorkingMemory, request);
-            fail("test should throw an exception here");
-        }
-        catch (IllegalArgumentException e) {
-            assertEquals(
-                "The value of policy engine manager environment property \"sdnc.url\" may not be null", 
-                e.getMessage()
-            );
-        }
-        
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        try {
-            new SdncManager(mockedWorkingMemory, request);
-            fail("test should throw an exception here");
-        }
-        catch (IllegalArgumentException e) {
-            assertEquals(
-                "The value of policy engine manager environment property \"sdnc.username\" may not be null", 
-                e.getMessage()
-            );
-        }
-        
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        try {
-            new SdncManager(mockedWorkingMemory, request);
-            fail("test should throw an exception here");
-        }
-        catch (IllegalArgumentException e) {
-            assertEquals(
-                "The value of policy engine manager environment property \"sdnc.password\" may not be null", 
-                e.getMessage()
-            );
-        }
-        
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "Toto");
-        new SdncManager(mockedWorkingMemory, request);
+    public void testSdncInitiation() {
+
+        assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(null, null, null, null, null))
+            .withMessage("the parameters \"callback\" and \"request\" on the SdncManager constructor may not be null");
+
+        assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(this, null, null, null, null))
+            .withMessage("the parameters \"callback\" and \"request\" on the SdncManager constructor may not be null");
+
+        assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(this, request, null, null, null))
+            .withMessage("the \"url\" parameter on the SdncManager constructor may not be null");
+
+        new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Toto");
     }
 
     @Test
     public void testSdncExecutionException() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "Exception");
-
-        SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+        SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Exception");
         manager.setRestManager(mockedRestManager);
 
+        when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Exception"), anyMap(),
+                        anyString(), anyString())).thenThrow(new RuntimeException("OzException"));
+
         Thread managerThread = new Thread(manager);
         managerThread.start();
 
-        when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Exception"), anyMap(), anyString(), anyString()))
-            .thenThrow(new RuntimeException("OzException"));
-        
+        managerThread.join(1000);
 
-        managerThread.join(100);
+        verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
     }
-    
+
     @Test
     public void testSdncExecutionNull() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "Null");
-
-        SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+        SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Null");
         manager.setRestManager(mockedRestManager);
 
-        Thread managerThread = new Thread(manager);
-        managerThread.start();
-        
-        when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Null"), anyMap(), anyString(), anyString()))
-            .thenReturn(null);
-        
-        managerThread.join(100);
+        when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Null"), anyMap(),
+                        anyString(), anyString())).thenReturn(null);
+
+        manager.run();
+
+        verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
     }
 
 
     @Test
     public void testSdncExecutionError0() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "Error0");
-
-        SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+        SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Error0");
         manager.setRestManager(mockedRestManager);
-        
-        Thread managerThread = new Thread(manager);
-        managerThread.start();
-        
-        when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Error0"), anyMap(), anyString(), anyString()))
-            .thenReturn(httpResponseErr);
-        
-        managerThread.join(100);
+
+        when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Error0"), anyMap(),
+                        anyString(), anyString())).thenReturn(httpResponseErr);
+
+        manager.run();
+
+        verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
     }
 
     @Test
     public void testSdncExecutionBadResponse() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "BadResponse");
-
-        SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+        SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "BadResponse");
         manager.setRestManager(mockedRestManager);
-        
-        Thread managerThread = new Thread(manager);
-        managerThread.start();
-        
-        when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("OK"), anyMap(), anyString(), anyString()))
-            .thenReturn(httpResponseBadResponse);
-        
-        managerThread.join(100);
+
+        when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("OK"), anyMap(),
+                        anyString(), anyString())).thenReturn(httpResponseBadResponse);
+
+        manager.run();
+
+        verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
     }
-    
+
     @Test
     public void testSdncExecutionOk() throws InterruptedException {
-        PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
-        PolicyEngine.manager.getEnvironment().put("sdnc.password", "OK");
-        
-        SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+        SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "OOK");
         manager.setRestManager(mockedRestManager);
-        
-        Thread managerThread = new Thread(manager);
-        managerThread.start();
 
-        when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("OK"), anyMap(), anyString(), anyString()))
-            .thenReturn(httpResponsePutOk);
-        
-        when(mockedRestManager.get(endsWith("1234"), eq("Dorothy"), eq("OK"), anyMap()))
-            .thenReturn(httpResponseGetOk);
-        
+        when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("OK"), anyMap(),
+                        anyString(), anyString())).thenReturn(httpResponsePutOk);
+
+        manager.run();
+
+        verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
+    }
 
-        managerThread.join(100);
+    @Override
+    public void onCallback(SdncResponse response) {
+        //
+        // Nothing really to do
+        //
     }
 }