Support TOSCA functions in Node Filters
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / datamodel / UiComponentDataConverterTest.java
1 /*
2  * Copyright © 2016-2019 European Support Limited
3  * Modifications © 2020 AT&T
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18
19 package org.openecomp.sdc.be.datamodel;
20
21 import static org.assertj.core.api.Assertions.assertThat;
22 import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.when;
27
28 import java.util.Arrays;
29 import java.util.Collections;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.Set;
34 import org.junit.Before;
35 import org.junit.BeforeClass;
36 import org.junit.Test;
37 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
38 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
39 import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
40 import org.openecomp.sdc.be.components.utils.InputsBuilder;
41 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
42 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
43 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
44 import org.openecomp.sdc.be.components.utils.ServiceBuilder;
45 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
46 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
47 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
48 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
49 import org.openecomp.sdc.be.datatypes.elements.PropertyFilterConstraintDataDefinition;
50 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
51 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterPropertyDataDefinition;
52 import org.openecomp.sdc.be.datatypes.enums.ConstraintType;
53 import org.openecomp.sdc.be.datatypes.enums.FilterValueType;
54 import org.openecomp.sdc.be.datatypes.enums.PropertyFilterTargetType;
55 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
56 import org.openecomp.sdc.be.model.GroupDefinition;
57 import org.openecomp.sdc.be.model.InputDefinition;
58 import org.openecomp.sdc.be.model.InterfaceDefinition;
59 import org.openecomp.sdc.be.model.OutputDefinition;
60 import org.openecomp.sdc.be.model.PolicyDefinition;
61 import org.openecomp.sdc.be.model.PropertyDefinition;
62 import org.openecomp.sdc.be.model.Resource;
63 import org.openecomp.sdc.be.model.Service;
64 import org.openecomp.sdc.be.ui.model.UIConstraint;
65 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
66 import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
67 import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
68
69 public class UiComponentDataConverterTest {
70
71     private PolicyDefinition policy1, policy2;
72     private GroupDefinition group1, group2;
73     private InputDefinition input1;
74     private OutputDefinition output;
75     private PropertyDefinition propertyDef;
76     private InterfaceDefinition interfaceDef;
77
78
79     private static GroupTypeBusinessLogic groupTypeBusinessLogic;
80     private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
81     private static UiComponentDataConverter uiComponentDataConverter;
82
83     private static final String PROPERTY_UID = "propertyUid";
84     private static final String NODE_FILTER_UID = "nodeFilterUid";
85     private static final String SUBSTITUTION_FILTER_UID = "substitutionFilterUid";
86     private static final String COMPONENT_UID = "componentUid";
87
88     @BeforeClass
89     public static void initClass() {
90         groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
91         policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
92         uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
93     }
94
95     @Before
96     public void setUp() throws Exception {
97         policy1 = PolicyDefinitionBuilder.create()
98                 .setName("policy1")
99                 .setUniqueId("uid1")
100                 .setType("a")
101                 .build();
102
103         policy2 = PolicyDefinitionBuilder.create()
104                 .setName("policy2")
105                 .setUniqueId("uid2")
106                 .setType("b")
107                 .build();
108         group1 = GroupDefinitionBuilder.create()
109                 .setUniqueId("group1")
110                 .setName("Group 1")
111                 .setType("a")
112                 .build();
113         group2 = GroupDefinitionBuilder.create()
114                 .setUniqueId("group2")
115                 .setName("Group 2")
116                 .setType("b")
117                 .build();
118
119         input1 = InputsBuilder.create()
120                 .setName("input1")
121                 .setPropertyId("inputid")
122                 .build();
123
124         propertyDef = new PropertyDataDefinitionBuilder()
125                 .setName("propety1")
126                 .setValue("true")
127                 .setType("boolean")
128                 .setUniqueId("property1")
129                 .build();
130
131
132     }
133
134     @Test
135     public void getUiDataTransferFromResourceByParams_groups_allGroups() {
136         Resource resourceWithGroups = buildResourceWithGroups();
137         UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
138         UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
139         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
140         assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
141     }
142
143     @Test
144     public void getUiDataTransferFromResourceByParams_groups_excludedGroups() {
145         Resource resourceWithGroups = buildResourceWithGroups();
146         when(groupTypeBusinessLogic.getExcludedGroupTypes("VFC")).thenReturn(buildExcludedTypesList());
147         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("nonExcludedGroups"));
148         List<GroupDefinition> groups = componentDTO.getGroups();
149         assertThat(groups.size()).isEqualTo(1);
150         assertThat(groups.get(0)).isEqualTo(group2);
151     }
152
153     @Test
154     public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
155         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
156         assertThat(componentDTO.getPolicies()).isEmpty();
157     }
158
159     @Test
160     public void getUiDataTransferFromResourceByParams_All() {
161         Resource resourceWithGroups = buildResourceWithGroups();
162         Resource resourceWithInputs = buildResourceWithInputs();
163         Resource resourceWithOutputs = buildResourceWithOutputs();
164
165         UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
166         UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
167         UiComponentDataTransfer componentDTO3 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
168         UiComponentDataTransfer componentDTO4 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("attributes"));
169         UiComponentDataTransfer componentDTO5 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("metadata"));
170         UiComponentDataTransfer componentDTO6 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("derivedFrom"));
171         UiComponentDataTransfer componentDTO7 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("additionalInformation"));
172
173         UiComponentDataTransfer componentDTO8 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("inputs"));
174         UiComponentDataTransfer componentDTO81 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithInputs, Collections.singletonList("inputs"));
175         UiComponentDataTransfer componentDTO82 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithOutputs, Collections.singletonList("outputs"));
176
177         UiComponentDataTransfer componentDTO9 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("users"));
178         UiComponentDataTransfer componentDTO10 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstances"));
179         UiComponentDataTransfer componentDTO11 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesProperties"));
180         UiComponentDataTransfer componentDTO12 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("capabilities"));
181         UiComponentDataTransfer componentDTO13 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("requirements"));
182         UiComponentDataTransfer componentDTO14 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("allVersions"));
183         UiComponentDataTransfer componentDTO15 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("artifacts"));
184
185         UiComponentDataTransfer componentDTO16 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
186         UiComponentDataTransfer componentDTO17 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesAttributes"));
187         UiComponentDataTransfer componentDTO18= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesInputs"));
188         UiComponentDataTransfer componentDTO19 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("toscaArtifacts"));
189
190         UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
191         UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
192
193         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
194         assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
195     }
196
197     @Test
198     public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
199         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
200         assertThat(componentDTO.getPolicies()).isEmpty();
201     }
202
203     @Test
204     public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
205         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
206         assertThat(componentDTO.getArtifacts()).isNull();
207     }
208
209     @Test
210     public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
211         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
212         assertThat(componentDTO.getForwardingPaths()).isEmpty();
213     }
214
215     @Test
216     public void getUiDataTransferFromServiceByParams_METADATA() {
217         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
218         assertThat(componentDTO.getMetadata().getNamingPolicy()).isEmpty();
219     }
220
221     @Test
222     public void getUiDataTransferFromServiceByParams_INTERFACES() {
223         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
224         assertThat(componentDTO.getInterfaces()).isEmpty();
225     }
226
227     @Test
228     public void getUiDataTransferFromResourceByParams_policies() {
229         Resource resourceWithPolicies = buildResourceWithPolicies();
230         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("policies"));
231         List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
232         assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
233     }
234
235     @Test
236     public void getUiDataTransferFromServiceByParams_policies() {
237         Service resourceWithPolicies = buildServiceWithPolicies();
238         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(resourceWithPolicies, Collections.singletonList("policies"));
239         List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
240         assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
241     }
242
243     @Test
244     public void getUiDataTransferFromResourceByParams_policies_excludedPolicies() {
245         Resource resourceWithPolicies = buildResourceWithPolicies();
246         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
247         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("nonExcludedPolicies"));
248         List<PolicyDefinition> policies = componentDTO.getPolicies();
249         assertThat(policies.size()).isEqualTo(1);
250         assertThat(policies.get(0)).isEqualTo(policy2);
251     }
252
253     @Test
254     public void convertToUiComponentMetadataTestResource() {
255         Resource resourceWithPolicies = buildResourceWithPolicies();
256         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
257         UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
258         assertThat(componentMd.getComponentType().getValue()).isEqualTo("Resource");
259
260     }
261
262     @Test
263     public void convertToUiComponentMetadataTestService() {
264         Service resourceWithPolicies = buildServiceWithPolicies();
265         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
266         UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
267         assertThat(componentMd.getComponentType().getValue()).isEqualTo("Service");
268
269     }
270     @Test
271     public void getResourceWithoutGroupsAndPolicies_returnsEmptyLists() {
272         Resource resource = new ResourceBuilder().build();
273         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource, Arrays.asList("nonExcludedPolicies", "nonExcludedGroups"));
274         List<PolicyDefinition> policies = componentDTO.getPolicies();
275         assertThat(policies.size()).isZero();
276         List<GroupDefinition> groups = componentDTO.getGroups();
277         assertThat(groups.size()).isZero();
278     }
279
280     @Test
281     public void testGetDeclaredPolicies() {
282         ComponentInstanceProperty property = new ComponentInstanceProperty();
283         property.setName(PROPERTY_UID);
284
285         GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
286         getPolicy.setPolicyId(PROPERTY_UID);
287         getPolicy.setPropertyName(PROPERTY_UID);
288         property.setGetPolicyValues(Collections.singletonList(getPolicy));
289
290         Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
291         instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
292
293         Resource resource = new ResourceBuilder().build();
294         resource.setComponentInstancesProperties(instanceProperties);
295
296         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
297                 Collections.singletonList("policies"));
298
299         assertThat(uiComponentDataTransfer.getPolicies()).isNotEmpty();
300     }
301
302     @Test
303     public void testGetNodeFilterEmptyList() {
304         Resource resource = new ResourceBuilder().build();
305         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
306                 Collections.singletonList("nodeFilter"));
307
308         assertThat(uiComponentDataTransfer.getNodeFilter()).isNull();
309     }
310
311     @Test
312     public void testGetNodeFilter() {
313         CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
314         nodeFilter.setID(NODE_FILTER_UID);
315
316         Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
317         nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
318
319         Resource resource = new ResourceBuilder().build();
320         resource.setNodeFilterComponents(nodeFilterMap);
321
322         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
323                 Collections.singletonList("nodeFilter"));
324
325         assertThat(uiComponentDataTransfer.getNodeFilterforNode()).isNotEmpty();
326     }
327
328     @Test
329     public void testGetSubstitutionFilterEmptyList() {
330         Resource resource = new ResourceBuilder().build();
331         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
332                 Collections.singletonList("substitutionFilter"));
333
334         assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNull();
335     }
336
337     @Test
338     public void testGetSubstitutionFilter() {
339         SubstitutionFilterDataDefinition substitutionFilter = new SubstitutionFilterDataDefinition();
340         substitutionFilter.setID(SUBSTITUTION_FILTER_UID);
341
342         final ListDataDefinition<SubstitutionFilterPropertyDataDefinition> expectedPropertyFilters = new ListDataDefinition<>();
343         var filter1 = new SubstitutionFilterPropertyDataDefinition();
344         filter1.setName("filter1");
345         var propertyFilter1 = new PropertyFilterConstraintDataDefinition();
346         propertyFilter1.setPropertyName("constraint1");
347         propertyFilter1.setOperator(ConstraintType.EQUAL);
348         propertyFilter1.setValueType(FilterValueType.STATIC);
349         propertyFilter1.setTargetType(PropertyFilterTargetType.PROPERTY);
350         propertyFilter1.setValue("testvalue1");
351         filter1.setConstraints(List.of(propertyFilter1));
352         expectedPropertyFilters.add(filter1);
353
354         var filter2 = new SubstitutionFilterPropertyDataDefinition();
355         filter2.setName("filter2");
356         var propertyFilter2 = new PropertyFilterConstraintDataDefinition();
357         propertyFilter2.setPropertyName("constraint2");
358         propertyFilter2.setOperator(ConstraintType.EQUAL);
359         propertyFilter2.setValueType(FilterValueType.STATIC);
360         propertyFilter2.setTargetType(PropertyFilterTargetType.PROPERTY);
361         propertyFilter2.setValue("testvalue2");
362         filter2.setConstraints(List.of(propertyFilter2));
363         expectedPropertyFilters.add(filter2);
364
365         substitutionFilter.setProperties(expectedPropertyFilters);
366
367         Resource resource = new ResourceBuilder().build();
368         resource.setSubstitutionFilter(substitutionFilter);
369
370         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
371                 Collections.singletonList("substitutionFilter"));
372         assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNotNull();
373
374         List<UIConstraint> propertyFilters = uiComponentDataTransfer.getSubstitutionFilters().getProperties();
375         assertFalse(propertyFilters.isEmpty());
376         assertEquals(propertyFilters.size(), substitutionFilter.getProperties().getListToscaDataDefinition().size());
377
378         verifyPropertyFilters(propertyFilters.get(0), "constraint1", "testvalue1", "static", "equal");
379         verifyPropertyFilters(propertyFilters.get(1), "constraint2", "testvalue2", "static", "equal");
380     }
381
382     private void verifyPropertyFilters(UIConstraint uiConstraint, String propertyName, String value, String sourceType, String operator){
383         assertEquals(propertyName, uiConstraint.getServicePropertyName());
384         assertEquals(value, uiConstraint.getValue());
385         assertEquals(sourceType, uiConstraint.getSourceType());
386         assertEquals(operator, uiConstraint.getConstraintOperator());
387     }
388
389     private Resource buildResourceWithGroups() {
390         return new ResourceBuilder()
391                 .addGroup(group1)
392                 .addGroup(group2)
393                 .build();
394     }
395
396     private Resource buildResourceWithInputs() {
397         return new ResourceBuilder()
398                 .addInput(input1)
399                 .build();
400     }
401
402     private Resource buildResourceWithOutputs() {
403         return new ResourceBuilder()
404                 .addOutput(output)
405                 .build();
406     }
407
408     private Resource buildResourceWithParameter(final String field) {
409         final ResourceBuilder res =  new ResourceBuilder();
410         switch(field){
411             case "inputs":
412                 res.addInput(input1);
413                 break;
414             case "outputs":
415                 res.addOutput(output);
416                 break;
417             case "properties":
418                 //res.addProperty(propertyDef);
419                 break;
420
421
422         }
423         return new ResourceBuilder()
424                 .addInput(input1)
425                 .addOutput(output)
426                 .build();
427     }
428
429     private Resource buildResourceWithPolicies() {
430         return new ResourceBuilder()
431                 .addPolicy(policy1)
432                 .addPolicy(policy2)
433                 .build();
434     }
435
436     private Service buildServiceWithPolicies() {
437         return new ServiceBuilder()
438                 .addPolicy(policy1)
439                 .addPolicy(policy2)
440                 .build();
441     }
442
443     private Set<String> buildExcludedTypesList() {
444         return asSet("a");
445     }
446
447 }