a2ff9d02f023be0154f07a4045e0fe598a2987d2
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021, 2024 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.jupiter.api.Assertions.assertArrayEquals;
25 import static org.junit.jupiter.api.Assertions.assertEquals;
26
27 import java.util.List;
28 import org.apache.commons.lang3.RandomStringUtils;
29 import org.junit.jupiter.api.AfterEach;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32 import org.onap.policy.apex.context.parameters.ContextParameterConstants;
33 import org.onap.policy.apex.context.parameters.SchemaParameters;
34 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
35 import org.onap.policy.apex.model.basicmodel.service.ModelService;
36 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
37 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
38 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
39 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
40 import org.onap.policy.apex.service.engine.event.ApexEvent;
41 import org.onap.policy.apex.service.engine.event.ApexEventException;
42 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
43 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.TextBlock;
44 import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
45 import org.onap.policy.common.parameters.ParameterService;
46
47 class Apex2JmsTextEventConverterTest {
48     private Apex2JmsTextEventConverter converter;
49
50     @BeforeEach
51     void setUp() {
52         converter = new Apex2JmsTextEventConverter();
53         ModelService.registerModel(AxContextSchemas.class, new AxContextSchemas());
54         ModelService.registerModel(AxEvents.class, new AxEvents());
55         ParameterService.register(new SchemaParameters());
56     }
57
58     @AfterEach
59     void tearDown() {
60         ModelService.deregisterModel(AxContextSchema.class);
61         ModelService.deregisterModel(AxEvents.class);
62         ParameterService.deregister(ContextParameterConstants.SCHEMA_GROUP_NAME);
63     }
64
65     @Test
66     void toApexEventNull() {
67         final String eventName = RandomStringUtils.randomAlphabetic(4);
68         assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
69             .isInstanceOf(ApexEventRuntimeException.class);
70     }
71
72     @Test
73     void toApexEventObject() {
74         final String eventName = RandomStringUtils.randomAlphabetic(4);
75         var object = new Object();
76         assertThatThrownBy(() -> converter.toApexEvent(eventName, object)).isInstanceOf(
77             ApexEventRuntimeException.class);
78     }
79
80     @Test
81     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     void fromApexNull() {
117         assertThatThrownBy(() -> converter.fromApexEvent(null)).isInstanceOf(ApexEventException.class);
118     }
119
120     @Test
121     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 }