1 package org.openecomp.sdc.be.components.impl;
3 import static org.assertj.core.api.Assertions.assertThat;
4 import static org.mockito.ArgumentMatchers.anyString;
5 import static org.mockito.ArgumentMatchers.eq;
6 import static org.mockito.Mockito.verify;
7 import static org.mockito.Mockito.when;
11 import javax.ws.rs.core.Response;
13 import org.junit.After;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.mockito.ArgumentCaptor;
18 import org.mockito.InjectMocks;
19 import org.mockito.Mock;
20 import org.mockito.junit.MockitoJUnitRunner;
21 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
22 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
23 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
24 import org.openecomp.sdc.be.components.validation.UserValidations;
25 import org.openecomp.sdc.be.dao.api.ActionStatus;
26 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
27 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
28 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
29 import org.openecomp.sdc.be.impl.ComponentsUtils;
30 import org.openecomp.sdc.be.model.ComponentParametersView;
31 import org.openecomp.sdc.be.model.LifecycleStateEnum;
32 import org.openecomp.sdc.be.model.PolicyDefinition;
33 import org.openecomp.sdc.be.model.PropertyDefinition;
34 import org.openecomp.sdc.be.model.Resource;
35 import org.openecomp.sdc.be.model.User;
36 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
37 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
38 import org.openecomp.sdc.exception.ResponseFormat;
40 import fj.data.Either;
42 @RunWith(MockitoJUnitRunner.class)
43 public class PolicyPropertiesBusinessLogicTest {
45 private static final String POLICY_ID = "policy1";
46 private static final String RESOURCE_ID = "resourceId";
47 private static final String USER_ID = "userId";
48 public static final String NO_PROPS_POLICY = "policy2";
50 private PolicyBusinessLogic testInstance;
53 private UserValidations userValidations;
56 private TitanDao titanDao;
59 private ToscaOperationFacade toscaOperationFacade;
62 private ComponentsUtils componentsUtils;
64 private ComponentParametersView componentFilter;
65 private Resource resource;
66 private PropertyDefinition prop1, prop2;
69 public void setUp() throws Exception {
70 componentFilter = new ComponentParametersView(true);
71 componentFilter.setIgnorePolicies(false);
72 componentFilter.setIgnoreUsers(false);
74 prop1 = new PropertyDataDefinitionBuilder().setUniqueId("prop1").build();
75 prop2 = new PropertyDataDefinitionBuilder().setUniqueId("prop1").build();
77 PolicyDefinition policy1 = PolicyDefinitionBuilder.create()
78 .setUniqueId(POLICY_ID)
79 .setProperties(prop1, prop2)
82 PolicyDefinition policy2 = PolicyDefinitionBuilder.create()
83 .setUniqueId(NO_PROPS_POLICY)
85 resource = new ResourceBuilder()
86 .setUniqueId(RESOURCE_ID)
87 .setLifeCycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT)
88 .setLastUpdaterUserId(USER_ID)
95 public void tearDown() {
96 verify(titanDao).commit();
100 public void getPolicyProperties_userIdIsNull() {
101 String userId = null;
102 ResponseFormat forbiddenResponse = new ResponseFormat(Response.Status.FORBIDDEN.getStatusCode());
103 when(userValidations.validateUserExists(eq(userId), anyString(), eq(false))).thenReturn(Either.right(forbiddenResponse));
104 Either<List<PropertyDataDefinition>, ResponseFormat> policyProperties = testInstance.getPolicyProperties(ComponentTypeEnum.RESOURCE, RESOURCE_ID, POLICY_ID, null);
105 assertThat(policyProperties.right().value()).isSameAs(forbiddenResponse);
109 public void getPolicyProperties_componentNotFound() {
110 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(new User()));
111 ArgumentCaptor<ComponentParametersView> filterCaptor = ArgumentCaptor.forClass(ComponentParametersView.class);
112 when(toscaOperationFacade.getToscaElement(eq(RESOURCE_ID), filterCaptor.capture())).thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
113 when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.NOT_FOUND, ComponentTypeEnum.RESOURCE)).thenCallRealMethod();
114 ResponseFormat notFoundResponse = new ResponseFormat(Response.Status.NOT_FOUND.getStatusCode());
115 when(componentsUtils.getResponseFormat(eq(ActionStatus.RESOURCE_NOT_FOUND), anyString())).thenReturn(notFoundResponse);
116 Either<List<PropertyDataDefinition>, ResponseFormat> policyProperties = testInstance.getPolicyProperties(ComponentTypeEnum.RESOURCE, RESOURCE_ID, POLICY_ID, USER_ID);
117 assertThat(policyProperties.right().value()).isSameAs(notFoundResponse);
121 public void getPolicyProperties_policyNotExist() {
122 doPolicyValidations();
123 ResponseFormat notFoundResponse = new ResponseFormat(Response.Status.NOT_FOUND.getStatusCode());
124 when(componentsUtils.getResponseFormat(ActionStatus.POLICY_NOT_FOUND_ON_CONTAINER, "nonExistingPolicy", RESOURCE_ID)).thenReturn(notFoundResponse);
125 Either<List<PropertyDataDefinition>, ResponseFormat> policyProperties = testInstance.getPolicyProperties(ComponentTypeEnum.RESOURCE, RESOURCE_ID, "nonExistingPolicy", USER_ID);
126 assertThat(policyProperties.right().value()).isEqualTo(notFoundResponse);
130 public void getPolicyProperties_noPropertiesOnPolicy() {
131 doPolicyValidations();
132 Either<List<PropertyDataDefinition>, ResponseFormat> policyProperties = testInstance.getPolicyProperties(ComponentTypeEnum.RESOURCE, RESOURCE_ID, NO_PROPS_POLICY, USER_ID);
133 assertThat(policyProperties.left().value()).isNull();
137 public void getPolicyProperties() {
138 doPolicyValidations();
139 Either<List<PropertyDataDefinition>, ResponseFormat> policyProperties = testInstance.getPolicyProperties(ComponentTypeEnum.RESOURCE, RESOURCE_ID, POLICY_ID, USER_ID);
140 assertThat(policyProperties.left().value())
141 .usingElementComparatorOnFields("uniqueId")
142 .containsExactly(prop1, prop2);
145 private void doPolicyValidations() {
146 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(new User()));
147 ArgumentCaptor<ComponentParametersView> filterCaptor = ArgumentCaptor.forClass(ComponentParametersView.class);
148 when(toscaOperationFacade.getToscaElement(eq(RESOURCE_ID), filterCaptor.capture())).thenReturn(Either.left(resource));