Continue work with PolicyControl
[nonrtric.git] / policy-agent / src / test / java / org / oransc / policyagent / ApplicationTest.java
index 32d7fe6..d22a9da 100644 (file)
@@ -21,11 +21,27 @@ package org.oransc.policyagent;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.oransc.policyagent.configuration.ApplicationConfig;
+import org.oransc.policyagent.repository.ImmutablePolicyType;
+import org.oransc.policyagent.repository.Policies;
+import org.oransc.policyagent.repository.Policy;
+import org.oransc.policyagent.repository.PolicyType;
+import org.oransc.policyagent.repository.PolicyTypes;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.context.TestConfiguration;
 import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.web.client.RestTemplate;
 
@@ -33,6 +49,40 @@ import org.springframework.web.client.RestTemplate;
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
 public class ApplicationTest {
 
+    @Autowired
+    private Policies policies;
+
+    @Autowired
+    private PolicyTypes policyTypes;
+
+    @Autowired
+    ApplicationConfig appConfig;
+
+    static class MockApplicationConfig extends ApplicationConfig {
+        public void initialize() {
+            URL url = MockApplicationConfig.class.getClassLoader().getResource("test_application_configuration.json");
+            loadConfigurationFromFile(url.getFile());
+        }
+    }
+
+    @TestConfiguration
+    static class Beans {
+        @Bean
+        Policies getPolicies() {
+            return new Policies();
+        }
+
+        @Bean
+        PolicyTypes getPolicyTypes() {
+            return new PolicyTypes();
+        }
+
+        @Bean
+        ApplicationConfig getApplicationConfig() {
+            return new MockApplicationConfig();
+        }
+    }
+
     @LocalServerPort
     private int port;
 
@@ -46,4 +96,55 @@ public class ApplicationTest {
         assertThat(rsp).contains("type3");
     }
 
+    @Test
+    public void getRics() throws Exception {
+        String cmd = "/rics";
+        String rsp = this.restTemplate.getForObject("http://localhost:" + port + cmd, String.class);
+        System.out.println("*** rsp " + rsp);
+        assertThat(rsp).contains("kista_1");
+    }
+
+    @Test
+    public void getRic() throws Exception {
+        String cmd = "/ric?managedElementId=kista_1";
+        String rsp = this.restTemplate.getForObject("http://localhost:" + port + cmd, String.class);
+        assertThat(rsp).isEqualTo("ric1");
+    }
+
+    // managedElmentId -> nodeName
+
+    @Test
+    public void putPolicy() throws Exception {
+        // types.putType("type1", ImmutablePolicyType.builder().name("").jsonSchema("").build());
+
+        String url = "http://localhost:" + port + "/policy?type={type}&instance={instance}&ric={ric}&service={service}";
+
+        Map<String, String> uriVariables = new HashMap<String, String>();
+        uriVariables.put("type", "type1");
+        uriVariables.put("instance", "instance1");
+        uriVariables.put("ric", "ric1");
+        uriVariables.put("service", "service");
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        String json = "{}";
+        HttpEntity<String> entity = new HttpEntity<String>(json);
+
+        addPolicyType(policyTypes, "type1");
+
+        this.restTemplate.put(url, entity, uriVariables);
+        Policy policy = this.policies.get("instance1");
+        assertThat(policy).isNotNull();
+        assertThat(policy.id()).isEqualTo("instance1");
+        assertThat(policy.ownerServiceName()).isEqualTo("service");
+    }
+
+    private void addPolicyType(PolicyTypes policyTypes, String name) {
+        PolicyType type = ImmutablePolicyType.builder() //
+            .jsonSchema("") //
+            .name(name) //
+            .build();
+
+        policyTypes.putType(name, type);
+    }
+
 }