ac89636345a9de8f8c5e957f79d9508a95a93b82
[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  * ===================================================================
21  * 
22  */
23
24 package org.onap.clamp.clds.it;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29
30 import java.io.IOException;
31 import java.util.Map;
32 import java.util.UUID;
33 import java.util.concurrent.TimeUnit;
34
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.junit.runner.RunWith;
38 import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq;
39 import org.onap.clamp.clds.client.req.policy.PolicyClient;
40 import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
41 import org.onap.clamp.clds.config.ClampProperties;
42 import org.onap.clamp.clds.config.PolicyConfiguration;
43 import org.onap.clamp.clds.model.CldsEvent;
44 import org.onap.clamp.clds.model.properties.ModelProperties;
45 import org.onap.clamp.clds.model.properties.Policy;
46 import org.onap.clamp.clds.model.properties.PolicyChain;
47 import org.onap.clamp.clds.model.properties.Tca;
48 import org.onap.clamp.clds.util.ResourceFileUtil;
49 import org.onap.policy.api.AttributeType;
50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.boot.test.context.SpringBootTest;
52 import org.springframework.test.context.junit4.SpringRunner;
53
54 /**
55  * Test Policy API in org.onap.clamp.ClampDesigner.client package - replicate
56  * Policy Delegates in tests.
57  */
58 @RunWith(SpringRunner.class)
59 @SpringBootTest
60 public class PolicyClientItCase {
61
62     @Autowired
63     private PolicyConfiguration policyConfiguration;
64     @Autowired
65     private ClampProperties refProp;
66     @Autowired
67     protected PolicyClient policyClient;
68     String modelProp;
69     String modelBpmnProp;
70     String modelName;
71     String controlName;
72
73     /**
74      * Initialize Test.
75      */
76     @Before
77     public void setUp() throws IOException {
78         modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmnProperties.json");
79         modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json");
80         modelName = "example-model06";
81         controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
82     }
83
84     private void createUpdateOperationalPolicy(String actionCd) throws Exception {
85         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
86         Policy policy = prop.getType(Policy.class);
87         if (policy.isFound()) {
88             for (PolicyChain policyChain : policy.getPolicyChains()) {
89                 String operationalPolicyRequestUuid = UUID.randomUUID().toString();
90                 Map<AttributeType, Map<String, String>> attributes = OperationalPolicyReq.formatAttributes(refProp,
91                         prop, policy.getId(), policyChain);
92                 policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
93             }
94         }
95     }
96
97     private void createUpdateTcaPolicy(String actionCd) throws Exception {
98         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
99         Tca tca = prop.getType(Tca.class);
100         if (tca.isFound()) {
101             String tcaPolicyRequestUuid = UUID.randomUUID().toString();
102             String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
103             try {
104                 policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
105             } catch (Exception e) {
106                 assertTrue(e.getMessage().contains("Policy send failed: PE500 "));
107             }
108         }
109     }
110
111     private void deleteOperationalPolicy(String actionCd) throws Exception {
112         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
113         Policy policy = prop.getType(Policy.class);
114         if (policy.isFound()) {
115             prop.setCurrentModelElementId(policy.getId());
116             for (PolicyChain policyChain : policy.getPolicyChains()) {
117                 prop.setPolicyUniqueId(policyChain.getPolicyId());
118                 policyClient.deleteBrms(prop);
119             }
120         }
121     }
122
123     private void deleteTcaPolicy(String actionCd) throws Exception {
124         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
125         Tca tca = prop.getType(Tca.class);
126         if (tca.isFound()) {
127             prop.setCurrentModelElementId(tca.getId());
128             try {
129                 policyClient.deleteMicrosService(prop);
130             } catch (Exception e) {
131                 assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
132             }
133         }
134     }
135
136     // @Test
137     /**
138      * Temporarily disabled Test.
139      */
140     public void testCreateUpdateDeleteOperationalPolicy() throws Exception {
141         createUpdateOperationalPolicy(CldsEvent.ACTION_SUBMIT);
142         TimeUnit.SECONDS.sleep(20);
143         deleteOperationalPolicy(CldsEvent.ACTION_DELETE);
144     }
145
146     @Test
147     public void testCreateUpdateDeleteTcaPolicy() throws Exception {
148         createUpdateTcaPolicy(CldsEvent.ACTION_SUBMIT);
149         TimeUnit.SECONDS.sleep(20);
150         deleteTcaPolicy(CldsEvent.ACTION_DELETE);
151     }
152
153     @Test
154     public void testPolicyConfiguration() {
155         assertNotNull(policyConfiguration.getPdpUrl1());
156         assertNotNull(policyConfiguration.getPdpUrl2());
157         assertNotNull(policyConfiguration.getPapUrl());
158         assertNotNull(policyConfiguration.getPolicyEnvironment());
159         assertNotNull(policyConfiguration.getClientId());
160         assertNotNull(policyConfiguration.getClientKey());
161         assertNotNull(policyConfiguration.getNotificationType());
162         assertNotNull(policyConfiguration.getNotificationUebServers());
163         assertEquals(8, policyConfiguration.getProperties().size());
164         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1))
165                 .contains("/pdp/ , testpdp, alpha123"));
166         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2))
167                 .contains("/pdp/ , testpdp, alpha123"));
168         assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL))
169                 .contains("/pap/ , testpap, alpha123"));
170         assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE));
171         assertEquals("localhost",
172                 policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS));
173         assertEquals("myclientid", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID));
174         assertEquals("5CE79532B3A2CB4D132FC0C04BF916A7",
175                 policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY));
176         assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT));
177     }
178 }