import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.oransc.policyagent.clients.A1Client;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.oransc.policyagent.configuration.ApplicationConfig;
import org.oransc.policyagent.repository.ImmutablePolicyType;
import org.oransc.policyagent.repository.Policies;
import org.oransc.policyagent.repository.PolicyType;
import org.oransc.policyagent.repository.PolicyTypes;
import org.oransc.policyagent.repository.Rics;
+import org.oransc.policyagent.utils.MockA1ClientFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
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.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
public class MockPolicyAgent {
+ private static final Logger logger = LoggerFactory.getLogger(MockPolicyAgent.class);
@Autowired
- private Rics rics;
-
- @Autowired
- private Policies policies;
-
- @Autowired
- private PolicyTypes policyTypes;
+ Rics rics;
static class MockApplicationConfig extends ApplicationConfig {
-
@Override
- public void initialize() {
+ public String getLocalConfigurationFilePath() {
URL url = MockApplicationConfig.class.getClassLoader().getResource("test_application_configuration.json");
- loadConfigurationFromFile(url.getFile());
- }
- }
-
- private static class RicPolicyDatabase {
- private Map<String, Map<String, String>> policies = new HashMap<>();
-
- public void putPolicy(String nearRtRicUrl, String policyId, String policyString) {
- getPolicies(nearRtRicUrl).put(policyId, policyString);
- }
-
- public Iterable<String> getPolicyIdentities(String nearRtRicUrl) {
- return getPolicies(nearRtRicUrl).keySet();
- }
-
- public void deletePolicy(String nearRtRicUrl, String policyId) {
- getPolicies(nearRtRicUrl).remove(policyId);
- }
-
- private Map<String, String> getPolicies(String nearRtRicUrl) {
- if (!policies.containsKey(nearRtRicUrl)) {
- policies.put(nearRtRicUrl, new HashMap<>());
- }
- return policies.get(nearRtRicUrl);
+ return url.getFile();
}
}
- static class A1ClientMock implements A1Client {
+ /**
+ * Overrides the BeanFactory.
+ */
+ @TestConfiguration
+ static class TestBeanFactory {
- private final RicPolicyDatabase policies = new RicPolicyDatabase();
+ private final Rics rics = new Rics();
+ private final Policies policies = new Policies();
private final PolicyTypes policyTypes = new PolicyTypes();
- A1ClientMock() {
- loadTypes(this.policyTypes);
- }
-
- @Override
- public Flux<String> getPolicyTypeIdentities(String nearRtRicUrl) {
- Vector<String> result = new Vector<>();
- for (PolicyType p : this.policyTypes.getAll()) {
- result.add(p.name());
- }
- return Flux.fromIterable(result);
+ @Bean
+ public ApplicationConfig getApplicationConfig() {
+ return new MockApplicationConfig();
}
- @Override
- public Flux<String> getPolicyIdentities(String nearRtRicUrl) {
- Iterable<String> result = policies.getPolicyIdentities(nearRtRicUrl);
- return Flux.fromIterable(result);
+ @Bean
+ public MockA1ClientFactory getA1ClientFactory() {
+ PolicyTypes ricTypes = new PolicyTypes();
+ loadTypes(ricTypes);
+ return new MockA1ClientFactory(ricTypes);
}
- @Override
- public Mono<String> getPolicyType(String nearRtRicUrl, String policyTypeId) {
- try {
- return Mono.just(this.policyTypes.getType(policyTypeId).schema());
- } catch (Exception e) {
- return Mono.error(e);
- }
+ @Bean
+ public Policies getPolicies() {
+ return this.policies;
}
- @Override
- public Mono<String> putPolicy(String nearRtRicUrl, String policyId, String policyString) {
- policies.putPolicy(nearRtRicUrl, policyId, policyString);
- return Mono.just("OK");
+ @Bean
+ public PolicyTypes getPolicyTypes() {
+ return this.policyTypes;
}
- @Override
- public Mono<String> deletePolicy(String nearRtRicUrl, String policyId) {
- policies.deletePolicy(nearRtRicUrl, policyId);
- return Mono.just("OK");
+ @Bean
+ public Rics getRics() {
+ return this.rics;
}
private static File[] getResourceFolderFiles(String folder) {
PolicyType type = ImmutablePolicyType.builder().name(typeName).schema(schema).build();
policyTypes.put(type);
} catch (Exception e) {
- System.out.println("Could not load json schema " + e);
+ logger.error("Could not load json schema ", e);
}
}
- }
- }
-
- /**
- * overrides the BeanFactory
- */
- @TestConfiguration
- static class TestBeanFactory {
-
- private final Rics rics = new Rics();
- private final Policies policies = new Policies();
- private final PolicyTypes policyTypes = new PolicyTypes();
-
- @Bean
- public ApplicationConfig getApplicationConfig() {
- return new MockApplicationConfig();
- }
-
- @Bean
- A1Client getA1Client() {
- return new A1ClientMock();
- }
-
- @Bean
- public Policies getPolicies() {
- return this.policies;
- }
-
- @Bean
- public PolicyTypes getPolicyTypes() {
- return this.policyTypes;
- }
-
- @Bean
- public Rics getRics() {
- return this.rics;
+ policyTypes.put(ImmutablePolicyType.builder().name("").schema("{}").build());
}
}
@LocalServerPort
private int port;
- private void keepServerAlive() {
- System.out.println("Keeping server alive!");
- try {
- synchronized (this) {
- this.wait();
- }
- } catch (Exception ex) {
- System.out.println("Unexpected: " + ex.toString());
+ private void keepServerAlive() throws InterruptedException {
+ logger.info("Keeping server alive!");
+ synchronized (this) {
+ this.wait();
}
}
private static String title(String jsonSchema) {
- JsonObject parsedSchema = (JsonObject) new JsonParser().parse(jsonSchema);
+ JsonObject parsedSchema = (JsonObject) JsonParser.parseString(jsonSchema);
String title = parsedSchema.get("title").getAsString();
return title;
}
@Test
+ @SuppressWarnings("squid:S2699") // Tests should include assertions. This test is only for keeping the server
+ // alive,
+ // so it will only be confusing to add an assertion.
public void runMock() throws Exception {
keepServerAlive();
}