added test case to ConfigResourceNodeTest
[appc.git] / appc-adapters / appc-netconf-adapter / appc-netconf-adapter-bundle / src / test / java / org / onap / appc / adapter / netconf / OperationalStateValidatorTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * ================================================================================
9  * Modifications Copyright (C) 2019 Ericsson
10  * =============================================================================
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  * 
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  * 
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * 
23  * ============LICENSE_END=========================================================
24  */
25
26 package org.onap.appc.adapter.netconf;
27
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.fail;
30 import org.junit.Test;
31 import org.onap.appc.exceptions.APPCException;
32
33
34 public class OperationalStateValidatorTest {
35
36     @Test
37     public void testVNFValidResponse() {
38         String validResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
39                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
40                 "    <data>\n" +
41                 "        <ManagedElement xmlns=\"urn:org:onap:appc:Test\">\n" +
42                 "            <managedElementId>1</managedElementId>\n" +
43                 "            <VnfFunction xmlns=\"urn:org:onap:appc:Test\">\n" +
44                 "                <id>1</id>\n" +
45                 "                <ProcessorManagement>\n" +
46                 "                    <id>1</id>\n" +
47                 "                    <MatedPair>\n" +
48                 "                        <id>1</id>\n" +
49                 "                        <operationalState>ENABLED</operationalState>\n" +
50                 "                        <PayloadProcessor>\n" +
51                 "                            <id>processor_0_5</id>\n" +
52                 "                            <operationalState>ENABLED</operationalState>\n" +
53                 "                        </PayloadProcessor>\n" +
54                 "                        <PayloadProcessor>\n" +
55                 "                            <id>processor_0_7</id>\n" +
56                 "                            <operationalState>ENABLED</operationalState>\n" +
57                 "                        </PayloadProcessor>\n" +
58                 "                    </MatedPair>\n" +
59                 "                    <SystemController>\n" +
60                 "                        <id>SC-1</id>\n" +
61                 "                        <operationalState>ENABLED</operationalState>\n" +
62                 "                    </SystemController>\n" +
63                 "                    <SystemController>\n" +
64                 "                        <id>SC-2</id>\n" +
65                 "                        <operationalState>ENABLED</operationalState>\n" +
66                 "                    </SystemController>\n" +
67                 "                </ProcessorManagement>\n" +
68                 "            </VnfFunction>\n" +
69                 "        </ManagedElement>\n" +
70                 "    </data>\n" +
71                 "</rpc-reply>";
72         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.VNF);
73         assertValidResponse(validResponse, operationalStateValidator);
74     }
75
76     void assertInvalidResponse(String response, OperationalStateValidator operationalStateValidator) {
77         try {
78             operationalStateValidator.validateResponse(response);
79             fail("invalid resposne passed without exception!!!");
80         } catch (APPCException e) {
81             assertNotNull(e.getMessage());
82         }
83     }
84
85     @Test
86     public void testVNFInvalidResponses() {
87
88         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.VNF);
89         assertInvalidResponse(null, operationalStateValidator);
90
91         assertInvalidResponse("", operationalStateValidator);
92
93         String response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
94         assertInvalidResponse(response, operationalStateValidator);
95
96         response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
97                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
98                 "</rpc-reply>";
99         assertInvalidResponse(response, operationalStateValidator);
100
101         response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
102                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
103                 "    <data>\n" +
104                 "        <ManagedElement xmlns=\"urn:org:onap:appc:Test\">\n" +
105                 "            <managedElementId>1</managedElementId>\n" +
106                 "            <VnfFunction xmlns=\"urn:org:onap:appc:Test\">\n" +
107                 "                <id>1</id>\n" +
108                 "                <ProcessorManagement>\n" +
109                 "                    <id>1</id>\n" +
110                 "                    <MatedPair>\n" +
111                 "                        <id>1</id>\n" +
112                 "                        <operationalState>ENABLED</operationalState>\n" +
113                 "                        <PayloadProcessor>\n" +
114                 "                            <id>processor_0_5</id>\n" +
115                 "                            <operationalState>ENABLED</operationalState>\n" +
116                 "                        </PayloadProcessor>\n" +
117                 "                        <PayloadProcessor>\n" +
118                 "                            <id>processor_0_7</id>\n" +
119                 "                            <operationalState>ENABLED</operationalState>\n" +
120                 "                        </PayloadProcessor>\n" +
121                 "                    </MatedPair>\n" +
122                 "                    <SystemController>\n" +
123                 "                        <id>SC-1</id>\n" +
124                 "                        <operationalState>ENABLED</operationalState>\n" +
125                 "                    </SystemController>\n" +
126                 "                    <SystemController>\n" +
127                 "                        <id>SC-2</id>\n" +
128                 "                        <operationalState></operationalState>\n" +
129                 "                    </SystemController>\n" +
130                 "                </ProcessorManagement>\n" +
131                 "            </VnfFunction>\n" +
132                 "        </ManagedElement>\n" +
133                 "    </data>\n" +
134                 "</rpc-reply>";
135         assertInvalidResponse(response, operationalStateValidator);
136     }
137
138     void assertValidResponse(String response, OperationalStateValidator operationalStateValidator) {
139         try {
140             operationalStateValidator.validateResponse(response);
141         } catch (APPCException e) {
142             fail("Got unexpected exception. Validation failed. " + e.getMessage());
143         }
144     }
145
146     @Test
147     public void testMockValidResponse() {
148         String response = "valid";
149         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator("mock");
150         assertValidResponse(response, operationalStateValidator);
151
152         response = "";
153         assertValidResponse(response, operationalStateValidator);
154
155         response = null;
156         assertValidResponse(response, operationalStateValidator);
157     }
158
159     @Test
160     public void testMockInValidResponse() {
161         String response = "anything InValid anything.. ";
162         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.MOCK);
163         assertInvalidResponse(response, operationalStateValidator);
164     }
165
166     @Test
167     public void testGetOperationalStateValidatorForInValidVnfType() {
168         try{
169             OperationalStateValidatorFactory.getOperationalStateValidator("wrongVnfType");
170             fail("invalid vnfType without exception!!!");
171         } catch (Exception e) {
172             assertNotNull(e.getMessage());
173         }
174     }
175
176     @Test
177     public void testGetOperationalStateValidatorForValidVnfType() {
178         String vnfType = VnfType.VNF.name().toLowerCase();
179         assertGettingValidatorForValidVnf(vnfType);
180
181         vnfType = VnfType.VNF.name().toUpperCase();
182         assertGettingValidatorForValidVnf(vnfType);
183
184         vnfType = VnfType.MOCK.name().toLowerCase();
185         assertGettingValidatorForValidVnf(vnfType);
186
187         vnfType = VnfType.MOCK.name().toUpperCase();
188         assertGettingValidatorForValidVnf(vnfType);
189     }
190
191     void assertGettingValidatorForValidVnf(String vnfType) {
192         try{
193             OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(vnfType);
194             assertNotNull(operationalStateValidator);
195         } catch (Exception e) {
196             fail("valid vnfType throw exception!!!");
197         }
198     }
199 }