9f68b49df3be4ee8165239a73902eea741543e8b
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.plugins.event.protocol.jms;
22
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertArrayEquals;
25 import static org.junit.Assert.assertEquals;
26
27
28 import java.util.List;
29 import org.apache.commons.lang3.RandomStringUtils;
30 import org.junit.After;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.onap.policy.apex.context.parameters.ContextParameterConstants;
34 import org.onap.policy.apex.context.parameters.SchemaParameters;
35 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
36 import org.onap.policy.apex.model.basicmodel.service.ModelService;
37 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
38 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
39 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
40 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
41 import org.onap.policy.apex.service.engine.event.ApexEvent;
42 import org.onap.policy.apex.service.engine.event.ApexEventException;
43 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
44 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.TextBlock;
45 import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
46 import org.onap.policy.common.parameters.ParameterService;
47
48 public class Apex2JmsTextEventConverterTest {
49     private Apex2JmsTextEventConverter converter;
50
51     @Before
52     public void setUp() {
53         converter = new Apex2JmsTextEventConverter();
54         ModelService.registerModel(AxContextSchemas.class, new AxContextSchemas());
55         ModelService.registerModel(AxEvents.class, new AxEvents());
56         ParameterService.register(new SchemaParameters());
57     }
58
59     @After
60     public void tearDown() {
61         ModelService.deregisterModel(AxContextSchema.class);
62         ModelService.deregisterModel(AxEvents.class);
63         ParameterService.deregister(ContextParameterConstants.SCHEMA_GROUP_NAME);
64     }
65
66     @Test
67     public void toApexEventNull() {
68         final String eventName = RandomStringUtils.randomAlphabetic(4);
69         assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
70             .isInstanceOf(ApexEventRuntimeException.class);
71     }
72
73     @Test
74     public void toApexEventObject() {
75         final String eventName = RandomStringUtils.randomAlphabetic(4);
76         assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
77             .isInstanceOf(ApexEventRuntimeException.class);
78     }
79
80     @Test
81     public void toApexEventJsonString() throws ApexEventException {
82         final String eventName = RandomStringUtils.randomAlphabetic(4);
83         final String eventVersion = "0.0.1";
84         final String source = RandomStringUtils.randomAlphabetic(5);
85         final String target = RandomStringUtils.randomAlphabetic(6);
86         final String nameSpace = "a.name.space";
87
88         // Prepare Json String to be translated into ApexEvent
89         final TextBlock object =
90             new TextBlock(false, "{\"name\": \"" + eventName + "\", \"version\":\"" + eventVersion + "\"}");
91
92         // Prepare Model service
93         final AxArtifactKey eventKey = new AxArtifactKey(eventName + ":" + eventVersion);
94         final AxEvent axEvent = new AxEvent(eventKey, nameSpace, source, target);
95         ModelService.getModel(AxEvents.class).getEventMap().put(eventKey, axEvent);
96
97         // prepare converter
98         converter.init(new JsonEventProtocolParameters());
99
100         // execute test
101         final List<ApexEvent> apexEvents = converter.toApexEvent(eventName, object);
102
103         final ApexEvent expectedEvent = new ApexEvent(eventName, eventVersion, nameSpace, source, target);
104
105         // Reset executionId
106         expectedEvent.setExecutionId(0);
107         for (ApexEvent event : apexEvents) {
108             event.setExecutionId(0);
109         }
110         Object[] expected = {expectedEvent};
111
112         assertArrayEquals(expected, apexEvents.toArray());
113     }
114
115     @Test
116     public void fromApexNull() {
117         assertThatThrownBy(() -> converter.fromApexEvent(null)).isInstanceOf(ApexEventException.class);
118     }
119
120     @Test
121     public void fromApex() throws ApexEventException {
122         final String name = RandomStringUtils.randomAlphabetic(4);
123         final String version = "0.2.3";
124         final String nameSpace = "a.name.space";
125         final String source = RandomStringUtils.randomAlphabetic(6);
126         final String target = RandomStringUtils.randomAlphabetic(7);
127
128         final String expected = "{\n" +
129             "  \"name\": \"" + name + "\",\n" +
130             "  \"version\": \"" + version + "\",\n" +
131             "  \"nameSpace\": \"" + nameSpace + "\",\n" +
132             "  \"source\": \"" + source + "\",\n" +
133             "  \"target\": \"" + target + "\"\n" +
134             "}";
135
136         // Prepare Model service
137         final AxArtifactKey eventKey = new AxArtifactKey(name + ":" + version);
138         final AxEvent axEvent = new AxEvent(eventKey, nameSpace, source, target);
139         ModelService.getModel(AxEvents.class).getEventMap().put(eventKey, axEvent);
140
141         converter.init(new JsonEventProtocolParameters());
142
143         final ApexEvent apexEvent = new ApexEvent(name, version, nameSpace, source, target);
144         final Object actual = converter.fromApexEvent(apexEvent);
145
146         assertEquals(expected, actual);
147     }
148
149 }