9a61f87394ac3ec06f66d1e20c0d01caa06c0d9a
[policy/apex-pdp.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021  Nordix Foundation
4  *  Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        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.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatNoException;
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.Assert.assertArrayEquals;
27 import static org.junit.Assert.assertSame;
28
29 import java.util.List;
30 import org.apache.commons.lang3.RandomStringUtils;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxToscaPolicyProcessingStatus;
34 import org.onap.policy.apex.service.engine.event.ApexEvent;
35 import org.onap.policy.apex.service.engine.event.ApexEventException;
36 import org.onap.policy.apex.service.engine.event.ApexEventList;
37 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
38
39 public class Apex2ApexEventConverterTest {
40     private Apex2ApexEventConverter converter;
41
42     @Before
43     public void setUp() throws Exception {
44         converter = new Apex2ApexEventConverter();
45     }
46
47     @Test
48     public void initWithNull() {
49         assertThatThrownBy(() -> converter.init(null))
50             .isInstanceOf(ApexEventRuntimeException.class);
51     }
52
53     @Test
54     public void init() {
55         assertThatNoException()
56             .isThrownBy(() -> converter.init(new ApexEventProtocolParameters()));
57     }
58
59     @Test
60     public void toApexEventWithNull() {
61         final String eventName = RandomStringUtils.randomAlphanumeric(5);
62         assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
63             .isInstanceOf(ApexEventException.class);
64     }
65
66     @Test
67     public void toApexEventWithNonApexEvent() {
68         final String eventName = RandomStringUtils.randomAlphanumeric(5);
69         assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
70             .isInstanceOf(ApexEventException.class);
71     }
72
73     @Test
74     public void toApexEmptyEvent() throws ApexEventException {
75         final String eventName = RandomStringUtils.randomAlphanumeric(4);
76         final String name = RandomStringUtils.randomAlphanumeric(5);
77         final String version = RandomStringUtils.randomAlphanumeric(6);
78         final String nameSpace = "a" + RandomStringUtils.randomAlphanumeric(7);
79         final String source = RandomStringUtils.randomAlphanumeric(8);
80         final String target = RandomStringUtils.randomAlphanumeric(9);
81         final String toscaPolicyState = AxToscaPolicyProcessingStatus.ENTRY.name();
82
83         final ApexEvent event = new ApexEvent(name, version, nameSpace, source, target, toscaPolicyState);
84         final List<ApexEvent> result = converter.toApexEvent(eventName, event);
85         assertThat(result).isEmpty();
86     }
87
88     @Test
89     public void toApexEventWithApexAndOtherFields() throws ApexEventException {
90         final String eventName = RandomStringUtils.randomAlphanumeric(4);
91         final String name1 = RandomStringUtils.randomAlphanumeric(5);
92         final String version1 = RandomStringUtils.randomAlphanumeric(6);
93         final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
94         final String source1 = RandomStringUtils.randomAlphanumeric(8);
95         final String target1 = RandomStringUtils.randomAlphanumeric(9);
96         final String toscaPolicyState1 = AxToscaPolicyProcessingStatus.ENTRY.name();
97
98         final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1, toscaPolicyState1);
99
100         final String key = RandomStringUtils.randomAlphabetic(3);
101         event.put(key, new Object());
102         final List<ApexEvent> result = converter.toApexEvent(eventName, event);
103         Object[] expected = {event};
104         assertArrayEquals(expected, result.toArray());
105     }
106
107     @Test
108     public void toApexEventWithApexAndList() throws ApexEventException {
109         final String eventName = RandomStringUtils.randomAlphanumeric(4);
110         final String name1 = RandomStringUtils.randomAlphanumeric(5);
111         final String version1 = RandomStringUtils.randomAlphanumeric(6);
112         final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
113         final String source1 = RandomStringUtils.randomAlphanumeric(8);
114         final String target1 = RandomStringUtils.randomAlphanumeric(9);
115         final String toscaPolicyState1 = AxToscaPolicyProcessingStatus.ENTRY.name();
116
117         final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1, toscaPolicyState1);
118
119         final ApexEventList eventList = new ApexEventList();
120         eventList.add(event);
121
122         final String name2 = RandomStringUtils.randomAlphanumeric(15);
123         final String version2 = RandomStringUtils.randomAlphanumeric(16);
124         final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
125         final String source2 = RandomStringUtils.randomAlphanumeric(18);
126         final String target2 = RandomStringUtils.randomAlphanumeric(19);
127         final String toscaPolicyState2 = AxToscaPolicyProcessingStatus.EXIT_SUCCESS.name();
128
129         final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2, toscaPolicyState2);
130         final String key = RandomStringUtils.randomAlphabetic(3);
131         parentEvent.put(key, eventList);
132         final List<ApexEvent> result = converter.toApexEvent(eventName, parentEvent);
133         Object[] expected = {event};
134         assertArrayEquals(expected, result.toArray());
135     }
136
137     @Test
138     public void toApexEventWithApexAndListAndOtherFields() throws ApexEventException {
139         final String eventName = RandomStringUtils.randomAlphanumeric(4);
140         final String name1 = RandomStringUtils.randomAlphanumeric(5);
141         final String version1 = RandomStringUtils.randomAlphanumeric(6);
142         final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
143         final String source1 = RandomStringUtils.randomAlphanumeric(8);
144         final String target1 = RandomStringUtils.randomAlphanumeric(9);
145         final String toscaPolicyState1 = AxToscaPolicyProcessingStatus.ENTRY.name();
146
147         final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1, toscaPolicyState1);
148
149         final ApexEventList eventList = new ApexEventList();
150         eventList.add(event);
151
152         final String name2 = RandomStringUtils.randomAlphanumeric(15);
153         final String version2 = RandomStringUtils.randomAlphanumeric(16);
154         final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
155         final String source2 = RandomStringUtils.randomAlphanumeric(18);
156         final String target2 = RandomStringUtils.randomAlphanumeric(19);
157         final String toscaPolicyState2 = AxToscaPolicyProcessingStatus.EXIT_FAILURE.name();
158
159         final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2, toscaPolicyState2);
160         final String key1 = RandomStringUtils.randomAlphabetic(3);
161         final String key2 = RandomStringUtils.randomAlphabetic(2);
162         parentEvent.put(key1, eventList);
163         parentEvent.put(key2, new Object());
164         assertThatThrownBy(() -> converter.toApexEvent(eventName, parentEvent))
165             .isInstanceOf(ApexEventException.class);
166     }
167
168     @Test
169     public void fromApexEventNull() {
170         assertThatThrownBy(() -> converter.fromApexEvent(null))
171             .isInstanceOf(ApexEventException.class);
172     }
173
174     @Test
175     public void fromApexEvent() throws ApexEventException {
176         final String name1 = RandomStringUtils.randomAlphanumeric(5);
177         final String version1 = RandomStringUtils.randomAlphanumeric(6);
178         final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
179         final String source1 = RandomStringUtils.randomAlphanumeric(8);
180         final String target1 = RandomStringUtils.randomAlphanumeric(9);
181         final String toscaPolicyState1 = AxToscaPolicyProcessingStatus.ENTRY.name();
182
183         final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1, toscaPolicyState1);
184
185         final Object actual = converter.fromApexEvent(event);
186         assertSame(event, actual);
187     }
188
189 }