Update some direct dependencies
[clamp.git] / src / test / java / org / onap / clamp / policy / downloader / PolicyEngineControllerTestItCase.java
index 912e0d6..51b9376 100644 (file)
@@ -24,17 +24,19 @@ package org.onap.clamp.policy.downloader;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import com.google.gson.JsonObject;
 import com.google.gson.JsonSyntaxException;
-
 import java.io.IOException;
+import java.time.Instant;
 import java.util.List;
-
 import javax.transaction.Transactional;
-
+import org.json.simple.parser.ParseException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.onap.clamp.clds.Application;
+import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelId;
 import org.onap.clamp.loop.template.PolicyModelsRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -43,7 +45,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = Application.class)
-@ActiveProfiles(profiles = "clamp-default,clamp-policy-controller")
+@ActiveProfiles({"clamp-default","clamp-policy-controller"})
 public class PolicyEngineControllerTestItCase {
 
     @Autowired
@@ -52,14 +54,64 @@ public class PolicyEngineControllerTestItCase {
     @Autowired
     PolicyModelsRepository policyModelsRepository;
 
+    /**
+     * This method tests a fake synchronization with the emulator.
+     *
+     * @throws JsonSyntaxException  In case of issues
+     * @throws IOException          In case of issues
+     * @throws InterruptedException In case of issues
+     */
     @Test
     @Transactional
     public void synchronizeAllPoliciesTest() throws JsonSyntaxException, IOException, InterruptedException {
         policyController.synchronizeAllPolicies();
+        Instant firstExecution = policyController.getLastInstantExecuted();
+        assertThat(firstExecution).isNotNull();
         List<PolicyModel> policyModelsList = policyModelsRepository.findAll();
-        assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(8);
-        assertThat(policyModelsList).contains(new PolicyModel("onap.policies.Monitoring", null, "1.0.0"));
-        assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0"));
+        assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(5);
+        assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.operational.common.Drools",
+                null, "1.0.0"));
+        assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.operational.common.Apex",
+                null, "1.0.0"));
+        assertThat(policyModelsList)
+                .contains(new PolicyModel("onap.policies.controlloop.guard.common.FrequencyLimiter", null, "1.0.0"));
+        assertThat(policyModelsList)
+                .contains(new PolicyModel("onap.policies.controlloop.guard.common.Blacklist", null, "1.0.0"));
+        assertThat(policyModelsList)
+                .contains(new PolicyModel("onap.policies.controlloop.guard.common.MinMax", null, "2.0.0"));
+
+        // Re-do it to check that there is no issue with duplicate key
+        policyController.synchronizeAllPolicies();
+        Instant secondExecution = policyController.getLastInstantExecuted();
+        assertThat(secondExecution).isNotNull();
+
+        assertThat(firstExecution).isBefore(secondExecution);
     }
 
+    @Test
+    @Transactional
+    public void downloadPdpGroupsTest() throws JsonSyntaxException, IOException, InterruptedException, ParseException {
+        PolicyModel policyModel1 = new PolicyModel("onap.policies.monitoring.test", null, "1.0.0");
+        policyModelsRepository.saveAndFlush(policyModel1);
+        PolicyModel policyModel2 = new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0");
+        policyModelsRepository.saveAndFlush(policyModel2);
+
+        policyController.downloadPdpGroups();
+
+        List<PolicyModel> policyModelsList = policyModelsRepository.findAll();
+        assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(2);
+
+        PolicyModel policy1 = policyModelsRepository
+                .getOne(new PolicyModelId("onap.policies.monitoring.test", "1.0.0"));
+        PolicyModel policy2 = policyModelsRepository
+                .getOne(new PolicyModelId("onap.policies.controlloop.Operational", "1.0.0"));
+
+        String expectedRes1 = "{\"supportedPdpGroups\":[{\"monitoring\":[\"xacml\"]}]}";
+        JsonObject expectedJson1 = JsonUtils.GSON.fromJson(expectedRes1, JsonObject.class);
+        assertThat(policy1.getPolicyPdpGroup()).isEqualTo(expectedJson1);
+        String expectedRes2 = "{\"supportedPdpGroups\":[{\"controlloop\":[\"apex\",\"drools\"]}]}";
+        JsonObject expectedJson2 = JsonUtils.GSON.fromJson(expectedRes2, JsonObject.class);
+        assertThat(policy2.getPolicyPdpGroup()).isEqualTo(expectedJson2);
+
+    }
 }