Merge "logstash input"
[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
70     String modelProp;
71     String modelBpmnProp;
72     String modelName;
73     String controlName;
74
75     /**
76      * Initialize Test.
77      */
78     @Before
79     public void setUp() throws IOException {
80         modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmnProperties.json");
81         modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json");
82         modelName = "example-model06";
83         controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
84     }
85
86     private void createUpdateOperationalPolicy(String actionCd) throws Exception {
87         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
88         Policy policy = prop.getType(Policy.class);
89         if (policy.isFound()) {
90             for (PolicyChain policyChain : policy.getPolicyChains()) {
91                 String operationalPolicyRequestUuid = UUID.randomUUID().toString();
92                 Map<AttributeType, Map<String, String>> attributes = OperationalPolicyAttributesConstructor
93                     .formatAttributes(refProp, prop, policy.getId(), policyChain);
94                 policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
95             }
96         }
97     }
98
99     private void createUpdateTcaPolicy(String actionCd) throws Exception {
100         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
101         Tca tca = prop.getType(Tca.class);
102         if (tca.isFound()) {
103             String tcaPolicyRequestUuid = UUID.randomUUID().toString();
104             String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
105             try {
106                 policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
107             } catch (Exception e) {
108                 assertTrue(e.getMessage().contains("Policy send failed: PE500 "));
109             }
110         }
111     }
112
113     private void deleteOperationalPolicy(String actionCd) throws Exception {
114         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
115         Policy policy = prop.getType(Policy.class);
116         if (policy.isFound()) {
117             prop.setCurrentModelElementId(policy.getId());
118             for (PolicyChain policyChain : policy.getPolicyChains()) {
119                 prop.setPolicyUniqueId(policyChain.getPolicyId());
120                 policyClient.deleteBrms(prop);
121             }
122         }
123     }
124
125     private void deleteTcaPolicy(String actionCd) throws Exception {
126         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
127         Tca tca = prop.getType(Tca.class);
128         if (tca.isFound()) {
129             prop.setCurrentModelElementId(tca.getId());
130             try {
131                 policyClient.deleteMicrosService(prop);
132             } catch (Exception e) {
133                 assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
134             }
135         }
136     }
137
138     // @Test
139     /**
140      * Temporarily disabled Test.
141      */
142     public void testCreateUpdateDeleteOperationalPolicy() throws Exception {
143         createUpdateOperationalPolicy(CldsEvent.ACTION_SUBMIT);
144         TimeUnit.SECONDS.sleep(20);
145         deleteOperationalPolicy(CldsEvent.ACTION_DELETE);
146     }
147
148     @Test
149     public void testCreateUpdateDeleteTcaPolicy() throws Exception {
150         createUpdateTcaPolicy(CldsEvent.ACTION_SUBMIT);
151         TimeUnit.SECONDS.sleep(20);
152         deleteTcaPolicy(CldsEvent.ACTION_DELETE);
153     }
154
155     @Test
156     public void testPolicyConfiguration() {
157         assertNotNull(policyConfiguration.getPdpUrl1());
158         assertNotNull(policyConfiguration.getPdpUrl2());
159         assertNotNull(policyConfiguration.getPapUrl());
160         assertNotNull(policyConfiguration.getPolicyEnvironment());
161         assertNotNull(policyConfiguration.getClientId());
162         assertNotNull(policyConfiguration.getClientKey());
163         assertNotNull(policyConfiguration.getNotificationType());
164         assertNotNull(policyConfiguration.getNotificationUebServers());
165         assertEquals(8, policyConfiguration.getProperties().size());
166         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1))
167             .contains("/pdp/ , testpdp, alpha123"));
168         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2))
169             .contains("/pdp/ , testpdp, alpha123"));
170         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL))
171             .contains("/pap/ , testpap, alpha123"));
172         assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE));
173         assertEquals("localhost",
174             policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS));
175         assertEquals("python", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID));
176         assertEquals("dGVzdA==", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY));
177         assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT));
178     }
179 }