2 * Copyright © 2017-2018 AT&T Intellectual Property.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.utils
18 import org.junit.Assert
19 import org.junit.Assert.assertTrue
21 import org.onap.ccsdk.apps.blueprintsprocessor.functions.netconf.executor.api.NetconfException
22 import kotlin.test.fail
24 class RpcMessageUtilsTest {
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>")
33 val messageId = "Test-Message-ID"
34 val configType = NetconfDatastore.CANDIDATE.datastore
35 val filterContent = "Test-Filter-Content"
38 NetconfMessageUtils.getConfig(messageId, configType, filterContent).replace("[\n\r\t]".toRegex(), "")
40 assertTrue(NetconfMessageUtils.validateRPCXML(result))
41 Assert.assertEquals(checkString, result)
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 + "<edit-config><target><candidate/></target><default-operation>Test-Default-Operation</default-operation>"
50 + "<config xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">Test-Filter-Content</config></edit-config></rpc>")
52 val messageId = "Test-Message-ID"
53 val configType = NetconfDatastore.CANDIDATE.datastore
54 val filterContent = "Test-Filter-Content"
55 val defaultOperation = "Test-Default-Operation"
58 NetconfMessageUtils.editConfig(messageId, configType, defaultOperation, filterContent).replace("[\n\r\t]".toRegex(), "")
60 assertTrue(NetconfMessageUtils.validateRPCXML(result))
61 Assert.assertEquals(checkString, result)
66 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
67 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
68 + "<validate><source><candidate/></source></validate></rpc>")
70 val messageId = "Test-Message-ID"
71 val configType = NetconfDatastore.CANDIDATE.datastore
73 val result = NetconfMessageUtils.validate(messageId, configType).replace("[\n\r\t]".toRegex(), "")
75 assertTrue(NetconfMessageUtils.validateRPCXML(result))
76 Assert.assertEquals(checkString, result)
82 ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
83 "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
85 "<persist-id>1234</persist-id>" +
86 "</cancel-commit></rpc>")
88 val messageId = "Test-Message-ID"
90 val cancelCommitPersistId =
91 NetconfMessageUtils.cancelCommit(messageId, "1234").replace("[\n\r\t]".toRegex(), "")
93 assertTrue(NetconfMessageUtils.validateRPCXML(cancelCommitPersistId))
94 Assert.assertEquals(checkString, cancelCommitPersistId)
98 fun cancelCommitNoPersistId() {
100 ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
101 "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
103 "</cancel-commit></rpc>")
105 val messageId = "Test-Message-ID"
107 val cancelCommitNoPersistId = NetconfMessageUtils.cancelCommit(messageId, "").replace("[\n\r\t]".toRegex(), "")
109 assertTrue(NetconfMessageUtils.validateRPCXML(cancelCommitNoPersistId))
110 Assert.assertEquals(checkString, cancelCommitNoPersistId)
115 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
116 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
117 + "<commit></commit></rpc>")
119 val messageId = "Test-Message-ID"
121 val commit = NetconfMessageUtils.commit(messageId, false, 0, "", "").replace("[\n\r\t]".toRegex(), "")
123 val commitWithPersistButNotConfirmed =
124 NetconfMessageUtils.commit(messageId, false, 0, "1234", "").replace("[\n\r\t]".toRegex(), "")
126 assertTrue(NetconfMessageUtils.validateRPCXML(commit))
127 Assert.assertEquals(checkString, commit)
128 Assert.assertEquals(checkString, commitWithPersistButNotConfirmed)
133 fun commitPersistId() {
135 ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
136 "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
138 "<persist-id>1234</persist-id>" +
141 val messageId = "Test-Message-ID"
143 val result = NetconfMessageUtils.commit(messageId, false, 30, "", "1234").replace("[\n\r\t]".toRegex(), "")
144 assertTrue(NetconfMessageUtils.validateRPCXML(result))
145 Assert.assertEquals(checkString, result)
148 NetconfMessageUtils.commit(messageId, true, 30, "", "1234").replace("[\n\r\t]".toRegex(), "")
149 } catch (e: NetconfException) {
150 Assert.assertEquals("Can't proceed <commit> with both confirmed flag and persistId(1234) specified. Only one should be specified.",
159 fun commitPersist() {
161 ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
162 "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
165 "<confirm-timeout>30</confirm-timeout>" +
166 "<persist>1234</persist>" +
169 val messageId = "Test-Message-ID"
171 val result = NetconfMessageUtils.commit(messageId, true, 30, "1234", "").replace("[\n\r\t]".toRegex(), "")
173 assertTrue(NetconfMessageUtils.validateRPCXML(result))
174 Assert.assertEquals(checkString, result)
177 NetconfMessageUtils.commit(messageId, false, 30, "1234", "1234").replace("[\n\r\t]".toRegex(), "")
178 } catch (e: NetconfException) {
179 Assert.assertEquals("Can't proceed <commit> with both persist(1234) and persistId(1234) specified. Only one should be specified.",
188 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
189 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
190 + "<unlock><target><candidate/></target></unlock></rpc>")
192 val messageId = "Test-Message-ID"
193 val configType = NetconfDatastore.CANDIDATE.datastore
195 val result = NetconfMessageUtils.unlock(messageId, configType).replace("[\n\r\t]".toRegex(), "")
197 assertTrue(NetconfMessageUtils.validateRPCXML(result))
198 Assert.assertEquals(checkString, result)
203 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
204 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
205 + "<delete-config><target><candidate/></target></delete-config></rpc>")
207 val messageId = "Test-Message-ID"
208 val netconfTargetConfig = NetconfDatastore.CANDIDATE.datastore
210 val result = NetconfMessageUtils.deleteConfig(messageId, netconfTargetConfig).replace("[\n\r\t]".toRegex(), "")
212 assertTrue(NetconfMessageUtils.validateRPCXML(result))
213 Assert.assertEquals(checkString, result)
217 fun discardChanges() {
218 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
219 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
220 + "<discard-changes/></rpc>")
222 val messageId = "Test-Message-ID"
224 val result = NetconfMessageUtils.discardChanges(messageId).replace("[\n\r\t]".toRegex(), "")
226 assertTrue(NetconfMessageUtils.validateRPCXML(result))
227 Assert.assertEquals(checkString, result)
232 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
233 + "<rpc message-id=\"Test-Message-ID\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
234 + "<lock><target><candidate/></target></lock></rpc>")
236 val messageId = "Test-Message-ID"
237 val configType = NetconfDatastore.CANDIDATE.datastore
238 val result = NetconfMessageUtils.lock(messageId, configType).replace("[\n\r\t]".toRegex(), "")
240 assertTrue(NetconfMessageUtils.validateRPCXML(result))
241 Assert.assertEquals(checkString, result)
246 val checkString = ("testmessage")
248 var messageId = "message-id=\"testmessage\""
249 var result = NetconfMessageUtils.getMsgId(messageId).replace("[\n\r\t]".toRegex(), "")
250 Assert.assertEquals(checkString, result)
252 messageId = "message-id=\"hello\""
253 result = NetconfMessageUtils.getMsgId(messageId).replace("[\n\r\t]".toRegex(), "")
254 Assert.assertEquals("hello", result)
256 messageId = "message-id"
257 result = NetconfMessageUtils.getMsgId(messageId).replace("[\n\r\t]".toRegex(), "")
258 Assert.assertEquals("", result)
262 fun createHelloString() {
263 val checkString = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?><hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> "
264 +"<capabilities> <capability>hi</capability> <capability>hello</capability> </capabilities></hello>]]>]]>")
266 val capability = listOf<String>("hi", "hello")
268 val result = NetconfMessageUtils.createHelloString(capability).replace("[\n\r\t]".toRegex(), "")
269 Assert.assertEquals(checkString, result)
273 fun validateChunkedFraming() {
274 val reply = ("hello")
275 val result = NetconfMessageUtils.validateChunkedFraming(reply)
276 Assert.assertFalse(result)
281 assertTrue(NetconfMessageUtils.checkReply("ok"))
285 fun formatRPCRequest(){
286 val checkString = ("#199" +
287 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <capabilities> <capability>hi</capability> <capability>hello</capability> </capabilities></hello>" +
290 val request = ("<?xml version=\"1.0\" encoding=\"UTF-8\"?><hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> "
291 +"<capabilities> <capability>hi</capability> <capability>hello</capability> </capabilities></hello>]]>]]>")
293 val messageId = "Test-Message-ID"
295 val capabilities = setOf<String>("hi", "hello","urn:ietf:params:netconf:base:1.1")
297 val result = NetconfMessageUtils.formatRPCRequest(request,messageId,capabilities).replace("[\n\r\t]".toRegex(), "")
298 Assert.assertEquals(checkString, result)