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.DataRouterSink;
 
  30 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.streams.dmaap.MessageRouterSink;
 
  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 MessageRouterSinkParserTest {
 
  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<MessageRouterSink> streamParser = StreamFromGsonParsers.messageRouterSinkParser();
 
  56     void fullConfiguration_shouldGenerateDataRouterSinkObject() throws IOException {
 
  58         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_full.json");
 
  60         MessageRouterSink result = streamParser.unsafeParse(input);
 
  62         assertThat(result).isInstanceOf(MessageRouterSink.class);
 
  63         assertThat(result.aafCredentials().username()).isEqualTo(SAMPLE_AAF_USERNAME);
 
  64         assertThat(result.aafCredentials().password()).isEqualTo(SAMPLE_AAF_PASSWORD);
 
  65         assertThat(result.location()).isEqualTo(SAMPLE_LOCATION);
 
  66         assertThat(result.clientRole()).isEqualTo(SAMPLE_CLIENT_ROLE);
 
  67         assertThat(result.clientId()).isEqualTo(SAMPLE_CLIENT_ID);
 
  68         assertThat(result.topicUrl()).isEqualTo(SAMPLE_TOPIC_URL);
 
  72     void minimalConfiguration_shouldGenerateDataRouterSinkObject() throws IOException {
 
  74         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_minimal.json");
 
  77         MessageRouterSink result = streamParser.unsafeParse(input);
 
  79         assertThat(result).isInstanceOf(MessageRouterSink.class);
 
  80         assertThat(result.topicUrl()).isEqualTo(SAMPLE_TOPIC_URL);
 
  81         assertThat(result.aafCredentials().username()).isNull();
 
  82         assertThat(result.aafCredentials().password()).isNull();
 
  83         assertThat(result.clientId()).isNull();
 
  87     void incorrectConfiguration_shouldParseToStreamParserError() throws IOException {
 
  89         JsonObject input = GsonUtils.readObjectFromResource("/streams/data_router_sink_full.json");
 
  91         Either<StreamParserError, MessageRouterSink> result = streamParser.parse(input);
 
  93         assertThat(result.getLeft()).isInstanceOf(StreamParserError.class);
 
  94         result.peekLeft(error -> {
 
  95                     assertThat(error.message()).contains("Invalid stream type");
 
  96                     assertThat(error.message()).contains("Expected '" + MESSAGE_ROUTER_TYPE + "', but was '"
 
  97                             + DATA_ROUTER_TYPE + "'");
 
 103     void emptyConfiguration_shouldParseToStreamParserError() {
 
 105         JsonObject input = gson.fromJson("{}", JsonObject.class);
 
 107         Either<StreamParserError, MessageRouterSink> result = streamParser.parse(input);
 
 109         assertThat(result.getLeft()).isInstanceOf(StreamParserError.class);