re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / servlets / PolicyTypesEndpointTest.java
1 package org.openecomp.sdc.be.servlets;
2
3 import org.apache.http.HttpStatus;
4 import org.glassfish.jersey.server.ResourceConfig;
5 import org.junit.Test;
6 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
7 import org.openecomp.sdc.be.components.utils.PolicyTypeBuilder;
8 import org.openecomp.sdc.be.dao.api.ActionStatus;
9 import org.openecomp.sdc.be.impl.ComponentsUtils;
10 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
11 import org.openecomp.sdc.common.api.Constants;
12 import org.openecomp.sdc.exception.ResponseFormat;
13
14 import javax.ws.rs.client.Invocation;
15 import javax.ws.rs.core.GenericType;
16 import javax.ws.rs.core.MediaType;
17 import java.util.List;
18
19 import static java.util.Arrays.asList;
20 import static org.assertj.core.api.Assertions.assertThat;
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.when;
23
24 public class PolicyTypesEndpointTest extends JerseySpringBaseTest {
25
26     public static final String USER_ID = "userId";
27     public static final String COMPONENT_TYPE = "VF";
28     private PolicyTypeBusinessLogic policyTypeBusinessLogic;
29     private ComponentsUtils componentUtils;
30
31     @Override
32     protected ResourceConfig configure() {
33         policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
34         componentUtils = mock(ComponentsUtils.class);
35         return super.configure()
36                 .register(new PolicyTypesEndpoint(policyTypeBusinessLogic));
37     }
38
39     @Test
40     public void getPolicyTypes() {
41         List<PolicyTypeDefinition> policyTypes = buildPolicyTypesList();
42         when(policyTypeBusinessLogic.getAllPolicyTypes(USER_ID, COMPONENT_TYPE)).thenReturn(policyTypes);
43         when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(new ResponseFormat(HttpStatus.SC_OK));
44         List<PolicyTypeDefinition> fetchedPolicyTypes = buildGetPolicyTypesCall().get(new GenericType<List<PolicyTypeDefinition>>(){});
45         verifyPolicyTypesList(policyTypes, fetchedPolicyTypes);
46     }
47
48     @Test
49     public void getPolicyTypes_whenNoInternalComponent_passNullAsComponentType() {
50         List<PolicyTypeDefinition> policyTypes = buildPolicyTypesList();
51         when(policyTypeBusinessLogic.getAllPolicyTypes(USER_ID, null)).thenReturn(policyTypes);
52         when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(new ResponseFormat(HttpStatus.SC_OK));
53         List<PolicyTypeDefinition> fetchedPolicyTypes = buildGetPolicyTypesCallNoInternalComponent().get(new GenericType<List<PolicyTypeDefinition>>(){});
54         verifyPolicyTypesList(policyTypes, fetchedPolicyTypes);
55     }
56
57
58     private void verifyPolicyTypesList(List<PolicyTypeDefinition> policyTypes, List<PolicyTypeDefinition> fetchedPolicyTypes) {
59         assertThat(fetchedPolicyTypes)
60                 .usingElementComparatorOnFields("version", "type", "uniqueId", "name", "icon")
61                 .isEqualTo(policyTypes);
62         assertThat(fetchedPolicyTypes).extracting("derivedFrom")//derivedFrom is not on the PolicyTypeMixin and should not return in response
63                 .containsOnly((String)null);
64     }
65
66     private Invocation.Builder buildGetPolicyTypesCall() {
67         return target("/v1/catalog/policyTypes")
68                 .queryParam("internalComponentType", COMPONENT_TYPE)
69                 .request(MediaType.APPLICATION_JSON)
70                 .header(Constants.USER_ID_HEADER, USER_ID);
71     }
72
73     private Invocation.Builder buildGetPolicyTypesCallNoInternalComponent() {
74         return target("/v1/catalog/policyTypes")
75                 .request(MediaType.APPLICATION_JSON)
76                 .header(Constants.USER_ID_HEADER, USER_ID);
77     }
78
79     private List<PolicyTypeDefinition> buildPolicyTypesList() {
80         PolicyTypeDefinition type1 = new PolicyTypeBuilder()
81                 .setDerivedFrom("root")
82                 .setType("type1")
83                 .setUniqueId("id1")
84                 .setVersion("1.0")
85                 .setName("type1name")
86                 .setIcon("type1Icon")
87                 .build();
88         PolicyTypeDefinition type2 = new PolicyTypeBuilder()
89                 .setDerivedFrom("type1")
90                 .setType("type2")
91                 .setUniqueId("id2")
92                 .setVersion("1.0")
93                 .setName("type2name")
94                 .setIcon("type2con")
95                 .build();
96         PolicyTypeDefinition type3 = new PolicyTypeBuilder()
97                 .setDerivedFrom("root")
98                 .setType("type3")
99                 .setUniqueId("id3")
100                 .setVersion("1.0")
101                 .setName("type3name")
102                 .setIcon("type3con")
103                 .build();
104         return asList(type1, type2, type3);
105     }
106
107
108
109 }