Fix for sonar issue
[clamp.git] / src / test / java / org / onap / clamp / clds / it / PolicyClientItCase.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * Modifications copyright (c) 2018 Nokia
21  * ===================================================================
22  * 
23  */
24
25 package org.onap.clamp.clds.it;
26
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.assertTrue;
30
31 import java.io.IOException;
32 import java.util.Map;
33 import java.util.UUID;
34 import java.util.concurrent.TimeUnit;
35
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.onap.clamp.clds.client.req.policy.OperationalPolicyAttributesConstructor;
40 import org.onap.clamp.clds.client.req.policy.PolicyClient;
41 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
42 import org.onap.clamp.clds.config.ClampProperties;
43 import org.onap.clamp.clds.config.PolicyConfiguration;
44 import org.onap.clamp.clds.model.CldsEvent;
45 import org.onap.clamp.clds.model.properties.ModelProperties;
46 import org.onap.clamp.clds.model.properties.Policy;
47 import org.onap.clamp.clds.model.properties.PolicyChain;
48 import org.onap.clamp.clds.model.properties.Tca;
49 import org.onap.clamp.clds.util.ResourceFileUtil;
50 import org.onap.policy.api.AttributeType;
51 import org.springframework.beans.factory.annotation.Autowired;
52 import org.springframework.boot.test.context.SpringBootTest;
53 import org.springframework.test.context.junit4.SpringRunner;
54
55 /**
56  * Test Policy API in org.onap.clamp.ClampDesigner.client package - replicate
57  * Policy Delegates in tests.
58  */
59 @RunWith(SpringRunner.class)
60 @SpringBootTest
61 public class PolicyClientItCase {
62
63     @Autowired
64     private PolicyConfiguration policyConfiguration;
65     @Autowired
66     private ClampProperties refProp;
67     @Autowired
68     private PolicyClient policyClient;
69     @Autowired
70     private OperationalPolicyAttributesConstructor operationalPolicyAttributesConstructor;
71
72     String modelProp;
73     String modelBpmnProp;
74     String modelName;
75     String controlName;
76
77     /**
78      * Initialize Test.
79      */
80     @Before
81     public void setUp() throws IOException {
82         modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmnProperties.json");
83         modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json");
84         modelName = "example-model06";
85         controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
86     }
87
88     private void createUpdateOperationalPolicy(String actionCd) throws Exception {
89         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
90         Policy policy = prop.getType(Policy.class);
91         if (policy.isFound()) {
92             for (PolicyChain policyChain : policy.getPolicyChains()) {
93                 String operationalPolicyRequestUuid = UUID.randomUUID().toString();
94                 Map<AttributeType, Map<String, String>> attributes = operationalPolicyAttributesConstructor
95                         .formatAttributes(refProp, prop, policy.getId(), policyChain);
96                 policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
97             }
98         }
99     }
100
101     private void createUpdateTcaPolicy(String actionCd) throws Exception {
102         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
103         Tca tca = prop.getType(Tca.class);
104         if (tca.isFound()) {
105             String tcaPolicyRequestUuid = UUID.randomUUID().toString();
106             String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
107             try {
108                 policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
109             } catch (Exception e) {
110                 assertTrue(e.getMessage().contains("Policy send failed: PE500 "));
111             }
112         }
113     }
114
115     private void deleteOperationalPolicy(String actionCd) throws Exception {
116         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
117         Policy policy = prop.getType(Policy.class);
118         if (policy.isFound()) {
119             prop.setCurrentModelElementId(policy.getId());
120             for (PolicyChain policyChain : policy.getPolicyChains()) {
121                 prop.setPolicyUniqueId(policyChain.getPolicyId());
122                 policyClient.deleteBrms(prop);
123             }
124         }
125     }
126
127     private void deleteTcaPolicy(String actionCd) throws Exception {
128         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
129         Tca tca = prop.getType(Tca.class);
130         if (tca.isFound()) {
131             prop.setCurrentModelElementId(tca.getId());
132             try {
133                 policyClient.deleteMicrosService(prop);
134             } catch (Exception e) {
135                 assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
136             }
137         }
138     }
139
140     // @Test
141     /**
142      * Temporarily disabled Test.
143      */
144     public void testCreateUpdateDeleteOperationalPolicy() throws Exception {
145         createUpdateOperationalPolicy(CldsEvent.ACTION_SUBMIT);
146         TimeUnit.SECONDS.sleep(20);
147         deleteOperationalPolicy(CldsEvent.ACTION_DELETE);
148     }
149
150     @Test
151     public void testCreateUpdateDeleteTcaPolicy() throws Exception {
152         createUpdateTcaPolicy(CldsEvent.ACTION_SUBMIT);
153         TimeUnit.SECONDS.sleep(20);
154         deleteTcaPolicy(CldsEvent.ACTION_DELETE);
155     }
156
157     @Test
158     public void testPolicyConfiguration() {
159         assertNotNull(policyConfiguration.getPdpUrl1());
160         assertNotNull(policyConfiguration.getPdpUrl2());
161         assertNotNull(policyConfiguration.getPapUrl());
162         assertNotNull(policyConfiguration.getPolicyEnvironment());
163         assertNotNull(policyConfiguration.getClientId());
164         assertNotNull(policyConfiguration.getClientKey());
165         assertNotNull(policyConfiguration.getNotificationType());
166         assertNotNull(policyConfiguration.getNotificationUebServers());
167         assertEquals(8, policyConfiguration.getProperties().size());
168         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1))
169                 .contains("/pdp/ , testpdp, alpha123"));
170         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2))
171                 .contains("/pdp/ , testpdp, alpha123"));
172         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL))
173                 .contains("/pap/ , testpap, alpha123"));
174         assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE));
175         assertEquals("localhost",
176                 policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS));
177         assertEquals("python", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID));
178         assertEquals("dGVzdA==", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY));
179         assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT));
180     }
181 }