fea63d66de6bdd39068e09c09c6af6b0d69e5cb0
[dcaegen2/services/sdk.git] /
1 /*
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
10  *
11  *       http://www.apache.org/licenses/LICENSE-2.0
12  *
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=====================================
19  */
20 package org.onap.dcaegen2.services.sdk.rest.services.cbs.client.impl.streams.gson;
21
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;
31
32 import java.io.IOException;
33
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;
37
38 /**
39  * @author <a href="mailto:kornel.janiak@nokia.com">Kornel Janiak</a>
40  */
41
42 public class MessageRouterSourceParserTest {
43
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";
50
51     private static final Gson gson = new Gson();
52
53     private final StreamFromGsonParser<MessageRouterSource> streamParser = StreamFromGsonParsers.messageRouterSourceParser();
54
55     @Test
56     void fullConfiguration_shouldGenerateDataRouterSourceObject() throws IOException {
57         // given
58         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_full.json");
59         // when
60         MessageRouterSource result = streamParser.unsafeParse(input);
61         // then
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);
68     }
69
70     @Test
71     void minimalConfiguration_shouldGenerateDataRouterSourceObject() throws IOException {
72         // given
73         JsonObject input = GsonUtils.readObjectFromResource("/streams/message_router_minimal.json");
74
75         // when
76         MessageRouterSource result = streamParser.unsafeParse(input);
77         // then
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();
82     }
83
84     @Test
85     void incorrectConfiguration_shouldParseToStreamParserError() throws IOException {
86         // given
87         JsonObject input = GsonUtils.readObjectFromResource("/streams/data_router_sink_full.json");
88         // when
89         Either<StreamParserError, MessageRouterSource> result = streamParser.parse(input);
90         // then
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 + "'");
96                 }
97         );
98     }
99
100     @Test
101     void emptyConfiguration_shouldParseToStreamParserError() {
102         // given
103         JsonObject input = gson.fromJson("{}", JsonObject.class);
104         // when
105         Either<StreamParserError, MessageRouterSource> result = streamParser.parse(input);
106         // then
107         assertThat(result.getLeft()).isInstanceOf(StreamParserError.class);
108     }
109
110
111 }