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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.plugins.event.protocol.jms;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertArrayEquals;
25 import static org.junit.Assert.assertEquals;
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;
48 public class Apex2JmsTextEventConverterTest {
49 private Apex2JmsTextEventConverter converter;
53 converter = new Apex2JmsTextEventConverter();
54 ModelService.registerModel(AxContextSchemas.class, new AxContextSchemas());
55 ModelService.registerModel(AxEvents.class, new AxEvents());
56 ParameterService.register(new SchemaParameters());
60 public void tearDown() {
61 ModelService.deregisterModel(AxContextSchema.class);
62 ModelService.deregisterModel(AxEvents.class);
63 ParameterService.deregister(ContextParameterConstants.SCHEMA_GROUP_NAME);
67 public void toApexEventNull() {
68 final String eventName = RandomStringUtils.randomAlphabetic(4);
69 assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
70 .isInstanceOf(ApexEventRuntimeException.class);
74 public void toApexEventObject() {
75 final String eventName = RandomStringUtils.randomAlphabetic(4);
76 assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
77 .isInstanceOf(ApexEventRuntimeException.class);
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";
88 // Prepare Json String to be translated into ApexEvent
89 final TextBlock object =
90 new TextBlock(false, "{\"name\": \"" + eventName + "\", \"version\":\"" + eventVersion + "\"}");
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);
98 converter.init(new JsonEventProtocolParameters());
101 final List<ApexEvent> apexEvents = converter.toApexEvent(eventName, object);
103 final ApexEvent expectedEvent = new ApexEvent(eventName, eventVersion, nameSpace, source, target);
106 expectedEvent.setExecutionId(0);
107 for (ApexEvent event : apexEvents) {
108 event.setExecutionId(0);
110 Object[] expected = {expectedEvent};
112 assertArrayEquals(expected, apexEvents.toArray());
116 public void fromApexNull() {
117 assertThatThrownBy(() -> converter.fromApexEvent(null)).isInstanceOf(ApexEventException.class);
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);
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" +
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);
141 converter.init(new JsonEventProtocolParameters());
143 final ApexEvent apexEvent = new ApexEvent(name, version, nameSpace, source, target);
144 final Object actual = converter.fromApexEvent(apexEvent);
146 assertEquals(expected, actual);