Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prefix_list unit testing code added #209

Merged
merged 1 commit into from
Apr 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 153 additions & 0 deletions tests/unit/modules/network/sonic/fixtures/sonic_prefix_lists.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
merged_01:
module_args:
config:
- name: pfx1
afi: "ipv4"
prefixes:
- sequence: 10
prefix: "1.2.3.4/24"
action: "permit"
ge: 26
le: 30
- name: pfx6
afi: "ipv6"
prefixes:
- sequence: 25
action: "deny"
prefix: "40::300/124"
existing_prefix_lists_config:
- path: "data/openconfig-interfaces:interfaces"
response:
code: 200
value:
openconfig-interfaces:interfaces:
interface:
- name: 'Eth1/1'
config:
mtu: 2000
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets"
response:
code: 200
expected_config_requests:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set"
method: "patch"
data:
openconfig-routing-policy:prefix-set:
- name: pfx1
config:
name: pfx1
mode: IPV4
openconfig-routing-policy-ext:extended-prefixes:
extended-prefix:
- ip-prefix: 1.2.3.4/24
sequence-number: 10
masklength-range: 26..30
config:
sequence-number: 10
ip-prefix: 1.2.3.4/24
masklength-range: 26..30
openconfig-routing-policy-ext:action: PERMIT
- name: pfx6
config:
name: pfx6
mode: IPV6
openconfig-routing-policy-ext:extended-prefixes:
extended-prefix:
- ip-prefix: 40::300/124
sequence-number: 25
masklength-range: exact
config:
sequence-number: 25
ip-prefix: 40::300/124
masklength-range: exact
openconfig-routing-policy-ext:action: DENY
deleted_01:
module_args:
state: deleted
existing_prefix_lists_config:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets"
response:
code: 200
value:
openconfig-routing-policy:prefix-sets:
prefix-set:
- config:
mode: IPV4
name: pfx1
openconfig-routing-policy-ext:extended-prefixes:
extended-prefix:
- config:
action: PERMIT
ip-prefix: 1.2.3.4/8
masklength-range: 8..16
sequence-number: 10
ip-prefix: 1.2.3.4/8
masklength-range: 8..16
sequence-number: 10
name: pfx1
expected_config_requests:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets"
method: "delete"
data:

deleted_02:
module_args:
state: deleted
config:
- name: pfx1
afi: "ipv4"
prefixes:
- sequence: 10
prefix: "1.2.3.4/8"
action: "permit"
ge: 9
le: 16
- name: pfx2
afi: "ipv6"
prefixes:
- sequence: 11
action: "permit"
prefix: "11::22/124"
existing_prefix_lists_config:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets"
response:
code: 200
value:
openconfig-routing-policy:prefix-sets:
prefix-set:
- config:
mode: IPV4
name: pfx1
openconfig-routing-policy-ext:extended-prefixes:
extended-prefix:
- config:
action: PERMIT
ip-prefix: 1.2.3.4/8
masklength-range: 9..16
sequence-number: 10
ip-prefix: 1.2.3.4/8
masklength-range: 9..16
sequence-number: 10
name: pfx1
- config:
mode: IPV6
name: pfx2
openconfig-routing-policy-ext:extended-prefixes:
extended-prefix:
- config:
action: PERMIT
ip-prefix: 11::22/124
masklength-range: exact
sequence-number: 11
ip-prefix: 11::22/124
masklength-range: exact
sequence-number: 11
name: pfx2
expected_config_requests:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set=pfx1/openconfig-routing-policy-ext:extended-prefixes/extended-prefix=10,1.2.3.4%2F8,9..16"
method: "delete"
data:
- path: "data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set=pfx2/openconfig-routing-policy-ext:extended-prefixes/extended-prefix=11,11::22%2F124,exact"
method: "delete"
data:
69 changes: 69 additions & 0 deletions tests/unit/modules/network/sonic/test_sonic_prefix_lists.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from __future__ import absolute_import, division, print_function

__metaclass__ = type

from ansible_collections.dellemc.enterprise_sonic.tests.unit.compat.mock import (
patch,
)
from ansible_collections.dellemc.enterprise_sonic.plugins.modules import (
sonic_prefix_lists,
)
from ansible_collections.dellemc.enterprise_sonic.tests.unit.modules.utils import (
set_module_args,
)
from .sonic_module import TestSonicModule


class TestSonicInterfacesModule(TestSonicModule):
module = sonic_prefix_lists

@classmethod
def setUpClass(cls):
cls.mock_facts_edit_config = patch(
"ansible_collections.dellemc.enterprise_sonic.plugins.module_utils.network.sonic.facts.prefix_lists.prefix_lists.edit_config"
)
cls.mock_config_edit_config = patch(
"ansible_collections.dellemc.enterprise_sonic.plugins.module_utils.network.sonic.config.prefix_lists.prefix_lists.edit_config"
)
cls.mock_get_interface_naming_mode = patch(
"ansible_collections.dellemc.enterprise_sonic.plugins.module_utils.network.sonic.utils.utils.get_device_interface_naming_mode"
)
cls.fixture_data = cls.load_fixtures('sonic_prefix_lists.yaml')

def setUp(self):
super(TestSonicInterfacesModule, self).setUp()
self.facts_edit_config = self.mock_facts_edit_config.start()
self.config_edit_config = self.mock_config_edit_config.start()

self.facts_edit_config.side_effect = self.facts_side_effect
self.config_edit_config.side_effect = self.config_side_effect

self.get_interface_naming_mode = self.mock_get_interface_naming_mode.start()
self.get_interface_naming_mode.return_value = 'standard'

def tearDown(self):
super(TestSonicInterfacesModule, self).tearDown()
self.mock_facts_edit_config.stop()
self.mock_config_edit_config.stop()
self.mock_get_interface_naming_mode.stop()

def test_sonic_prefix_lists_merged_01(self):
set_module_args(self.fixture_data['merged_01']['module_args'])
self.initialize_facts_get_requests(self.fixture_data['merged_01']['existing_prefix_lists_config'])
self.initialize_config_requests(self.fixture_data['merged_01']['expected_config_requests'])
result = self.execute_module(changed=True)
self.validate_config_requests()

def test_sonic_prefix_lists_deleted_01(self):
set_module_args(self.fixture_data['deleted_01']['module_args'])
self.initialize_facts_get_requests(self.fixture_data['deleted_01']['existing_prefix_lists_config'])
self.initialize_config_requests(self.fixture_data['deleted_01']['expected_config_requests'])
result = self.execute_module(changed=True)
self.validate_config_requests()

def test_sonic_prefix_lists_deleted_02(self):
set_module_args(self.fixture_data['deleted_02']['module_args'])
self.initialize_facts_get_requests(self.fixture_data['deleted_02']['existing_prefix_lists_config'])
self.initialize_config_requests(self.fixture_data['deleted_02']['expected_config_requests'])
result = self.execute_module(changed=True)
self.validate_config_requests()