2  * ============LICENSE_START====================================
 
   3  * DCAEGEN2-SERVICES-SDK
 
   4  * =========================================================
 
   5  * Copyright (C) 2019 Nokia. All rights reserved.
 
   6  * =========================================================
 
   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=====================================
 
  20 package org.onap.dcaegen2.services.sdk.rest.services.cbs.client.impl.streams.gson;
 
  22 import com.google.gson.Gson;
 
  23 import com.google.gson.JsonObject;
 
  24 import io.vavr.control.Either;
 
  25 import org.junit.jupiter.api.Test;
 
  26 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.exceptions.StreamParserError;
 
  27 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.streams.StreamFromGsonParser;
 
  28 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.streams.StreamFromGsonParsers;
 
  29 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.streams.dmaap.MessageRouterSink;
 
  30 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.streams.dmaap.MessageRouterSource;
 
  32 import java.io.IOException;
 
  34 import static org.assertj.core.api.Assertions.assertThat;
 
  35 import static org.onap.dcaegen2.services.sdk.rest.services.cbs.client.impl.streams.gson.StreamsConstants.DATA_ROUTER_TYPE;
 
  36 import static org.onap.dcaegen2.services.sdk.rest.services.cbs.client.impl.streams.gson.StreamsConstants.MESSAGE_ROUTER_TYPE;
 
  39  * @author <a href="mailto:kornel.janiak@nokia.com">Kornel Janiak</a>
 
  42 public class MessageRouterSourceParserTest {
 
  44     private static final String SAMPLE_AAF_USERNAME = "some-user";
 
  45     private static final String SAMPLE_AAF_PASSWORD = "some-password";
 
  46     private static final String SAMPLE_LOCATION = "mtc00";
 
  47     private static final String SAMPLE_CLIENT_ROLE = "com.dcae.member";
 
  48     private static final String SAMPLE_CLIENT_ID = "1500462518108";
 
  49     private static final String SAMPLE_TOPIC_URL = "https://we-are-message-router.us:3905/events/some-topic";
 
  51     private static final Gson gson = new Gson();
 
  53     private final StreamFromGsonParser<MessageRouterSource> streamParser = StreamFromGsonParsers.messageRouterSourceParser();
 
  56     void fullConfiguration_shouldGenerateDataRouterSourceObject() throws IOException {
 
  58         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_full.json");
 
  60         MessageRouterSource result = streamParser.unsafeParse(input);
 
  62         assertThat(result.aafCredentials().username()).isEqualTo(SAMPLE_AAF_USERNAME);
 
  63         assertThat(result.aafCredentials().password()).isEqualTo(SAMPLE_AAF_PASSWORD);
 
  64         assertThat(result.location()).isEqualTo(SAMPLE_LOCATION);
 
  65         assertThat(result.clientRole()).isEqualTo(SAMPLE_CLIENT_ROLE);
 
  66         assertThat(result.clientId()).isEqualTo(SAMPLE_CLIENT_ID);
 
  67         assertThat(result.topicUrl()).isEqualTo(SAMPLE_TOPIC_URL);
 
  71     void minimalConfiguration_shouldGenerateDataRouterSourceObject() throws IOException {
 
  73         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_minimal.json");
 
  76         MessageRouterSource result = streamParser.unsafeParse(input);
 
  78         assertThat(result.topicUrl()).isEqualTo(SAMPLE_TOPIC_URL);
 
  79         assertThat(result.aafCredentials().username()).isNull();
 
  80         assertThat(result.aafCredentials().password()).isNull();
 
  81         assertThat(result.clientId()).isNull();
 
  85     void incorrectConfiguration_shouldParseToStreamParserError() throws IOException {
 
  87         JsonObject input = GsonUtils.readObjectFromResource("/streams/data_router_sink_full.json");
 
  89         Either<StreamParserError, MessageRouterSource> result = streamParser.parse(input);
 
  91         assertThat(result.getLeft()).isInstanceOf(StreamParserError.class);
 
  92         result.peekLeft(error -> {
 
  93                     assertThat(error.message()).contains("Invalid stream type");
 
  94                     assertThat(error.message()).contains("Expected '" + MESSAGE_ROUTER_TYPE + "', but was '"
 
  95                             + DATA_ROUTER_TYPE + "'");
 
 101     void emptyConfiguration_shouldParseToStreamParserError() {
 
 103         JsonObject input = gson.fromJson("{}", JsonObject.class);
 
 105         Either<StreamParserError, MessageRouterSource> result = streamParser.parse(input);
 
 107         assertThat(result.getLeft()).isInstanceOf(StreamParserError.class);