2 * ========================LICENSE_START=================================
5 * Copyright (C) 2019 Nordix Foundation
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ========================LICENSE_END===================================
21 package org.oransc.policyagent;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.Assert.assertFalse;
27 import java.util.Vector;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.oransc.policyagent.configuration.ApplicationConfig;
31 import org.oransc.policyagent.configuration.ImmutableRicConfig;
32 import org.oransc.policyagent.configuration.RicConfig;
33 import org.oransc.policyagent.exceptions.ServiceException;
34 import org.oransc.policyagent.repository.ImmutablePolicy;
35 import org.oransc.policyagent.repository.ImmutablePolicyType;
36 import org.oransc.policyagent.repository.Policies;
37 import org.oransc.policyagent.repository.Policy;
38 import org.oransc.policyagent.repository.PolicyType;
39 import org.oransc.policyagent.repository.PolicyTypes;
40 import org.oransc.policyagent.repository.Ric;
41 import org.oransc.policyagent.repository.Rics;
42 import org.springframework.beans.factory.annotation.Autowired;
43 import org.springframework.boot.test.context.SpringBootTest;
44 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
45 import org.springframework.boot.test.context.TestConfiguration;
46 import org.springframework.boot.web.server.LocalServerPort;
47 import org.springframework.context.annotation.Bean;
48 import org.springframework.http.HttpStatus;
49 import org.springframework.http.ResponseEntity;
50 import org.springframework.test.context.junit4.SpringRunner;
51 import org.springframework.web.client.RestTemplate;
53 @RunWith(SpringRunner.class)
54 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
55 public class ApplicationTest {
60 static class MockApplicationConfig extends ApplicationConfig {
62 public void initialize() {
63 URL url = MockApplicationConfig.class.getClassLoader().getResource("test_application_configuration.json");
64 loadConfigurationFromFile(url.getFile());
71 public Rics getRics() {
76 public Policies getPolicies() {
77 return new Policies();
81 public PolicyTypes getPolicyTypes() {
82 return new PolicyTypes();
86 public ApplicationConfig getApplicationConfig() {
87 return new MockApplicationConfig();
94 private RestTemplate restTemplate = new RestTemplate();
97 public void getRics() throws Exception {
99 String rsp = this.restTemplate.getForObject("http://localhost:" + port + cmd, String.class);
100 assertThat(rsp).contains("kista_1");
104 public void getRic() throws Exception {
105 String cmd = "/ric?managedElementId=kista_1";
106 String rsp = this.restTemplate.getForObject("http://localhost:" + port + cmd, String.class);
107 assertThat(rsp).isEqualTo("ric1");
110 // managedElmentId -> nodeName
113 public void putPolicy() throws Exception {
114 String url = "http://localhost:" + port + "/policy?type=type1&instance=instance1&ric=ric1&service=service1";
116 addPolicyType("type1");
117 addRic(beans.getRics(), "ric1", url);
119 this.restTemplate.put(url, json);
121 Policy policy = beans.getPolicies().get("instance1");
123 assertThat(policy).isNotNull();
124 assertThat(policy.id()).isEqualTo("instance1");
125 assertThat(policy.ownerServiceName()).isEqualTo("service1");
128 private void addRic(Rics rics, String ric, String url) {
129 Vector<String> nodeNames = new Vector<>(1);
130 nodeNames.add("node1");
131 RicConfig ricConfig = ImmutableRicConfig.builder() //
134 .managedElementIds(nodeNames) //
136 Ric ricObj = new Ric(ricConfig);
141 private PolicyType addPolicyType(String name) {
142 PolicyType type = ImmutablePolicyType.builder() //
147 beans.getPolicyTypes().put(type);
151 private Policy addPolicy(String id, String typeName, String service) throws ServiceException {
152 Policy p = ImmutablePolicy.builder().id(id) //
154 .ownerServiceName(service) //
155 .ric(beans.getRics().getRic("ric1")) //
156 .type(addPolicyType(typeName)) //
158 beans.getPolicies().put(p);
163 public void getPolicy() throws Exception {
164 String url = "http://localhost:" + port + "/policy?instance=id";
165 Policy policy = addPolicy("id", "typeName", "service1");
167 String rsp = this.restTemplate.getForObject(url, String.class);
168 assertThat(rsp).isEqualTo(policy.json());
171 beans.getPolicies().remove(policy);
172 ResponseEntity<String> rsp = this.restTemplate.getForEntity(url, String.class);
173 assertThat(rsp.getStatusCodeValue()).isEqualTo(HttpStatus.NO_CONTENT.value());
178 public void getPolicies() throws Exception {
179 String url = "http://localhost:" + port + "/policies";
180 addRic(beans.getRics(), "ric1", url);
181 addPolicy("id1", "type1", "service1");
182 addPolicy("id2", "type2", "service2");
184 String rsp = this.restTemplate.getForObject(url, String.class);
185 System.out.println(rsp);
186 assertThat(rsp).contains("id1");
187 assertThat(rsp).contains("id2");
191 public void getPoliciesFilter() throws Exception {
192 addPolicy("id1", "type1", "service1");
193 addPolicy("id2", "type1", "service2");
194 addPolicy("id3", "type2", "service1");
196 String url = "http://localhost:" + port + "/policies?type=type1";
197 String rsp = this.restTemplate.getForObject(url, String.class);
198 System.out.println(rsp);
199 assertThat(rsp).contains("id1");
200 assertThat(rsp).contains("id2");
201 assertFalse(rsp.contains("id3"));
203 url = "http://localhost:" + port + "/policies?type=type1&service=service2";
204 rsp = this.restTemplate.getForObject(url, String.class);
205 System.out.println(rsp);
206 assertFalse(rsp.contains("id1"));
207 assertThat(rsp).contains("id2");
208 assertFalse(rsp.contains("id3"));