68185519c6dac62f36d508e373060b5c4e065679
[appc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright (C) 2017 Amdocs
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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  */
22
23 import org.openecomp.appc.exceptions.APPCException;
24 import org.junit.Test;
25 import org.openecomp.appc.adapter.netconf.OperationalStateValidator;
26 import org.openecomp.appc.adapter.netconf.OperationalStateValidatorFactory;
27 import org.openecomp.appc.adapter.netconf.VnfType;
28
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.fail;
31
32
33 public class OperationalStateValidatorTest {
34
35     @Test
36     public void testVNFValidResponse() {
37         String validResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
38                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
39                 "    <data>\n" +
40                 "        <ManagedElement xmlns=\"urn:org:openecomp:appc:Test\">\n" +
41                 "            <managedElementId>1</managedElementId>\n" +
42                 "            <VnfFunction xmlns=\"urn:org:openecomp:appc:Test\">\n" +
43                 "                <id>1</id>\n" +
44                 "                <ProcessorManagement>\n" +
45                 "                    <id>1</id>\n" +
46                 "                    <MatedPair>\n" +
47                 "                        <id>1</id>\n" +
48                 "                        <operationalState>ENABLED</operationalState>\n" +
49                 "                        <PayloadProcessor>\n" +
50                 "                            <id>processor_0_5</id>\n" +
51                 "                            <operationalState>ENABLED</operationalState>\n" +
52                 "                        </PayloadProcessor>\n" +
53                 "                        <PayloadProcessor>\n" +
54                 "                            <id>processor_0_7</id>\n" +
55                 "                            <operationalState>ENABLED</operationalState>\n" +
56                 "                        </PayloadProcessor>\n" +
57                 "                    </MatedPair>\n" +
58                 "                    <SystemController>\n" +
59                 "                        <id>SC-1</id>\n" +
60                 "                        <operationalState>ENABLED</operationalState>\n" +
61                 "                    </SystemController>\n" +
62                 "                    <SystemController>\n" +
63                 "                        <id>SC-2</id>\n" +
64                 "                        <operationalState>ENABLED</operationalState>\n" +
65                 "                    </SystemController>\n" +
66                 "                </ProcessorManagement>\n" +
67                 "            </VnfFunction>\n" +
68                 "        </ManagedElement>\n" +
69                 "    </data>\n" +
70                 "</rpc-reply>";
71         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.VNF);
72         assertValidResponse(validResponse, operationalStateValidator);
73     }
74
75     void assertInvalidResponse(String response, OperationalStateValidator operationalStateValidator) {
76         try {
77             operationalStateValidator.validateResponse(response);
78             fail("invalid resposne passed without exception!!!");
79         } catch (APPCException e) {
80             assertNotNull(e.getMessage());
81         }
82     }
83
84     @Test
85     public void testVNFInvalidResponses() {
86
87         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.VNF);
88         assertInvalidResponse(null, operationalStateValidator);
89
90         assertInvalidResponse("", operationalStateValidator);
91
92         String response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
93         assertInvalidResponse(response, operationalStateValidator);
94
95         response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
96                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
97                 "</rpc-reply>";
98         assertInvalidResponse(response, operationalStateValidator);
99
100         response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
101                 "<rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\"101\">\n" +
102                 "    <data>\n" +
103                 "        <ManagedElement xmlns=\"urn:org:openecomp:appc:Test\">\n" +
104                 "            <managedElementId>1</managedElementId>\n" +
105                 "            <VnfFunction xmlns=\"urn:org:openecomp:appc:Test\">\n" +
106                 "                <id>1</id>\n" +
107                 "                <ProcessorManagement>\n" +
108                 "                    <id>1</id>\n" +
109                 "                    <MatedPair>\n" +
110                 "                        <id>1</id>\n" +
111                 "                        <operationalState>ENABLED</operationalState>\n" +
112                 "                        <PayloadProcessor>\n" +
113                 "                            <id>processor_0_5</id>\n" +
114                 "                            <operationalState>ENABLED</operationalState>\n" +
115                 "                        </PayloadProcessor>\n" +
116                 "                        <PayloadProcessor>\n" +
117                 "                            <id>processor_0_7</id>\n" +
118                 "                            <operationalState>ENABLED</operationalState>\n" +
119                 "                        </PayloadProcessor>\n" +
120                 "                    </MatedPair>\n" +
121                 "                    <SystemController>\n" +
122                 "                        <id>SC-1</id>\n" +
123                 "                        <operationalState>ENABLED</operationalState>\n" +
124                 "                    </SystemController>\n" +
125                 "                    <SystemController>\n" +
126                 "                        <id>SC-2</id>\n" +
127                 "                        <operationalState></operationalState>\n" +
128                 "                    </SystemController>\n" +
129                 "                </ProcessorManagement>\n" +
130                 "            </VnfFunction>\n" +
131                 "        </ManagedElement>\n" +
132                 "    </data>\n" +
133                 "</rpc-reply>";
134         assertInvalidResponse(response, operationalStateValidator);
135     }
136
137     void assertValidResponse(String response, OperationalStateValidator operationalStateValidator) {
138         try {
139             operationalStateValidator.validateResponse(response);
140         } catch (APPCException e) {
141             fail("Got unexpected exception. Validation failed. " + e.getMessage());
142         }
143     }
144
145     @Test
146     public void testMockValidResponse() {
147         String response = "valid";
148         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator("mock");
149         assertValidResponse(response, operationalStateValidator);
150
151         response = "";
152         assertValidResponse(response, operationalStateValidator);
153
154         response = null;
155         assertValidResponse(response, operationalStateValidator);
156     }
157
158     @Test
159     public void testMockInValidResponse() {
160         String response = "anything InValid anything.. ";
161         OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(VnfType.MOCK);
162         assertInvalidResponse(response, operationalStateValidator);
163     }
164
165     @Test
166     public void testGetOperationalStateValidatorForInValidVnfType() {
167         try{
168             OperationalStateValidatorFactory.getOperationalStateValidator("wrongVnfType");
169             fail("invalid vnfType without exception!!!");
170         } catch (Exception e) {
171             assertNotNull(e.getMessage());
172         }
173     }
174
175     @Test
176     public void testGetOperationalStateValidatorForValidVnfType() {
177         String vnfType = VnfType.VNF.name().toLowerCase();
178         assertGettingValidatorForValidVnf(vnfType);
179
180         vnfType = VnfType.VNF.name().toUpperCase();
181         assertGettingValidatorForValidVnf(vnfType);
182
183         vnfType = VnfType.MOCK.name().toLowerCase();
184         assertGettingValidatorForValidVnf(vnfType);
185
186         vnfType = VnfType.MOCK.name().toUpperCase();
187         assertGettingValidatorForValidVnf(vnfType);
188     }
189
190     void assertGettingValidatorForValidVnf(String vnfType) {
191         try{
192             OperationalStateValidator operationalStateValidator = OperationalStateValidatorFactory.getOperationalStateValidator(vnfType);
193             assertNotNull(operationalStateValidator);
194         } catch (Exception e) {
195             fail("valid vnfType throw exception!!!");
196         }
197     }
198 }