Add workflow output resolution
[ccsdk/apps.git] / ms / blueprintsprocessor / functions / netconf-executor / src / test / kotlin / org / onap / ccsdk / apps / blueprintsprocessor / functions / netconf / executor / utils / RpcMessageUtilsTest.kt
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.utils
17
18 import org.junit.Assert
19 import org.junit.Assert.assertTrue
20 import org.junit.Test
21 import org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.api.NetconfException
22 import kotlin.test.fail
23
24 class RpcMessageUtilsTest {
25
26     @Test
27     fun getConfig() {
28         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
29                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
30                 + "<get-config><source><candidate/></source><filter type=\"subtree\">Test-Filter-Content</filter>"
31                 + "</get-config></rpc>")
32
33         val messageId = "Test-Message-ID"
34         val configType = NetconfDatastore.CANDIDATE.datastore
35         val filterContent = "Test-Filter-Content"
36
37         val result =
38             NetconfMessageUtils.getConfig(messageId, configType, filterContent).replace("[\n\r\t]".toRegex(), "")
39
40         assertTrue(NetconfMessageUtils.validateRPCXML(result))
41         Assert.assertEquals(checkString, result)
42     }
43
44
45     @Test
46     fun editConfig() {
47         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
48                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
49                 + "<get-config><source><candidate/></source><filter type=\"subtree\">Test-Filter-Content</filter>"
50                 + "</get-config></rpc>")
51
52         val messageId = "Test-Message-ID"
53         val configType = NetconfDatastore.CANDIDATE.datastore
54         val filterContent = "Test-Filter-Content"
55
56         val result =
57             NetconfMessageUtils.getConfig(messageId, configType, filterContent).replace("[\n\r\t]".toRegex(), "")
58
59         assertTrue(NetconfMessageUtils.validateRPCXML(result))
60         Assert.assertEquals(checkString, result)
61     }
62
63     @Test
64     fun validate() {
65         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
66                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
67                 + "<validate><source><candidate/></source></validate></rpc>")
68
69         val messageId = "Test-Message-ID"
70         val configType = NetconfDatastore.CANDIDATE.datastore
71
72         val result = NetconfMessageUtils.validate(messageId, configType).replace("[\n\r\t]".toRegex(), "")
73
74         assertTrue(NetconfMessageUtils.validateRPCXML(result))
75         Assert.assertEquals(checkString, result)
76     }
77
78     @Test
79     fun cancelCommit() {
80         val checkString =
81             ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
82                     "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
83                     "<cancel-commit>" +
84                     "<persist-id>1234</persist-id>" +
85                     "</cancel-commit></rpc>")
86
87         val messageId = "Test-Message-ID"
88
89         val cancelCommitPersistId =
90             NetconfMessageUtils.cancelCommit(messageId, "1234").replace("[\n\r\t]".toRegex(), "")
91
92         assertTrue(NetconfMessageUtils.validateRPCXML(cancelCommitPersistId))
93         Assert.assertEquals(checkString, cancelCommitPersistId)
94     }
95
96     @Test
97     fun cancelCommitNoPersistId() {
98         val checkString =
99             ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
100                     "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
101                     "<cancel-commit>" +
102                     "</cancel-commit></rpc>")
103
104         val messageId = "Test-Message-ID"
105
106         val cancelCommitNoPersistId = NetconfMessageUtils.cancelCommit(messageId, "").replace("[\n\r\t]".toRegex(), "")
107
108         assertTrue(NetconfMessageUtils.validateRPCXML(cancelCommitNoPersistId))
109         Assert.assertEquals(checkString, cancelCommitNoPersistId)
110     }
111
112     @Test
113     fun commit() {
114         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
115                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
116                 + "<commit></commit></rpc>")
117
118         val messageId = "Test-Message-ID"
119
120         val commit = NetconfMessageUtils.commit(messageId, false, 0, "", "").replace("[\n\r\t]".toRegex(), "")
121
122         val commitWithPersistButNotConfirmed =
123             NetconfMessageUtils.commit(messageId, false, 0, "1234", "").replace("[\n\r\t]".toRegex(), "")
124
125         assertTrue(NetconfMessageUtils.validateRPCXML(commit))
126         Assert.assertEquals(checkString, commit)
127         Assert.assertEquals(checkString, commitWithPersistButNotConfirmed)
128
129     }
130
131     @Test
132     fun commitPersistId() {
133         val checkString =
134             ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
135                     "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
136                     "<commit>" +
137                     "<persist-id>1234</persist-id>" +
138                     "</commit></rpc>")
139
140         val messageId = "Test-Message-ID"
141
142         val result = NetconfMessageUtils.commit(messageId, false, 30, "", "1234").replace("[\n\r\t]".toRegex(), "")
143         assertTrue(NetconfMessageUtils.validateRPCXML(result))
144         Assert.assertEquals(checkString, result)
145
146         try {
147             NetconfMessageUtils.commit(messageId, true, 30, "", "1234").replace("[\n\r\t]".toRegex(), "")
148         } catch (e: NetconfException) {
149             Assert.assertEquals("Can't proceed <commit> with both confirmed flag and persistId(1234) specified. Only one should be specified.",
150                 e.message)
151             return
152         }
153
154         fail()
155     }
156
157     @Test
158     fun commitPersist() {
159         val checkString =
160             ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
161                     "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
162                     "<commit>" +
163                     "<confirmed/>" +
164                     "<confirm-timeout>30</confirm-timeout>" +
165                     "<persist>1234</persist>" +
166                     "</commit></rpc>")
167
168         val messageId = "Test-Message-ID"
169
170         val result = NetconfMessageUtils.commit(messageId, true, 30, "1234", "").replace("[\n\r\t]".toRegex(), "")
171
172         assertTrue(NetconfMessageUtils.validateRPCXML(result))
173         Assert.assertEquals(checkString, result)
174
175         try {
176             NetconfMessageUtils.commit(messageId, false, 30, "1234", "1234").replace("[\n\r\t]".toRegex(), "")
177         } catch (e: NetconfException) {
178             Assert.assertEquals("Can't proceed <commit> with both persist(1234) and persistId(1234) specified. Only one should be specified.",
179                 e.message)
180             return
181         }
182         fail()
183     }
184
185     @Test
186     fun unlock() {
187         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
188                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
189                 + "<unlock><target><candidate/></target></unlock></rpc>")
190
191         val messageId = "Test-Message-ID"
192         val configType = NetconfDatastore.CANDIDATE.datastore
193
194         val result = NetconfMessageUtils.unlock(messageId, configType).replace("[\n\r\t]".toRegex(), "")
195
196         assertTrue(NetconfMessageUtils.validateRPCXML(result))
197         Assert.assertEquals(checkString, result)
198     }
199
200     @Test
201     fun deleteConfig() {
202         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
203                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
204                 + "<delete-config><target><candidate/></target></delete-config></rpc>")
205
206         val messageId = "Test-Message-ID"
207         val netconfTargetConfig = NetconfDatastore.CANDIDATE.datastore
208
209         val result = NetconfMessageUtils.deleteConfig(messageId, netconfTargetConfig).replace("[\n\r\t]".toRegex(), "")
210
211         assertTrue(NetconfMessageUtils.validateRPCXML(result))
212         Assert.assertEquals(checkString, result)
213     }
214
215     @Test
216     fun discardChanges() {
217         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
218                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
219                 + "<discard-changes/></rpc>")
220
221         val messageId = "Test-Message-ID"
222
223         val result = NetconfMessageUtils.discardChanges(messageId).replace("[\n\r\t]".toRegex(), "")
224
225         assertTrue(NetconfMessageUtils.validateRPCXML(result))
226         Assert.assertEquals(checkString, result)
227     }
228
229     @Test
230     fun lock() {
231         val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
232                 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
233                 + "<lock><target><candidate/></target></lock></rpc>")
234
235         val messageId = "Test-Message-ID"
236         val configType = NetconfDatastore.CANDIDATE.datastore
237         val result = NetconfMessageUtils.lock(messageId, configType).replace("[\n\r\t]".toRegex(), "")
238
239         assertTrue(NetconfMessageUtils.validateRPCXML(result))
240         Assert.assertEquals(checkString, result)
241     }
242
243
244 }