2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.servlets;
23 import static java.util.Arrays.asList;
24 import static org.assertj.core.api.Assertions.assertThat;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.eq;
27 import static org.mockito.Mockito.mock;
28 import static org.mockito.Mockito.when;
30 import fj.data.Either;
31 import java.util.Collections;
32 import javax.ws.rs.client.Invocation;
33 import javax.ws.rs.core.MediaType;
34 import javax.ws.rs.core.Response;
35 import org.glassfish.jersey.server.ResourceConfig;
36 import org.glassfish.jersey.test.TestProperties;
37 import org.json.JSONArray;
38 import org.json.JSONObject;
39 import org.junit.jupiter.api.AfterEach;
40 import org.junit.jupiter.api.BeforeEach;
41 import org.junit.jupiter.api.Test;
42 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogicProvider;
43 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
44 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
45 import org.openecomp.sdc.be.impl.ComponentsUtils;
46 import org.openecomp.sdc.be.model.PolicyDefinition;
47 import org.openecomp.sdc.be.model.User;
48 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
49 import org.openecomp.sdc.be.user.UserBusinessLogic;
50 import org.openecomp.sdc.common.api.Constants;
52 class ComponentServletTest extends JerseySpringBaseTest {
54 private static final String USER_ID = "userId";
55 private static final String RESOURCE_ID = "resourceId";
56 private ResourceBusinessLogic resourceBusinessLogic;
57 private PolicyDefinition policy1, policy2;
61 public void setUp() throws Exception {
63 policy1 = buildPolicy("p1");
64 policy2 = buildPolicy("p2");
68 void after() throws Exception {
73 protected ResourceConfig configure() {
74 forceSet(TestProperties.CONTAINER_PORT, "0");
75 resourceBusinessLogic = mock(ResourceBusinessLogic.class);
76 UserBusinessLogic userBusinessLogic = mock(UserBusinessLogic.class);
77 ComponentsUtils componentsUtils = mock(ComponentsUtils.class);
78 ComponentServlet componentServlet = new ComponentServlet(userBusinessLogic, componentsUtils,
79 new ComponentBusinessLogicProvider(resourceBusinessLogic, null, null));
80 return super.configure().register(componentServlet);
84 void filterDataByParam_getPolicies_returnOnlyNameTargetsAndIdFields() {
85 UiComponentDataTransfer dataTransfer = buildDataTransferWithPolicies();
86 when(resourceBusinessLogic.getComponentDataFilteredByParams(eq(RESOURCE_ID.toLowerCase()), any(User.class),
87 eq(Collections.singletonList("policies")))).thenReturn(Either.left(dataTransfer));
88 UiComponentDataTransfer uiComponentDataTransfer = buildGetPolicyTypesCall().get(UiComponentDataTransfer.class);
89 assertThat(uiComponentDataTransfer.getPolicies())
90 .usingElementComparatorOnFields("name", "uniqueId", "targets")
91 .containsExactlyInAnyOrder(policy1, policy2)
92 .extracting("properties")//properties is not returned in the response
93 .containsExactly(null, null);
97 void filterDataByParam_getPolicies_policyTypeNameFieldShouldReturnAsType() {
98 UiComponentDataTransfer dataTransfer = buildDataTransferWithPolicies();
99 when(resourceBusinessLogic.getComponentDataFilteredByParams(eq(RESOURCE_ID.toLowerCase()), any(User.class),
100 eq(Collections.singletonList("policies")))).thenReturn(Either.left(dataTransfer));
101 Response uiComponentDataTransfer = buildGetPolicyTypesCall().get();
102 verifyPolicyTypeFieldUsingJsonResponse(uiComponentDataTransfer);
105 private void verifyPolicyTypeFieldUsingJsonResponse(Response uiComponentDataTransfer) {
106 JSONObject json = new JSONObject(uiComponentDataTransfer.readEntity(String.class));
107 JSONArray policies = json.getJSONArray("policies");
108 for (int i = 0; i < policies.length(); i++) {
109 JSONObject policy = policies.getJSONObject(i);
110 String policyId = policy.get("uniqueId").toString();
111 assertThat(policy.get("type")).isEqualTo("type" + policyId);
115 private UiComponentDataTransfer buildDataTransferWithPolicies() {
116 UiComponentDataTransfer res = new UiComponentDataTransfer();
117 res.setPolicies(asList(policy1, policy2));
121 private PolicyDefinition buildPolicy(String id) {
122 return PolicyDefinitionBuilder.create()
124 .setName("name" + id)
125 .setType("type" + id)
126 .addGroupTarget("group1")
127 .addGroupTarget("group2")
128 .addComponentInstanceTarget("inst1")
129 .addComponentInstanceTarget("inst2")
130 .addProperty("prop1")
134 private Invocation.Builder buildGetPolicyTypesCall() {
135 return target("/v1/catalog/resources/{id}/filteredDataByParams")
136 .queryParam("include", "policies")
137 .resolveTemplate("id", RESOURCE_ID)
138 .request(MediaType.APPLICATION_JSON)
139 .header(Constants.USER_ID_HEADER, USER_ID);