1# -*- coding: utf-8 -*- 2# Copyright 2020 Red Hat 3# GNU General Public License v3.0+ 4# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 5 6############################################# 7# WARNING # 8############################################# 9# 10# This file is auto generated by the resource 11# module builder playbook. 12# 13# Do not edit this file manually. 14# 15# Changes to this file will be over written 16# by the resource module builder. 17# 18# Changes should be made in the model used to 19# generate this file or in the resource module 20# builder template. 21# 22############################################# 23 24from __future__ import absolute_import, division, print_function 25 26__metaclass__ = type 27 28from ansible_collections.junipernetworks.junos.tests.unit.compat.mock import ( 29 patch, 30 MagicMock, 31) 32from ansible_collections.junipernetworks.junos.plugins.modules import ( 33 junos_ospfv3, 34) 35from ansible_collections.junipernetworks.junos.tests.unit.modules.utils import ( 36 set_module_args, 37) 38from .junos_module import TestJunosModule, load_fixture 39 40 41class TestJunosOspfv3Module(TestJunosModule): 42 module = junos_ospfv3 43 44 def setUp(self): 45 super(TestJunosOspfv3Module, self).setUp() 46 self.mock_lock_configuration = patch( 47 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.junos.lock_configuration" 48 ) 49 self.lock_configuration = self.mock_lock_configuration.start() 50 self.mock_unlock_configuration = patch( 51 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.junos.unlock_configuration" 52 ) 53 self.unlock_configuration = self.mock_unlock_configuration.start() 54 self.mock_load_config = patch( 55 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.config.ospfv3.ospfv3.load_config" 56 ) 57 self.load_config = self.mock_load_config.start() 58 59 self.mock_validate_config = patch( 60 "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils.validate_config" 61 ) 62 self.validate_config = self.mock_validate_config.start() 63 64 self.mock_commit_configuration = patch( 65 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.config.ospfv3.ospfv3.commit_configuration" 66 ) 67 self.mock_commit_configuration = self.mock_commit_configuration.start() 68 69 self.mock_get_connection = patch( 70 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.facts.ospfv3.ospfv3." 71 "Ospfv3Facts.get_connection" 72 ) 73 self.get_connection = self.mock_get_connection.start() 74 75 self.conn = self.get_connection() 76 self.conn.get = MagicMock() 77 78 self.mock_get_xml_dict = patch( 79 "ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.facts.ospfv3.ospfv3.Ospfv3Facts._get_xml_dict" 80 ) 81 self._get_xml_dict = self.mock_get_xml_dict.start() 82 83 def tearDown(self): 84 super(TestJunosOspfv3Module, self).tearDown() 85 self.mock_get_connection.stop() 86 self.mock_load_config.stop() 87 self.mock_validate_config.stop() 88 self.mock_lock_configuration.stop() 89 self.mock_unlock_configuration.stop() 90 self.mock_commit_configuration.stop() 91 92 def load_fixtures(self, commands=None, format="text", changed=False): 93 self.get_connection.return_value = load_fixture( 94 "junos_ospfv3_config.cfg" 95 ) 96 if changed: 97 self.load_config.return_value = load_fixture( 98 "get_configuration_rpc_reply_diff.txt" 99 ) 100 else: 101 self.load_config.return_value = None 102 103 def test_junos_ospfv3_merged(self): 104 set_module_args( 105 dict( 106 config=[ 107 dict( 108 router_id="10.200.16.75", 109 areas=[ 110 dict( 111 area_id="0.0.0.100", 112 stub=dict(default_metric=200, set=True), 113 interfaces=[ 114 dict( 115 name="so-0/0/0.0", priority=3, metric=5 116 ) 117 ], 118 ) 119 ], 120 ) 121 ], 122 state="merged", 123 ) 124 ) 125 commands = [ 126 '<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:ospf3>' 127 "<nc:area><nc:name>0.0.0.100</nc:name><nc:interface><nc:name>so-0/0/0.0</nc:name>" 128 "<nc:priority>3</nc:priority><nc:metric>5</nc:metric></nc:interface><nc:stub>" 129 "<nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3></nc:protocols>", 130 '<nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">' 131 "<nc:router-id>10.200.16.75</nc:router-id></nc:routing-options>", 132 ] 133 result = self.execute_module(changed=True) 134 self.assertEqual(sorted(result["commands"]), sorted(commands)) 135 136 def test_junos_ospfv3_merged_idempotent(self): 137 self.get_connection.return_value = load_fixture( 138 "junos_ospfv3_config.cfg" 139 ) 140 src = load_fixture("junos_ospfv3.cfg", content="str") 141 set_module_args(dict(src=src)) 142 set_module_args( 143 dict( 144 config=[ 145 dict( 146 router_id="30", 147 areas=[ 148 dict( 149 area_id="100", 150 stub=dict(default_metric=10, set=True), 151 interfaces=[ 152 dict( 153 name="so-0/0/0.0", priority=3, metric=5 154 ) 155 ], 156 ) 157 ], 158 ) 159 ], 160 state="merged", 161 ) 162 ) 163 self.execute_module(changed=False, commands=[]) 164 165 def test_junos_ospfv3_replaced(self): 166 set_module_args( 167 dict( 168 config=[ 169 dict( 170 router_id="10.200.16.75", 171 areas=[ 172 dict( 173 area_id="0.0.0.100", 174 stub=dict(default_metric=200, set=True), 175 interfaces=[ 176 dict( 177 name="so-0/0/0.0", priority=3, metric=5 178 ) 179 ], 180 ) 181 ], 182 ) 183 ], 184 state="replaced", 185 ) 186 ) 187 result = self.execute_module(changed=True) 188 commands = [ 189 '<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:ospf3>' 190 "<nc:area><nc:name>0.0.0.100</nc:name><nc:interface><nc:name>so-0/0/0.0</nc:name>" 191 "<nc:priority>3</nc:priority>" 192 "<nc:metric>5</nc:metric></nc:interface>" 193 "<nc:stub><nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3>" 194 "<nc:ospf3><nc:area><nc:name>0.0.0.100</nc:name>" 195 "<nc:interface><nc:name>so-0/0/0.0</nc:name>" 196 "<nc:priority>3</nc:priority><nc:metric>5</nc:metric></nc:interface>" 197 "<nc:stub><nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3></nc:protocols>", 198 '<nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">' 199 "<nc:router-id>10.200.16.75</nc:router-id><nc:router-id>10.200.16.75</nc:router-id></nc:routing-options>", 200 ] 201 self.assertEqual(sorted(result["commands"]), commands) 202 203 def test_junos_ospfv3_replaced_idempotent(self): 204 self.get_connection.return_value = load_fixture( 205 "junos_ospfv3_config.cfg" 206 ) 207 src = load_fixture("junos_ospfv3.cfg", content="str") 208 set_module_args(dict(src=src)) 209 set_module_args( 210 dict( 211 config=[ 212 dict( 213 router_id="30", 214 areas=[ 215 dict( 216 area_id="100", 217 stub=dict(default_metric=10, set=True), 218 interfaces=[ 219 dict( 220 name="so-0/0/0.0", priority=3, metric=5 221 ) 222 ], 223 ) 224 ], 225 ) 226 ], 227 state="replaced", 228 ) 229 ) 230 231 self.execute_module(changed=False, commands=[]) 232 233 def test_junos_ospfv3_overridden(self): 234 set_module_args( 235 dict( 236 config=[ 237 dict( 238 router_id="10.200.16.75", 239 areas=[ 240 dict( 241 area_id="0.0.0.100", 242 stub=dict(default_metric=200, set=True), 243 interfaces=[ 244 dict( 245 name="so-0/0/0.0", priority=3, metric=5 246 ) 247 ], 248 ) 249 ], 250 ) 251 ], 252 state="overridden", 253 ) 254 ) 255 commands = [ 256 '<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:ospf3 delete="delete"/><nc:ospf3>' 257 "<nc:area><nc:name>0.0.0.100</nc:name><nc:interface><nc:name>so-0/0/0.0</nc:name>" 258 "<nc:priority>3</nc:priority>" 259 "<nc:metric>5</nc:metric></nc:interface>" 260 "<nc:stub><nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3></nc:protocols>", 261 '<nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">' 262 "<nc:router-id>10.200.16.75</nc:router-id></nc:routing-options>", 263 ] 264 result = self.execute_module(changed=True) 265 self.assertEqual(sorted(result["commands"]), commands) 266 267 def test_junos_ospfv3_overridden_idempotent(self): 268 self.get_connection.return_value = load_fixture( 269 "junos_ospfv3_config.cfg" 270 ) 271 src = load_fixture("junos_ospfv3.cfg", content="str") 272 set_module_args(dict(src=src)) 273 set_module_args( 274 dict( 275 config=[ 276 dict( 277 router_id="30", 278 areas=[ 279 dict( 280 area_id="100", 281 stub=dict(default_metric=10, set=True), 282 interfaces=[ 283 dict( 284 name="so-0/0/0.0", priority=3, metric=5 285 ) 286 ], 287 ) 288 ], 289 ) 290 ], 291 state="overridden", 292 ) 293 ) 294 295 self.execute_module(changed=False, commands=[]) 296 297 def test_junos_ospfv3_delete(self): 298 set_module_args( 299 dict( 300 config=[ 301 dict( 302 router_id="10.200.16.75", 303 areas=[ 304 dict( 305 area_id="0.0.0.100", 306 stub=dict(default_metric=200, set=True), 307 interfaces=[dict(name="so-0/0/0.0")], 308 ) 309 ], 310 ) 311 ], 312 state="deleted", 313 ) 314 ) 315 316 commands = [ 317 '<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:ospf3>' 318 "<nc:area><nc:name>0.0.0.100</nc:name><nc:interface><nc:name>so-0/0/0.0</nc:name>" 319 "</nc:interface><nc:stub><nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3></nc:protocols>", 320 '<nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">' 321 "<nc:router-id>10.200.16.75</nc:router-id></nc:routing-options>", 322 ] 323 324 result = self.execute_module(changed=True) 325 self.assertEqual(sorted(result["commands"]), commands) 326 327 def test_junos_ospfv3_delete_idempotent(self): 328 set_module_args( 329 dict( 330 config=[ 331 dict( 332 router_id="10.200.16.70", 333 areas=[ 334 dict( 335 area_id="0.0.0.100", 336 stub=dict(default_metric=200, set=True), 337 interfaces=[dict(name="so-0/0/0.0")], 338 ) 339 ], 340 ) 341 ], 342 state="deleted", 343 ) 344 ) 345 self.execute_module(changed=False, commands=[]) 346 347 def test_junos_ospfv3_parsed(self): 348 349 set_module_args( 350 dict( 351 running_config='<?xml version="1.0" encoding="UTF-8"?>\n' 352 '<rpc-reply message-id="urn:uuid:0cadb4e8-5bba-47f4-986e-72906227007f">\n' 353 '<configuration changed-seconds="1590139550" changed-localtime="2020-05-22 09:25:50 UTC">' 354 "\n<protocols>\n<ospf3>\n<area>\n<name>0.0.0.100</name>\n<stub>\n" 355 "<default-metric>200</default-metric>\n</stub>\n<interface>\n<name>so-0/0/0.0</name>" 356 "\n<passive></passive>\n<metric>5</metric>\n<priority>3</priority>\n" 357 "</interface>\n</area>\n</ospf3>\n</protocols>\n<routing-options>\n" 358 "<router-id>10.200.16.75</router-id>\n</routing-options>\n" 359 "</configuration>\n</rpc-reply>", 360 state="parsed", 361 ) 362 ) 363 result = self.execute_module(changed=False) 364 self.assertEqual([], result["parsed"]) 365 366 def test_junos_ospfv3_rendered(self): 367 set_module_args( 368 dict( 369 config=[ 370 dict( 371 router_id="10.200.16.75", 372 areas=[ 373 dict( 374 area_id="0.0.0.100", 375 stub=dict(default_metric=200, set=True), 376 interfaces=[ 377 dict( 378 name="so-0/0/0.0", priority=3, metric=5 379 ) 380 ], 381 ) 382 ], 383 ) 384 ], 385 state="rendered", 386 ) 387 ) 388 commands = ( 389 '<nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:ospf3>' 390 "<nc:area><nc:name>0.0.0.100</nc:name><nc:interface><nc:name>so-0/0/0.0</nc:name>" 391 "<nc:priority>3</nc:priority><nc:metric>5</nc:metric></nc:interface><nc:stub>" 392 "<nc:default-metric>200</nc:default-metric></nc:stub></nc:area></nc:ospf3></nc:protocols>" 393 ) 394 self.execute_module(changed=False, commands=commands) 395