+ private RefreshConfigTask createTestObject(boolean configFileExists) {
+ return createTestObject(configFileExists, new Rics(), new Policies(), true);
+ }
+
+ private RefreshConfigTask createTestObject(boolean configFileExists, Rics rics, Policies policies,
+ boolean stubConfigFileExists) {
+ RefreshConfigTask obj = spy(new RefreshConfigTask(appConfig, rics, policies, new Services(), new PolicyTypes(),
+ new A1ClientFactory(appConfig)));
+ if (stubConfigFileExists) {
+ doReturn(configFileExists).when(obj).configFileExists();
+ }
+ return obj;
+ }
+
+ @Test
+ public void startWithStubbedRefresh_thenTerminationLogged() {
+ refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
+ doReturn(Flux.empty()).when(refreshTaskUnderTest).createRefreshTask();
+
+ final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
+
+ refreshTaskUnderTest.start();
+
+ assertThat(logAppender.list.toString().contains("Configuration refresh terminated")).isTrue();
+ }
+
+ @Test
+ public void startWithStubbedRefreshReturnError_thenErrorAndTerminationLogged() {
+ refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
+ doReturn(Flux.error(new Exception("Error"))).when(refreshTaskUnderTest).createRefreshTask();
+
+ final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
+
+ refreshTaskUnderTest.start();
+
+ ILoggingEvent event = logAppender.list.get(0);
+ assertThat(event.getLevel()).isEqualTo(ERROR);
+ assertThat(event.toString().contains("Configuration refresh terminated due to exception")).isTrue();
+ }
+
+ @Test
+ public void stop_thenTaskIsDisposed() throws Exception {
+ refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
+ refreshTaskUnderTest.systemEnvironment = new Properties();
+
+ refreshTaskUnderTest.start();
+ refreshTaskUnderTest.stop();
+
+ assertThat(refreshTaskUnderTest.getRefreshTask().isDisposed()).isTrue();
+ }
+