d7bc2e687633417c4f26f2c6c287b8c2c14e1890
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2023 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.clamp.acm.participant.intermediary.handler;
22
23 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
28 import static org.mockito.Mockito.when;
29
30 import java.util.Map;
31 import java.util.UUID;
32 import org.junit.jupiter.api.Test;
33 import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
34 import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData;
35 import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
36 import org.onap.policy.clamp.models.acm.concepts.DeployState;
37 import org.onap.policy.clamp.models.acm.concepts.LockState;
38 import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
39 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeployAck;
40 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantPrimeAck;
41 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatus;
42
43 class AutomationCompositionOutHandlerTest {
44
45     @Test
46     void updateAutomationCompositionElementStateNullTest() {
47         var cacheProvider = mock(CacheProvider.class);
48         var acOutHandler = new AutomationCompositionOutHandler(mock(ParticipantMessagePublisher.class), cacheProvider);
49
50         assertDoesNotThrow(
51                 () -> acOutHandler.updateAutomationCompositionElementState(null, null, null, null, null, null));
52         assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementState(UUID.randomUUID(),
53                 UUID.randomUUID(), null, null, null, null));
54         assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementState(UUID.randomUUID(),
55                 UUID.randomUUID(), DeployState.DEPLOYED, null, null, null));
56
57         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
58         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
59                 .thenReturn(automationComposition);
60         assertDoesNotThrow(() -> acOutHandler.updateAutomationCompositionElementState(
61                 automationComposition.getInstanceId(), UUID.randomUUID(), DeployState.DEPLOYED, null, null, null));
62     }
63
64     @Test
65     void updateAutomationCompositionElementStateDeployedTest() {
66         var publisher = mock(ParticipantMessagePublisher.class);
67         var cacheProvider = mock(CacheProvider.class);
68         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
69
70         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
71         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
72                 .thenReturn(automationComposition);
73         var elementId = automationComposition.getElements().values().iterator().next().getId();
74         acOutHandler.updateAutomationCompositionElementState(automationComposition.getInstanceId(), elementId,
75                 DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Deployed");
76         verify(publisher).sendAutomationCompositionAck(any(AutomationCompositionDeployAck.class));
77     }
78
79     @Test
80     void updateAutomationCompositionElementStateLockTest() {
81         var publisher = mock(ParticipantMessagePublisher.class);
82         var cacheProvider = mock(CacheProvider.class);
83         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
84
85         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
86         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
87                 .thenReturn(automationComposition);
88         var elementId = automationComposition.getElements().values().iterator().next().getId();
89         acOutHandler.updateAutomationCompositionElementState(automationComposition.getInstanceId(), elementId, null,
90                 LockState.LOCKED, StateChangeResult.NO_ERROR, "Locked");
91         verify(publisher).sendAutomationCompositionAck(any(AutomationCompositionDeployAck.class));
92     }
93
94     @Test
95     void updateAutomationCompositionElementStateDeleteTest() {
96         var publisher = mock(ParticipantMessagePublisher.class);
97         var cacheProvider = mock(CacheProvider.class);
98         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
99
100         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
101         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
102                 .thenReturn(automationComposition);
103         for (var element : automationComposition.getElements().values()) {
104             acOutHandler.updateAutomationCompositionElementState(automationComposition.getInstanceId(), element.getId(),
105                     DeployState.DELETED, null, StateChangeResult.NO_ERROR, "Deleted");
106         }
107         verify(publisher, times(automationComposition.getElements().size()))
108                 .sendAutomationCompositionAck(any(AutomationCompositionDeployAck.class));
109         verify(cacheProvider).removeAutomationComposition(automationComposition.getInstanceId());
110     }
111
112     @Test
113     void sendAcElementInfoTestNull() {
114         var publisher = mock(ParticipantMessagePublisher.class);
115         var cacheProvider = mock(CacheProvider.class);
116         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
117
118         assertDoesNotThrow(() -> acOutHandler.sendAcElementInfo(null, null, null, null, null));
119         assertDoesNotThrow(() -> acOutHandler.sendAcElementInfo(UUID.randomUUID(), null, null, null, null));
120         assertDoesNotThrow(
121                 () -> acOutHandler.sendAcElementInfo(UUID.randomUUID(), UUID.randomUUID(), null, null, null));
122
123         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
124         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
125                 .thenReturn(automationComposition);
126         assertDoesNotThrow(() -> acOutHandler.sendAcElementInfo(automationComposition.getInstanceId(),
127                 UUID.randomUUID(), null, null, null));
128     }
129
130     @Test
131     void sendAcElementInfoTest() {
132         var publisher = mock(ParticipantMessagePublisher.class);
133         var cacheProvider = mock(CacheProvider.class);
134         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
135
136         var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
137         when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
138                 .thenReturn(automationComposition);
139         var elementId = automationComposition.getElements().values().iterator().next().getId();
140         acOutHandler.sendAcElementInfo(automationComposition.getInstanceId(), elementId, "", "", Map.of());
141         verify(publisher).sendParticipantStatus(any(ParticipantStatus.class));
142     }
143
144     @Test
145     void updateCompositionStateTest() {
146         var cacheProvider = mock(CacheProvider.class);
147         when(cacheProvider.getParticipantId()).thenReturn(UUID.randomUUID());
148         var publisher = mock(ParticipantMessagePublisher.class);
149         var acOutHandler = new AutomationCompositionOutHandler(publisher, cacheProvider);
150         acOutHandler.updateCompositionState(UUID.randomUUID(), AcTypeState.PRIMED, StateChangeResult.NO_ERROR,
151                 "Primed");
152         verify(publisher).sendParticipantPrimeAck(any(ParticipantPrimeAck.class));
153     }
154 }