2  * ============LICENSE_START=======================================================
 
   3  *  Copyright (C) 2022 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.a1pms.handler;
 
  23 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 
  24 import static org.mockito.ArgumentMatchers.any;
 
  25 import static org.mockito.Mockito.doNothing;
 
  26 import static org.mockito.Mockito.mock;
 
  27 import static org.mockito.Mockito.when;
 
  30 import org.junit.jupiter.api.BeforeAll;
 
  31 import org.junit.jupiter.api.BeforeEach;
 
  32 import org.junit.jupiter.api.Test;
 
  33 import org.junit.jupiter.api.extension.ExtendWith;
 
  34 import org.mockito.InjectMocks;
 
  35 import org.mockito.Spy;
 
  36 import org.onap.policy.clamp.acm.participant.a1pms.exception.A1PolicyServiceException;
 
  37 import org.onap.policy.clamp.acm.participant.a1pms.utils.CommonTestData;
 
  38 import org.onap.policy.clamp.acm.participant.a1pms.utils.ToscaUtils;
 
  39 import org.onap.policy.clamp.acm.participant.a1pms.webclient.AcA1PmsClient;
 
  40 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
 
  41 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement;
 
  42 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionOrderedState;
 
  43 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionState;
 
  44 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
 
  45 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
  46 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
  48 @ExtendWith(SpringExtension.class)
 
  49 class AcElementHandlerTest {
 
  51     private final AcA1PmsClient acA1PmsClient = mock(AcA1PmsClient.class);
 
  55     private AutomationCompositionElementHandler automationCompositionElementHandler =
 
  56         new AutomationCompositionElementHandler(acA1PmsClient);
 
  59     private final CommonTestData commonTestData = new CommonTestData();
 
  61     private static ToscaServiceTemplate serviceTemplate;
 
  62     private static final String A1_AUTOMATION_COMPOSITION_ELEMENT =
 
  63         "org.onap.domain.database.A1PMSAutomationCompositionElement";
 
  67         serviceTemplate = ToscaUtils.readAutomationCompositionFromTosca();
 
  71     void startMocks() throws A1PolicyServiceException {
 
  72         automationCompositionElementHandler.setIntermediaryApi(mock(ParticipantIntermediaryApi.class));
 
  73         when(acA1PmsClient.isPmsHealthy()).thenReturn(Boolean.TRUE);
 
  74         doNothing().when(acA1PmsClient).createService(any());
 
  78     void test_automationCompositionElementStateChange() throws A1PolicyServiceException {
 
  79         var automationCompositionId = commonTestData.getAutomationCompositionId();
 
  80         var element = commonTestData.getAutomationCompositionElement();
 
  81         var automationCompositionElementId = element.getId();
 
  83         Map<String, ToscaNodeTemplate> nodeTemplatesMap = serviceTemplate.getToscaTopologyTemplate().getNodeTemplates();
 
  84         automationCompositionElementHandler.automationCompositionElementUpdate(
 
  85                 commonTestData.getAutomationCompositionId(), element,
 
  86                 nodeTemplatesMap.get(A1_AUTOMATION_COMPOSITION_ELEMENT));
 
  88         assertDoesNotThrow(() -> automationCompositionElementHandler.automationCompositionElementStateChange(
 
  89             automationCompositionId, automationCompositionElementId, AutomationCompositionState.PASSIVE,
 
  90             AutomationCompositionOrderedState.PASSIVE));
 
  92         assertDoesNotThrow(() -> automationCompositionElementHandler.automationCompositionElementStateChange(
 
  93             automationCompositionId, automationCompositionElementId, AutomationCompositionState.PASSIVE,
 
  94             AutomationCompositionOrderedState.UNINITIALISED));
 
  96         assertDoesNotThrow(() -> automationCompositionElementHandler.automationCompositionElementStateChange(
 
  97             automationCompositionId, automationCompositionElementId, AutomationCompositionState.PASSIVE,
 
  98             AutomationCompositionOrderedState.RUNNING));
 
 102     void test_AutomationCompositionElementUpdate() {
 
 103         AutomationCompositionElement element = commonTestData.getAutomationCompositionElement();
 
 105         Map<String, ToscaNodeTemplate> nodeTemplatesMap = serviceTemplate.getToscaTopologyTemplate().getNodeTemplates();
 
 106         assertDoesNotThrow(() -> automationCompositionElementHandler.automationCompositionElementUpdate(
 
 107             commonTestData.getAutomationCompositionId(), element,
 
 108             nodeTemplatesMap.get(A1_AUTOMATION_COMPOSITION_ELEMENT)));