2 * ============LICENSE_START=======================================================
3 * Copyright (C) 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
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.clamp.acm.participant.sim.main.handler;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.verify;
27 import static org.mockito.Mockito.when;
30 import java.util.UUID;
31 import org.junit.jupiter.api.Test;
32 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
33 import org.onap.policy.clamp.acm.participant.sim.comm.CommonTestData;
34 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
35 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
36 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
38 class SimulatorServiceTest {
41 void testGetAutomationCompositions() {
42 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
43 var simulatorService = new SimulatorService(intermediaryApi);
45 var map = CommonTestData.getTestAutomationCompositionMap();
46 when(intermediaryApi.getAutomationCompositions()).thenReturn(map);
47 var result = simulatorService.getAutomationCompositions();
48 assertEquals(map.values().iterator().next(), result.getAutomationCompositionList().get(0));
52 void testGetAutomationComposition() {
53 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
54 var simulatorService = new SimulatorService(intermediaryApi);
56 var instance = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
57 when(intermediaryApi.getAutomationComposition(instance.getInstanceId())).thenReturn(instance);
58 var result = simulatorService.getAutomationComposition(instance.getInstanceId());
59 assertEquals(instance, result);
63 void testSetOutProperties() {
64 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
65 var simulatorService = new SimulatorService(intermediaryApi);
67 var instanceId = UUID.randomUUID();
68 var elementId = UUID.randomUUID();
69 var useState = "useState";
70 var operationalState = "operationalState";
71 Map<String, Object> map = Map.of("id", "1234");
73 simulatorService.setOutProperties(instanceId, elementId, useState, operationalState, map);
74 verify(intermediaryApi).sendAcElementInfo(instanceId, elementId, useState, operationalState, map);
78 void testGetDataList() {
79 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
80 var simulatorService = new SimulatorService(intermediaryApi);
82 var map = CommonTestData.getTestAutomationCompositionMap();
83 when(intermediaryApi.getAutomationCompositions()).thenReturn(map);
84 var result = simulatorService.getDataList();
85 var data = result.getList().get(0);
86 var automationcomposition = map.values().iterator().next();
87 assertEquals(automationcomposition.getInstanceId(), data.getAutomationCompositionId());
88 var element = automationcomposition.getElements().values().iterator().next();
89 assertEquals(element.getId(), data.getAutomationCompositionElementId());
93 void testGetCompositionDataList() {
94 var acElementDefinition = new AutomationCompositionElementDefinition();
95 var toscaConceptIdentifier = new ToscaConceptIdentifier("code", "1.0.0");
96 acElementDefinition.setAcElementDefinitionId(toscaConceptIdentifier);
97 acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(new ToscaNodeTemplate());
98 Map<String, Object> outProperties = Map.of("code", "value");
99 Map<String, Object> inProperties = Map.of("key", "value");
100 acElementDefinition.getAutomationCompositionElementToscaNodeTemplate().setProperties(inProperties);
101 acElementDefinition.setOutProperties(outProperties);
102 var elementsDefinitions = Map.of(toscaConceptIdentifier, acElementDefinition);
103 var compositionId = UUID.randomUUID();
104 var map = Map.of(compositionId, elementsDefinitions);
105 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
106 when(intermediaryApi.getAcElementsDefinitions()).thenReturn(map);
107 var simulatorService = new SimulatorService(intermediaryApi);
109 var result = simulatorService.getCompositionDataList();
110 assertThat(result.getList()).hasSize(1);
111 assertEquals(result.getList().get(0).getCompositionId(), compositionId);
112 assertEquals(result.getList().get(0).getCompositionDefinitionElementId(), toscaConceptIdentifier);
113 assertEquals(result.getList().get(0).getOutProperties(), outProperties);
114 assertEquals(result.getList().get(0).getIntProperties(), inProperties);
118 void testSetCompositionData() {
119 var intermediaryApi = mock(ParticipantIntermediaryApi.class);
120 var simulatorService = new SimulatorService(intermediaryApi);
122 var compositionId = UUID.randomUUID();
123 simulatorService.setCompositionOutProperties(compositionId, null, Map.of());
124 verify(intermediaryApi).sendAcDefinitionInfo(compositionId, null, Map.of());