import reactor.test.StepVerifier;
@ExtendWith(MockitoExtension.class)
-public class RefreshConfigTaskTest {
+class RefreshConfigTaskTest {
private static final boolean CONFIG_FILE_EXISTS = true;
private static final boolean CONFIG_FILE_DOES_NOT_EXIST = false;
CbsClient cbsClient;
private static final String RIC_1_NAME = "ric1";
- public static final ImmutableRicConfig CORRECT_RIC_CONIFG = ImmutableRicConfig.builder() //
+ private static final ImmutableRicConfig CORRECT_RIC_CONIFG = ImmutableRicConfig.builder() //
.name(RIC_1_NAME) //
.baseUrl("http://localhost:8080/") //
.managedElementIds(new Vector<String>(Arrays.asList("kista_1", "kista_2"))) //
}
@Test
- public void startWithStubbedRefresh_thenTerminationLogged() {
+ void startWithStubbedRefresh_thenTerminationLogged() {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
doReturn(Flux.empty()).when(refreshTaskUnderTest).createRefreshTask();
}
@Test
- public void startWithStubbedRefreshReturnError_thenErrorAndTerminationLogged() {
+ void startWithStubbedRefreshReturnError_thenErrorAndTerminationLogged() {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
doReturn(Flux.error(new Exception("Error"))).when(refreshTaskUnderTest).createRefreshTask();
}
@Test
- public void stop_thenTaskIsDisposed() throws Exception {
+ void stop_thenTaskIsDisposed() throws Exception {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
refreshTaskUnderTest.systemEnvironment = new Properties();
}
@Test
- public void whenTheConfigurationFits_thenConfiguredRicsArePutInRepository() throws Exception {
+ void whenTheConfigurationFits_thenConfiguredRicsArePutInRepository() throws Exception {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_EXISTS);
refreshTaskUnderTest.systemEnvironment = new Properties();
// When
doReturn(getCorrectJson()).when(refreshTaskUnderTest).createInputStream(any());
doReturn("fileName").when(appConfig).getLocalConfigurationFilePath();
- StepVerifier.create(refreshTaskUnderTest.createRefreshTask()) //
+ StepVerifier //
+ .create(refreshTaskUnderTest.createRefreshTask()) //
.expectSubscription() //
.expectNext(Type.ADDED) //
.expectNext(Type.ADDED) //
}
@Test
- public void whenFileExistsButJsonIsIncorrect_thenNoRicsArePutInRepository() throws Exception {
+ void whenFileExistsButJsonIsIncorrect_thenNoRicsArePutInRepositoryAndErrorIsLogged() throws Exception {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_EXISTS);
refreshTaskUnderTest.systemEnvironment = new Properties();
doReturn(getIncorrectJson()).when(refreshTaskUnderTest).createInputStream(any());
doReturn("fileName").when(appConfig).getLocalConfigurationFilePath();
- StepVerifier.create(refreshTaskUnderTest.createRefreshTask()) //
+ final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
+
+ StepVerifier //
+ .create(refreshTaskUnderTest.createRefreshTask()) //
.expectSubscription() //
.expectNoEvent(Duration.ofMillis(100)) //
.thenCancel() //
// Then
verify(refreshTaskUnderTest).loadConfigurationFromFile();
assertThat(appConfig.getRicConfigs().size()).isEqualTo(0);
+
+ assertThat(logAppender.list.toString().contains("Local configuration file not loaded: fileName, ")).isTrue();
}
@Test
- public void whenPeriodicConfigRefreshNoConsul_thenErrorIsLogged() {
+ void whenPeriodicConfigRefreshNoConsul_thenErrorIsLogged() {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST);
refreshTaskUnderTest.systemEnvironment = new Properties();
when(cbsClient.get(any())).thenReturn(Mono.error(new IOException()));
final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, WARN);
- Flux<Type> task = refreshTaskUnderTest.createRefreshTask();
StepVerifier //
- .create(task) //
+ .create(refreshTaskUnderTest.createRefreshTask()) //
.expectSubscription() //
.expectNoEvent(Duration.ofMillis(1000)) //
.thenCancel() //
}
@Test
- public void whenPeriodicConfigRefreshSuccess_thenNewConfigIsCreatedAndRepositoryUpdated() throws Exception {
+ void whenPeriodicConfigRefreshSuccess_thenNewConfigIsCreatedAndRepositoryUpdated() throws Exception {
Rics rics = new Rics();
Policies policies = new Policies();
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, rics, policies, false);
doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any());
doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props);
- JsonObject configAsJson = getJsonRootObject();
+ JsonObject configAsJson = getJsonRootObject(true);
String newBaseUrl = "newBaseUrl";
modifyTheRicConfiguration(configAsJson, newBaseUrl);
when(cbsClient.get(any())).thenReturn(Mono.just(configAsJson));
doNothing().when(refreshTaskUnderTest).runRicSynchronization(any(Ric.class));
- Flux<Type> task = refreshTaskUnderTest.createRefreshTask();
-
StepVerifier //
- .create(task) //
+ .create(refreshTaskUnderTest.createRefreshTask()) //
.expectSubscription() //
.expectNext(Type.CHANGED) //
.expectNext(Type.ADDED) //
assertThat(policies.size()).isEqualTo(0);
}
+ @Test
+ void whenPeriodicConfigRefreshInvalidJson_thenErrorIsLogged() throws Exception {
+ Rics rics = new Rics();
+ Policies policies = new Policies();
+ refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, rics, policies, false);
+ refreshTaskUnderTest.systemEnvironment = new Properties();
+
+ appConfig.setConfiguration(configParserResult());
+
+ EnvProperties props = properties();
+ doReturn(Mono.just(props)).when(refreshTaskUnderTest).getEnvironment(any());
+ doReturn(Mono.just(cbsClient)).when(refreshTaskUnderTest).createCbsClient(props);
+
+ JsonObject configAsJson = getJsonRootObject(false);
+ when(cbsClient.get(any())).thenReturn(Mono.just(configAsJson));
+
+ final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
+
+ StepVerifier //
+ .create(refreshTaskUnderTest.createRefreshTask()) //
+ .expectSubscription() //
+ .expectNoEvent(Duration.ofMillis(1000)) //
+ .thenCancel() //
+ .verify();
+
+ assertThat(logAppender.list.toString()
+ .contains("Could not parse configuration org.oransc.policyagent.exceptions.ServiceException: ")).isTrue();
+ }
+
private RicConfig getRicConfig(String name) {
RicConfig ricConfig = ImmutableRicConfig.builder() //
.name(name) //
.addProperty("baseUrl", newBaseUrl);
}
- private JsonObject getJsonRootObject() throws JsonIOException, JsonSyntaxException, IOException {
- JsonObject rootObject = JsonParser.parseReader(new InputStreamReader(getCorrectJson())).getAsJsonObject();
+ private JsonObject getJsonRootObject(boolean valid) throws JsonIOException, JsonSyntaxException, IOException {
+ JsonObject rootObject = JsonParser
+ .parseReader(new InputStreamReader(valid ? getCorrectJson() : getIncorrectJson())).getAsJsonObject();
return rootObject;
}
}
private static InputStream getIncorrectJson() {
- String string = "{" + //
- " \"config\": {" + //
- " \"ric\": {"; //
+ String string = "{}"; //
return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8)));
}
}