re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / servlets / ComponentServletTest.java
1 package org.openecomp.sdc.be.servlets;
2
3 import fj.data.Either;
4 import org.glassfish.jersey.server.ResourceConfig;
5 import org.json.JSONArray;
6 import org.json.JSONObject;
7 import org.junit.Before;
8 import org.junit.Test;
9 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogicProvider;
10 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
11 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
12 import org.openecomp.sdc.be.model.PolicyDefinition;
13 import org.openecomp.sdc.be.model.User;
14 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
15 import org.openecomp.sdc.common.api.Constants;
16
17 import javax.ws.rs.client.Invocation;
18 import javax.ws.rs.core.MediaType;
19 import javax.ws.rs.core.Response;
20 import java.util.Collections;
21
22 import static java.util.Arrays.asList;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.when;
28
29 public class ComponentServletTest extends JerseySpringBaseTest{
30
31     private static final String USER_ID = "userId";
32     private static final String RESOURCE_ID = "resourceId";
33     private ResourceBusinessLogic resourceBusinessLogic;
34     private PolicyDefinition policy1, policy2;
35
36     @Override
37     @Before
38     public void setUp() throws Exception {
39         super.setUp();
40         policy1 = buildPolicy("p1");
41         policy2 = buildPolicy("p2");
42     }
43
44     @Override
45     protected ResourceConfig configure() {
46         resourceBusinessLogic = mock(ResourceBusinessLogic.class);
47         ComponentServlet componentServlet = new ComponentServlet(new ComponentBusinessLogicProvider(resourceBusinessLogic, null, null));
48         return super.configure().register(componentServlet);
49     }
50
51     @Test
52     public void filterDataByParam_getPolicies_returnOnlyNameTargetsAndIdFields() {
53         UiComponentDataTransfer dataTransfer = buildDataTransferWithPolicies();
54         when(resourceBusinessLogic.getComponentDataFilteredByParams(eq(RESOURCE_ID.toLowerCase()), any(User.class), eq(Collections.singletonList("policies")))).thenReturn(Either.left(dataTransfer));
55         UiComponentDataTransfer uiComponentDataTransfer = buildGetPolicyTypesCall().get(UiComponentDataTransfer.class);
56         assertThat(uiComponentDataTransfer.getPolicies())
57                 .usingElementComparatorOnFields("name", "uniqueId", "targets")
58                 .containsExactlyInAnyOrder(policy1, policy2)
59                 .extracting("properties")//properties is not returned in the response
60                 .containsExactly(null, null);
61     }
62
63     @Test
64     public void filterDataByParam_getPolicies_policyTypeNameFieldShouldReturnAsType() {
65         UiComponentDataTransfer dataTransfer = buildDataTransferWithPolicies();
66         when(resourceBusinessLogic.getComponentDataFilteredByParams(eq(RESOURCE_ID.toLowerCase()), any(User.class), eq(Collections.singletonList("policies")))).thenReturn(Either.left(dataTransfer));
67         Response uiComponentDataTransfer = buildGetPolicyTypesCall().get();
68         verifyPolicyTypeFieldUsingJsonResponse(uiComponentDataTransfer);
69     }
70
71     private void verifyPolicyTypeFieldUsingJsonResponse(Response uiComponentDataTransfer) {
72         JSONObject json = new JSONObject(uiComponentDataTransfer.readEntity(String.class));
73         JSONArray policies = json.getJSONArray("policies");
74         for (int i = 0; i < policies.length(); i++) {
75             JSONObject policy = policies.getJSONObject(i);
76             String policyId = policy.get("uniqueId").toString();
77             assertThat(policy.get("type")).isEqualTo("type" + policyId);
78         }
79     }
80
81     private UiComponentDataTransfer buildDataTransferWithPolicies() {
82         UiComponentDataTransfer res = new UiComponentDataTransfer();
83         res.setPolicies(asList(policy1, policy2));
84         return res;
85     }
86
87     private PolicyDefinition buildPolicy(String id) {
88         return PolicyDefinitionBuilder.create()
89                 .setUniqueId(id)
90                 .setName("name" + id)
91                 .setType("type" + id)
92                 .addGroupTarget("group1")
93                 .addGroupTarget("group2")
94                 .addComponentInstanceTarget("inst1")
95                 .addComponentInstanceTarget("inst2")
96                 .addProperty("prop1")
97                 .build();
98     }
99
100     private Invocation.Builder buildGetPolicyTypesCall() {
101         return target("/v1/catalog/resources/{id}/filteredDataByParams")
102                 .queryParam("include", "policies")
103                 .resolveTemplate("id", RESOURCE_ID)
104                 .request(MediaType.APPLICATION_JSON)
105                 .header(Constants.USER_ID_HEADER, USER_ID);
106     }
107 }