import com.google.gson.JsonObject;
import io.vavr.collection.Stream;
import org.jetbrains.annotations.NotNull;
+import org.junit.Rule;
+import org.junit.contrib.java.lang.system.EnvironmentVariables;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsClient;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsClientFactory;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsRequests;
+import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.exceptions.EnvironmentParsingException;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.exceptions.StreamParsingException;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.streams.DataStreams;
import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.streams.StreamFromGsonParser;
private static final String SAMPLE_KEY = "/sample_key.json";
private static final String SAMPLE_CONFIG_KEY = "keystore.path";
private static final String EXPECTED_CONFIG_VALUE_FROM_CBS = "/var/run/security/keystore.p12";
- private static final String EXPECTED_CONFIG_VALUE_FROM_FILE = "/var/run/security/keystore_file.p12";
- private static final String CONFIG_MAP_FILE_PATH = "src/test/resources/sample_local_service_config.json";
+ private static final String CONFIG_MAP_FILE_PATH = "src/test/resources/application_config.yaml";
private static CbsClientConfiguration sampleConfigurationCbsSource;
private static CbsClientConfiguration sampleConfigurationFileSource;
private static DummyHttpServer server;
+
+ @Rule
+ public final EnvironmentVariables envs = new EnvironmentVariables();
+
@BeforeAll
static void setUp() {
server = DummyHttpServer.start(routes ->
@Test
void testCbsClientWithSingleCall() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
@Test
void testCbsClientWithPeriodicCall() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
@Test
void testCbsClientWithUpdatesCall() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
final Duration period = Duration.ofMillis(10);
.verify(Duration.ofSeconds(5));
}
+ @Test
+ void testCbsClientWithConfigRetrievedFromFileMissingEnv() {
+ // given
+ envs.set("AAF_USER", "");
+ final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationFileSource);
+ final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
+
+ // when
+ final Mono<JsonObject> result = sut.flatMap(cbsClient -> cbsClient.get(request));
+
+ // then
+ StepVerifier.create(result)
+ .expectErrorSatisfies(ex -> {
+ assertThat(ex).isInstanceOf(EnvironmentParsingException.class);
+ assertThat(ex).hasMessageContaining("Cannot read AAF_USER from environment.");
+ })
+ .verify(Duration.ofSeconds(5));
+ }
+
@Test
void testCbsClientWithConfigRetrievedFromFile() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationFileSource);
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
// then
StepVerifier.create(result.map(this::sampleConfigValue))
- .expectNext(EXPECTED_CONFIG_VALUE_FROM_FILE)
+ .expectNext(EXPECTED_CONFIG_VALUE_FROM_CBS)
.expectComplete()
.verify(Duration.ofSeconds(5));
}
@Test
void testCbsClientWithStreamsParsing() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final StreamFromGsonParser<KafkaSink> kafkaSinkParser = StreamFromGsonParsers.kafkaSinkParser();
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
@Test
void testCbsClientWithStreamsParsingUsingSwitch() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());
// TODO: Use these parsers below
@Test
void testCbsClientWithStreamsParsingWhenUsingInvalidParser() {
// given
+ envs.set("AAF_USER", "admin");
+ envs.set("AAF_PASSWORD", "admin_secret");
final Mono<CbsClient> sut = CbsClientFactory.createCbsClient(sampleConfigurationCbsSource);
final StreamFromGsonParser<KafkaSource> kafkaSourceParser = StreamFromGsonParsers.kafkaSourceParser();
final CbsRequest request = CbsRequests.getConfiguration(RequestDiagnosticContext.create());