cisco_node_utils 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +126 -1
- data/README.md +19 -12
- data/Rakefile +1 -0
- data/bin/git/hooks/commit-msg/enforce_style +8 -0
- data/cisco_node_utils.gemspec +4 -3
- data/docs/README-develop-best-practices.md +127 -109
- data/docs/README-develop-node-utils-APIs.md +47 -39
- data/docs/template-router.rb +3 -7
- data/lib/.rubocop.yml +4 -4
- data/lib/cisco_node_utils.rb +1 -1
- data/lib/cisco_node_utils/aaa_authentication_login.rb +96 -0
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +133 -0
- data/lib/cisco_node_utils/aaa_authorization_service.rb +150 -0
- data/lib/cisco_node_utils/ace.rb +196 -0
- data/lib/cisco_node_utils/acl.rb +100 -0
- data/lib/cisco_node_utils/bgp.rb +301 -163
- data/lib/cisco_node_utils/bgp_af.rb +187 -19
- data/lib/cisco_node_utils/bgp_neighbor.rb +18 -33
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +25 -48
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +23 -4
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +593 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +31 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +43 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +242 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +164 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +131 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +179 -0
- data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +34 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +172 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fex.yaml +9 -0
- data/lib/cisco_node_utils/cmd_ref/images.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +339 -0
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +28 -0
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +61 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +54 -0
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +32 -0
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/memory.yaml +13 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +74 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +40 -0
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +69 -0
- data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +64 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/show_system.yaml +5 -0
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +72 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +23 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +50 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +51 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +55 -0
- data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +11 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +18 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/system.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +49 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +56 -0
- data/lib/cisco_node_utils/cmd_ref/vni.yaml +76 -0
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +197 -0
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/vtp.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +60 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +39 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +13 -0
- data/lib/cisco_node_utils/command_reference.rb +359 -187
- data/lib/cisco_node_utils/configparser_lib.rb +1 -1
- data/lib/cisco_node_utils/dns_domain.rb +19 -5
- data/lib/cisco_node_utils/domain_name.rb +4 -8
- data/lib/cisco_node_utils/evpn_vni.rb +157 -0
- data/lib/cisco_node_utils/fabricpath_global.rb +388 -0
- data/lib/cisco_node_utils/fabricpath_topology.rb +150 -0
- data/lib/cisco_node_utils/feature.rb +111 -0
- data/lib/cisco_node_utils/interface.rb +390 -97
- data/lib/cisco_node_utils/interface_channel_group.rb +124 -0
- data/lib/cisco_node_utils/interface_ospf.rb +11 -34
- data/lib/cisco_node_utils/interface_portchannel.rb +157 -0
- data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
- data/lib/cisco_node_utils/name_server.rb +1 -1
- data/lib/cisco_node_utils/node.rb +55 -249
- data/lib/cisco_node_utils/node_util.rb +5 -1
- data/lib/cisco_node_utils/ntp_config.rb +2 -2
- data/lib/cisco_node_utils/ntp_server.rb +14 -5
- data/lib/cisco_node_utils/overlay_global.rb +153 -0
- data/lib/cisco_node_utils/pim.rb +124 -0
- data/lib/cisco_node_utils/pim_group_list.rb +108 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +102 -0
- data/lib/cisco_node_utils/platform.rb +8 -9
- data/lib/cisco_node_utils/portchannel_global.rb +277 -0
- data/lib/cisco_node_utils/radius_global.rb +9 -19
- data/lib/cisco_node_utils/radius_server.rb +31 -41
- data/lib/cisco_node_utils/radius_server_group.rb +117 -0
- data/lib/cisco_node_utils/router_ospf.rb +1 -1
- data/lib/cisco_node_utils/router_ospf_vrf.rb +14 -19
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +158 -0
- data/lib/cisco_node_utils/snmpcommunity.rb +3 -5
- data/lib/cisco_node_utils/snmpgroup.rb +1 -1
- data/lib/cisco_node_utils/snmpnotification.rb +57 -0
- data/lib/cisco_node_utils/snmpserver.rb +8 -17
- data/lib/cisco_node_utils/snmpuser.rb +67 -28
- data/lib/cisco_node_utils/syslog_server.rb +3 -9
- data/lib/cisco_node_utils/syslog_settings.rb +2 -10
- data/lib/cisco_node_utils/tacacs_server.rb +9 -14
- data/lib/cisco_node_utils/tacacs_server_group.rb +145 -0
- data/lib/cisco_node_utils/tacacs_server_host.rb +5 -9
- data/lib/cisco_node_utils/vdc.rb +88 -0
- data/lib/cisco_node_utils/version.rb +5 -2
- data/lib/cisco_node_utils/vlan.rb +71 -8
- data/lib/cisco_node_utils/vni.rb +227 -0
- data/lib/cisco_node_utils/vpc.rb +377 -0
- data/lib/cisco_node_utils/vrf.rb +60 -9
- data/lib/cisco_node_utils/vrf_af.rb +191 -0
- data/lib/cisco_node_utils/vtp.rb +8 -6
- data/lib/cisco_node_utils/vxlan_vtep.rb +151 -0
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +234 -0
- data/lib/cisco_node_utils/yum.rb +1 -1
- data/tests/.rubocop.yml +1 -1
- data/tests/basetest.rb +16 -7
- data/tests/ciscotest.rb +55 -13
- data/tests/cmd_config.yaml +2 -2
- data/tests/platform_info.rb +3 -2
- data/tests/test_aaa_authentication_login.rb +219 -0
- data/tests/test_aaa_authentication_login_service.rb +759 -0
- data/tests/test_aaa_authorization_service.rb +1041 -0
- data/tests/test_ace.rb +160 -0
- data/tests/test_acl.rb +176 -0
- data/tests/test_bgp_af.rb +269 -13
- data/tests/test_bgp_neighbor.rb +38 -40
- data/tests/test_bgp_neighbor_af.rb +92 -32
- data/tests/test_command_config.rb +5 -5
- data/tests/test_command_reference.rb +284 -101
- data/tests/test_dns_domain.rb +1 -1
- data/tests/test_domain_name.rb +1 -1
- data/tests/test_evpn_vni.rb +106 -0
- data/tests/test_fabricpath_global.rb +243 -0
- data/tests/test_fabricpath_topology.rb +98 -0
- data/tests/test_interface.rb +292 -74
- data/tests/test_interface_channel_group.rb +74 -0
- data/tests/test_interface_ospf.rb +9 -4
- data/tests/test_interface_portchannel.rb +105 -0
- data/tests/test_interface_service_vni.rb +232 -0
- data/tests/test_interface_svi.rb +77 -62
- data/tests/test_interface_switchport.rb +17 -5
- data/tests/test_name_server.rb +1 -1
- data/tests/test_node.rb +1 -1
- data/tests/test_node_ext.rb +10 -20
- data/tests/test_ntp_config.rb +1 -1
- data/tests/test_ntp_server.rb +18 -6
- data/tests/test_overlay_global.rb +102 -0
- data/tests/test_pim.rb +177 -0
- data/tests/test_pim_group_list.rb +181 -0
- data/tests/test_pim_rp_address.rb +153 -0
- data/tests/test_platform.rb +3 -3
- data/tests/test_portchannel_global.rb +202 -0
- data/tests/test_radius_global.rb +1 -1
- data/tests/test_radius_server.rb +92 -57
- data/tests/test_radius_server_group.rb +149 -0
- data/tests/test_router_bgp.rb +283 -112
- data/tests/test_router_ospf.rb +2 -2
- data/tests/test_router_ospf_vrf.rb +4 -4
- data/tests/test_snmp_notification_receiver.rb +167 -0
- data/tests/test_snmpcommunity.rb +1 -1
- data/tests/test_snmpgroup.rb +1 -1
- data/tests/test_snmpnotification.rb +72 -0
- data/tests/test_snmpserver.rb +29 -105
- data/tests/test_snmpuser.rb +32 -30
- data/tests/test_syslog_server.rb +36 -10
- data/tests/test_syslog_settings.rb +1 -1
- data/tests/test_tacacs_server.rb +1 -1
- data/tests/test_tacacs_server_group.rb +405 -0
- data/tests/test_tacacs_server_host.rb +1 -1
- data/tests/test_vdc.rb +78 -0
- data/tests/test_vlan.rb +74 -19
- data/tests/test_vlan_mt_full.rb +95 -0
- data/tests/test_vni.rb +106 -0
- data/tests/test_vpc.rb +361 -0
- data/tests/test_vrf.rb +172 -29
- data/tests/test_vtp.rb +1 -1
- data/tests/test_vxlan_vtep.rb +214 -0
- data/tests/test_vxlan_vtep_vni.rb +201 -0
- data/tests/test_yum.rb +1 -1
- metadata +120 -11
- data/lib/cisco_node_utils/README_YAML.md +0 -325
- data/lib/cisco_node_utils/command_reference_common.yaml +0 -1051
- data/lib/cisco_node_utils/command_reference_common_bgp.yaml +0 -535
- data/lib/cisco_node_utils/command_reference_n3064.yaml +0 -13
- data/lib/cisco_node_utils/command_reference_n7k.yaml +0 -52
- data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -26
- data/tests/platform_info.yaml +0 -10
data/tests/test_snmpuser.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (c) 2013-
|
|
1
|
+
# Copyright (c) 2013-2016 Cisco and/or its affiliates.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -111,7 +111,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
def test_engine_id_valid_and_none
|
|
114
|
-
create_user('tester', 'auth sha
|
|
114
|
+
create_user('tester', 'auth sha XXWWPass0wrf engineID 22:22:22:22:23:22')
|
|
115
115
|
create_user('tester2')
|
|
116
116
|
|
|
117
117
|
snmpusers = SnmpUser.users
|
|
@@ -175,14 +175,16 @@ class TestSnmpUser < CiscoTestCase
|
|
|
175
175
|
# destroy the user
|
|
176
176
|
destroy_user(snmpuser)
|
|
177
177
|
# check user got removed.
|
|
178
|
+
sleep(5)
|
|
179
|
+
node.cache_flush
|
|
178
180
|
refute_show_match(command: 'show run snmp all | no-more',
|
|
179
181
|
pattern: user_pat(name, group))
|
|
180
182
|
assert_nil(SnmpUser.users[name])
|
|
181
183
|
end
|
|
182
184
|
|
|
183
185
|
def test_snmpuser_auth_password_equal_invalid_param
|
|
184
|
-
name = '
|
|
185
|
-
auth_pw = '
|
|
186
|
+
name = 'testV3PwEqualInvalid2'
|
|
187
|
+
auth_pw = 'TeSt297534'
|
|
186
188
|
create_user(name, "network-admin auth md5 #{auth_pw}")
|
|
187
189
|
|
|
188
190
|
# get users
|
|
@@ -191,7 +193,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
191
193
|
|
|
192
194
|
def test_snmpuser_auth_priv_password_equal_invalid_param
|
|
193
195
|
name = 'testV3PwEqualInvalid'
|
|
194
|
-
auth_pw = '
|
|
196
|
+
auth_pw = 'XXWWPass0wrf'
|
|
195
197
|
create_user(name, "network-admin auth md5 #{auth_pw} priv #{auth_pw}")
|
|
196
198
|
|
|
197
199
|
# get users
|
|
@@ -202,7 +204,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
202
204
|
|
|
203
205
|
def test_snmpuser_auth_password_equal_priv_invalid_param
|
|
204
206
|
name = 'testV3PwEqualInvalid'
|
|
205
|
-
auth_pw = '
|
|
207
|
+
auth_pw = 'XXWWPass0wrf'
|
|
206
208
|
create_user(name, "network-operator auth md5 #{auth_pw} priv #{auth_pw}")
|
|
207
209
|
|
|
208
210
|
# get users
|
|
@@ -213,17 +215,17 @@ class TestSnmpUser < CiscoTestCase
|
|
|
213
215
|
|
|
214
216
|
def test_snmpuser_auth_password_not_equal
|
|
215
217
|
name = 'testV3PwEqual'
|
|
216
|
-
auth_pw = '
|
|
218
|
+
auth_pw = 'xxwwpass0r!f'
|
|
217
219
|
create_user(name, "network-admin auth md5 #{auth_pw}")
|
|
218
220
|
|
|
219
221
|
# get users
|
|
220
222
|
snmpuser = SnmpUser.users[name]
|
|
221
|
-
refute(snmpuser.auth_password_equal?('
|
|
223
|
+
refute(snmpuser.auth_password_equal?('xxwwpass0r!', false))
|
|
222
224
|
end
|
|
223
225
|
|
|
224
226
|
def test_snmpuser_auth_password_equal
|
|
225
227
|
name = 'testV3PwEqual'
|
|
226
|
-
auth_pw = '
|
|
228
|
+
auth_pw = 'XXWWPass0wrf'
|
|
227
229
|
create_user(name, "network-admin auth md5 #{auth_pw}")
|
|
228
230
|
|
|
229
231
|
# get users
|
|
@@ -249,7 +251,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
249
251
|
snmpuser = SnmpUser.users[name]
|
|
250
252
|
assert(snmpuser.auth_password_equal?(auth_pw, true))
|
|
251
253
|
# verify that if we give a wrong password, the api will return false
|
|
252
|
-
refute(snmpuser.auth_password_equal?('
|
|
254
|
+
refute(snmpuser.auth_password_equal?('0xFe6c', true))
|
|
253
255
|
end
|
|
254
256
|
|
|
255
257
|
def test_snmpuser_auth_priv_password_equal_localizedkey
|
|
@@ -268,8 +270,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
268
270
|
|
|
269
271
|
def test_snmpuser_auth_priv_des_password_equal
|
|
270
272
|
name = 'testV3PwEqual'
|
|
271
|
-
auth_pw = '
|
|
272
|
-
priv_pw = '
|
|
273
|
+
auth_pw = 'XXWWPass0wrf'
|
|
274
|
+
priv_pw = 'WWXXPaas0wrf'
|
|
273
275
|
create_user(name, "network-operator auth md5 #{auth_pw} priv #{priv_pw}")
|
|
274
276
|
|
|
275
277
|
# get users
|
|
@@ -281,7 +283,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
281
283
|
def test_snmpuser_create_with_single_group_auth_md5_nopriv
|
|
282
284
|
name = 'userv3test5'
|
|
283
285
|
groups = ['network-admin']
|
|
284
|
-
auth_pw = '
|
|
286
|
+
auth_pw = 'XXWWPass0wrf'
|
|
285
287
|
snmpuser = SnmpUser.new(name,
|
|
286
288
|
groups,
|
|
287
289
|
:md5, auth_pw,
|
|
@@ -315,7 +317,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
315
317
|
def test_snmpuser_create_with_single_group_auth_sha_nopriv
|
|
316
318
|
name = 'userv3testsha'
|
|
317
319
|
groups = ['network-admin']
|
|
318
|
-
auth_pw = '
|
|
320
|
+
auth_pw = 'XXWWPass0wrf'
|
|
319
321
|
snmpuser = SnmpUser.new(name,
|
|
320
322
|
groups,
|
|
321
323
|
:sha, auth_pw,
|
|
@@ -333,7 +335,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
333
335
|
def test_create_1_group_auth_sha_nopriv_pw_localized_localizedkey_false
|
|
334
336
|
name = 'userv3testauthsha3'
|
|
335
337
|
groups = ['network-admin']
|
|
336
|
-
auth_pw = '
|
|
338
|
+
auth_pw = '0xFe6cf9aea159c2c38e0a79ec23ed3cbb'
|
|
337
339
|
|
|
338
340
|
snmpuser = SnmpUser.new(name,
|
|
339
341
|
groups,
|
|
@@ -366,8 +368,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
366
368
|
def test_snmpuser_create_with_single_group_auth_md5_priv_des
|
|
367
369
|
name = 'userv3test6'
|
|
368
370
|
groups = ['network-admin']
|
|
369
|
-
auth_pw = '
|
|
370
|
-
priv_pw = '
|
|
371
|
+
auth_pw = 'XXWWPass0wrf'
|
|
372
|
+
priv_pw = 'Priv973ApQsX'
|
|
371
373
|
snmpuser = SnmpUser.new(name,
|
|
372
374
|
groups,
|
|
373
375
|
:md5, auth_pw,
|
|
@@ -402,8 +404,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
402
404
|
def test_snmpuser_create_with_single_group_auth_md5_priv_aes128
|
|
403
405
|
name = 'userv3test7'
|
|
404
406
|
groups = ['network-admin']
|
|
405
|
-
auth_pw = '
|
|
406
|
-
priv_pw = '
|
|
407
|
+
auth_pw = 'XXWWPass0wrf'
|
|
408
|
+
priv_pw = 'Priv973ApQsX'
|
|
407
409
|
snmpuser = SnmpUser.new(name,
|
|
408
410
|
groups,
|
|
409
411
|
:md5, auth_pw,
|
|
@@ -438,8 +440,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
438
440
|
def test_snmpuser_create_with_single_group_auth_sha_priv_des
|
|
439
441
|
name = 'userv3test8'
|
|
440
442
|
groups = ['network-admin']
|
|
441
|
-
auth_pw = '
|
|
442
|
-
priv_pw = '
|
|
443
|
+
auth_pw = 'XXWWPass0wrf'
|
|
444
|
+
priv_pw = 'Priv973ApQsX'
|
|
443
445
|
snmpuser = SnmpUser.new(name,
|
|
444
446
|
groups,
|
|
445
447
|
:sha, auth_pw,
|
|
@@ -474,8 +476,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
474
476
|
def test_snmpuser_create_with_single_group_auth_sha_priv_aes128
|
|
475
477
|
name = 'userv3test9'
|
|
476
478
|
groups = ['network-admin']
|
|
477
|
-
auth_pw = '
|
|
478
|
-
priv_pw = '
|
|
479
|
+
auth_pw = 'XXWWPass0wrf'
|
|
480
|
+
priv_pw = 'Priv973ApQsX'
|
|
479
481
|
snmpuser = SnmpUser.new(name,
|
|
480
482
|
groups,
|
|
481
483
|
:sha, auth_pw,
|
|
@@ -509,8 +511,8 @@ class TestSnmpUser < CiscoTestCase
|
|
|
509
511
|
|
|
510
512
|
def test_snmpuser_create_destroy_with_engine_id
|
|
511
513
|
name = 'test_with_engine_id'
|
|
512
|
-
auth_pw = '
|
|
513
|
-
priv_pw = '
|
|
514
|
+
auth_pw = 'XXWWPass0wrf'
|
|
515
|
+
priv_pw = 'XXWWPass0wrf'
|
|
514
516
|
engine_id = '128:12:12:12:12'
|
|
515
517
|
snmpuser = SnmpUser.new(name, [''], :md5, auth_pw, :des, priv_pw,
|
|
516
518
|
false, engine_id)
|
|
@@ -592,7 +594,7 @@ class TestSnmpUser < CiscoTestCase
|
|
|
592
594
|
|
|
593
595
|
def test_snmpuser_auth_password_equal_with_engineid
|
|
594
596
|
name = 'test_authpass_equal'
|
|
595
|
-
auth_pass = '
|
|
597
|
+
auth_pass = 'XXWWPass0wrf'
|
|
596
598
|
engine_id = '128:12:12:12:12'
|
|
597
599
|
|
|
598
600
|
snmpuser = SnmpUser.new(name, [''], :md5, auth_pass, :none, '', false,
|
|
@@ -600,25 +602,25 @@ class TestSnmpUser < CiscoTestCase
|
|
|
600
602
|
|
|
601
603
|
assert(snmpuser.auth_password_equal?(auth_pass, false))
|
|
602
604
|
# our api should be able to detect wrong password
|
|
603
|
-
refute(snmpuser.auth_password_equal?('
|
|
605
|
+
refute(snmpuser.auth_password_equal?('WWXXPass0wrf', false))
|
|
604
606
|
snmpuser.destroy
|
|
605
607
|
end
|
|
606
608
|
|
|
607
609
|
def test_snmpuser_priv_password_equal_with_engineid
|
|
608
610
|
name = 'test_privpass_equal'
|
|
609
|
-
priv_pass = '
|
|
611
|
+
priv_pass = 'XXWWPass0wrf'
|
|
610
612
|
engine_id = '128:12:12:12:12'
|
|
611
613
|
|
|
612
614
|
snmpuser = SnmpUser.new(name, [''], :md5, priv_pass, :des, priv_pass, false,
|
|
613
615
|
engine_id)
|
|
614
616
|
assert(snmpuser.priv_password_equal?(priv_pass, false))
|
|
615
|
-
refute(snmpuser.priv_password_equal?('
|
|
617
|
+
refute(snmpuser.priv_password_equal?('tWWXXpass0wrf', false))
|
|
616
618
|
snmpuser.destroy
|
|
617
619
|
|
|
618
620
|
snmpuser = SnmpUser.new(name, [''], :md5, priv_pass,
|
|
619
621
|
:aes128, priv_pass, false, engine_id)
|
|
620
622
|
assert(snmpuser.priv_password_equal?(priv_pass, false))
|
|
621
|
-
refute(snmpuser.priv_password_equal?('
|
|
623
|
+
refute(snmpuser.priv_password_equal?('tWWXXpass0wrf', false))
|
|
622
624
|
snmpuser.destroy
|
|
623
625
|
end
|
|
624
626
|
|
data/tests/test_syslog_server.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Minitest for SyslogServer class
|
|
3
3
|
#
|
|
4
|
-
# Copyright (c) 2014-
|
|
4
|
+
# Copyright (c) 2014-2016 Cisco and/or its affiliates.
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -35,36 +35,48 @@ class TestSyslogServer < CiscoTestCase
|
|
|
35
35
|
def no_syslogserver
|
|
36
36
|
# Turn the feature off for a clean test.
|
|
37
37
|
config('no logging server 1.2.3.4',
|
|
38
|
-
'no logging server 2
|
|
38
|
+
'no logging server 2003::2',
|
|
39
39
|
'no vrf context red')
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
# TESTS
|
|
43
43
|
|
|
44
|
-
def
|
|
44
|
+
def test_create_destroy_single_ipv4
|
|
45
45
|
id = '1.2.3.4'
|
|
46
46
|
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
47
47
|
|
|
48
48
|
server = Cisco::SyslogServer.new(id, 2, 'default', true)
|
|
49
49
|
assert_includes(Cisco::SyslogServer.syslogservers, id)
|
|
50
|
-
assert_equal(Cisco::SyslogServer.syslogservers[id]
|
|
50
|
+
assert_equal(server, Cisco::SyslogServer.syslogservers[id])
|
|
51
51
|
|
|
52
52
|
server.destroy
|
|
53
53
|
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
def
|
|
56
|
+
def test_create_destroy_single_ipv6
|
|
57
|
+
id = '2003::2'
|
|
58
|
+
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
59
|
+
|
|
60
|
+
server = Cisco::SyslogServer.new(id, 2, 'default', true)
|
|
61
|
+
assert_includes(Cisco::SyslogServer.syslogservers, id)
|
|
62
|
+
assert_equal(server, Cisco::SyslogServer.syslogservers[id])
|
|
63
|
+
|
|
64
|
+
server.destroy
|
|
65
|
+
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_create_destroy_multiple
|
|
57
69
|
id = '1.2.3.4'
|
|
58
|
-
id2 = '2
|
|
70
|
+
id2 = '2003::2'
|
|
59
71
|
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
60
72
|
refute_includes(Cisco::SyslogServer.syslogservers, id2)
|
|
61
73
|
|
|
62
74
|
server = Cisco::SyslogServer.new(id, 2, 'default', true)
|
|
63
75
|
server2 = Cisco::SyslogServer.new(id2, 2, 'default', true)
|
|
64
76
|
assert_includes(Cisco::SyslogServer.syslogservers, id)
|
|
65
|
-
assert_equal(Cisco::SyslogServer.syslogservers[id]
|
|
77
|
+
assert_equal(server, Cisco::SyslogServer.syslogservers[id])
|
|
66
78
|
assert_includes(Cisco::SyslogServer.syslogservers, id2)
|
|
67
|
-
assert_equal(Cisco::SyslogServer.syslogservers[id2]
|
|
79
|
+
assert_equal(server2, Cisco::SyslogServer.syslogservers[id2])
|
|
68
80
|
|
|
69
81
|
server.destroy
|
|
70
82
|
server2.destroy
|
|
@@ -72,7 +84,7 @@ class TestSyslogServer < CiscoTestCase
|
|
|
72
84
|
refute_includes(Cisco::SyslogServer.syslogservers, id2)
|
|
73
85
|
end
|
|
74
86
|
|
|
75
|
-
def
|
|
87
|
+
def test_create_destroy_single_vrf_ipv4
|
|
76
88
|
config('vrf context red')
|
|
77
89
|
id = '1.2.3.4'
|
|
78
90
|
|
|
@@ -80,7 +92,21 @@ class TestSyslogServer < CiscoTestCase
|
|
|
80
92
|
|
|
81
93
|
server = Cisco::SyslogServer.new(id, 2, 'red', true)
|
|
82
94
|
assert_includes(Cisco::SyslogServer.syslogservers, id)
|
|
83
|
-
assert_equal(Cisco::SyslogServer.syslogservers[id]
|
|
95
|
+
assert_equal(server, Cisco::SyslogServer.syslogservers[id])
|
|
96
|
+
|
|
97
|
+
server.destroy
|
|
98
|
+
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_create_destroy_single_vrf_ipv6
|
|
102
|
+
config('vrf context red')
|
|
103
|
+
id = '2003::2'
|
|
104
|
+
|
|
105
|
+
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
106
|
+
|
|
107
|
+
server = Cisco::SyslogServer.new(id, 2, 'red', true)
|
|
108
|
+
assert_includes(Cisco::SyslogServer.syslogservers, id)
|
|
109
|
+
assert_equal(server, Cisco::SyslogServer.syslogservers[id])
|
|
84
110
|
|
|
85
111
|
server.destroy
|
|
86
112
|
refute_includes(Cisco::SyslogServer.syslogservers, id)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Minitest for SyslogSetting class
|
|
3
3
|
#
|
|
4
|
-
# Copyright (c) 2014-
|
|
4
|
+
# Copyright (c) 2014-2016 Cisco and/or its affiliates.
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
data/tests/test_tacacs_server.rb
CHANGED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
# Copyright (c) 2014-2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require_relative 'ciscotest'
|
|
16
|
+
require_relative '../lib/cisco_node_utils/tacacs_server_group'
|
|
17
|
+
require_relative '../lib/cisco_node_utils/tacacs_server_host'
|
|
18
|
+
|
|
19
|
+
# Test class for Tacacs Server Group
|
|
20
|
+
class TestTacacsServerGroup < CiscoTestCase
|
|
21
|
+
def clean_tacacs_config
|
|
22
|
+
config('no feature tacacs',
|
|
23
|
+
'feature tacacs')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def create_tacacsserverhost(name='defaulttest')
|
|
27
|
+
TacacsServerHost.new(name)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def detach_tacacsserverhost(host)
|
|
31
|
+
host.destroy
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def detach_aaaservergroup(aaa_server_group)
|
|
35
|
+
aaa_server_group.destroy
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def create_aaa_group(group_name, server)
|
|
39
|
+
config("aaa group server #{server} #{group_name}")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def destroy_aaa_group(group_name, server)
|
|
43
|
+
config("no aaa group server #{server} #{group_name}")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def create_vrf(group_name, server, vrf_name)
|
|
47
|
+
config("aaa group server #{server} #{group_name} ; use-vrf #{vrf_name}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def create_deadtime(group_name, server, deadtime)
|
|
51
|
+
config("aaa group server #{server} #{group_name} ; deadtime #{deadtime}")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def create_source_interface(group_name, server, interface)
|
|
55
|
+
config("aaa group server #{server} #{group_name} ; " \
|
|
56
|
+
"source-interface #{interface}")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_create_invalid_name_tacacs
|
|
60
|
+
assert_raises(TypeError) do
|
|
61
|
+
TacacsServerGroup.new(nil)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_create_valid_tacacs
|
|
66
|
+
group_name = 'Group1'
|
|
67
|
+
aaa_group = TacacsServerGroup.new(group_name)
|
|
68
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
69
|
+
pattern: /#{group_name}/)
|
|
70
|
+
|
|
71
|
+
detach_aaaservergroup(aaa_group)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_create_valid_multiple_tacacs
|
|
75
|
+
group_name1 = 'Group1'
|
|
76
|
+
group_name2 = 'Group2'
|
|
77
|
+
aaa_group1 = TacacsServerGroup.new(group_name1)
|
|
78
|
+
aaa_group2 = TacacsServerGroup.new(group_name2)
|
|
79
|
+
|
|
80
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
81
|
+
pattern: /#{group_name1}/)
|
|
82
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
83
|
+
pattern: /#{group_name2}/)
|
|
84
|
+
|
|
85
|
+
detach_aaaservergroup(aaa_group1)
|
|
86
|
+
detach_aaaservergroup(aaa_group2)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_collection_empty_tacacs
|
|
90
|
+
clean_tacacs_config
|
|
91
|
+
aaa_group_list = TacacsServerGroup.groups
|
|
92
|
+
assert_empty(aaa_group_list,
|
|
93
|
+
'Error: TacacsServerGroup collection is not empty')
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_collection_multi_tacacs
|
|
97
|
+
clean_tacacs_config
|
|
98
|
+
group_name1 = 'Group1'
|
|
99
|
+
group_name2 = 'Group2'
|
|
100
|
+
group_name3 = 'Group3'
|
|
101
|
+
aaa_group1 = TacacsServerGroup.new(group_name1)
|
|
102
|
+
|
|
103
|
+
groups = TacacsServerGroup.groups
|
|
104
|
+
assert_equal(1, groups.size,
|
|
105
|
+
'Error: TacacsServerGroup collection reporting incorrect size')
|
|
106
|
+
assert(groups.key?(group_name1),
|
|
107
|
+
"Error: TacacsServerGroup collection does contain #{group_name1}")
|
|
108
|
+
detach_aaaservergroup(aaa_group1)
|
|
109
|
+
|
|
110
|
+
create_aaa_group(group_name2, 'tacacs+')
|
|
111
|
+
create_aaa_group(group_name3, 'tacacs+')
|
|
112
|
+
groups = TacacsServerGroup.groups
|
|
113
|
+
refute_empty(groups, 'Error: TacacsServerGroup collection is not filled')
|
|
114
|
+
assert_equal(2, groups.size,
|
|
115
|
+
'Error: TacacsServerGroup collection reporting incorrect size')
|
|
116
|
+
assert(groups.key?(group_name2),
|
|
117
|
+
"Error: TacacsServerGroup collection does contain #{group_name2}")
|
|
118
|
+
assert(groups.key?(group_name3),
|
|
119
|
+
"Error: TacacsServerGroup collection does contain #{group_name3}")
|
|
120
|
+
|
|
121
|
+
destroy_aaa_group(group_name2, 'tacacs+')
|
|
122
|
+
destroy_aaa_group(group_name3, 'tacacs+')
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_servers_tacacs
|
|
126
|
+
clean_tacacs_config
|
|
127
|
+
server_name1 = 'server1'
|
|
128
|
+
server_name2 = 'server2'
|
|
129
|
+
server1 = create_tacacsserverhost(server_name1)
|
|
130
|
+
server2 = create_tacacsserverhost(server_name2)
|
|
131
|
+
|
|
132
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
133
|
+
|
|
134
|
+
# pre check that default servers are empty
|
|
135
|
+
default_server = aaa_group.default_servers
|
|
136
|
+
assert_empty(default_server, 'Error: Default Servers are not empty')
|
|
137
|
+
|
|
138
|
+
aaa_group.servers = [server_name1, server_name2]
|
|
139
|
+
|
|
140
|
+
# Check collection size
|
|
141
|
+
servers = aaa_group.servers
|
|
142
|
+
assert_equal(2, servers.size,
|
|
143
|
+
'Error: Collection is not two servers')
|
|
144
|
+
assert(servers.include?('server1'),
|
|
145
|
+
"Error: Collection does not contain #{server_name1}")
|
|
146
|
+
assert(servers.include?('server2'),
|
|
147
|
+
"Error: Collection does not contain #{server_name2}")
|
|
148
|
+
|
|
149
|
+
detach_aaaservergroup(aaa_group)
|
|
150
|
+
detach_tacacsserverhost(server1)
|
|
151
|
+
detach_tacacsserverhost(server2)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def test_add_server_tacacs
|
|
155
|
+
server_name1 = 'server1'
|
|
156
|
+
server_name2 = 'server2'
|
|
157
|
+
server1 = create_tacacsserverhost(server_name1)
|
|
158
|
+
server2 = create_tacacsserverhost(server_name2)
|
|
159
|
+
|
|
160
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
161
|
+
aaa_group.servers = [server_name1, server_name2]
|
|
162
|
+
|
|
163
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
164
|
+
pattern: /server #{server_name1}/)
|
|
165
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
166
|
+
pattern: /server #{server_name2}/)
|
|
167
|
+
|
|
168
|
+
detach_aaaservergroup(aaa_group)
|
|
169
|
+
detach_tacacsserverhost(server1)
|
|
170
|
+
detach_tacacsserverhost(server2)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def test_remove_server_tacacs
|
|
174
|
+
clean_tacacs_config
|
|
175
|
+
server_name1 = 'server1'
|
|
176
|
+
server_name2 = 'server2'
|
|
177
|
+
server1 = create_tacacsserverhost(server_name1)
|
|
178
|
+
server2 = create_tacacsserverhost(server_name2)
|
|
179
|
+
|
|
180
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
181
|
+
aaa_group.servers = [server_name1, server_name2]
|
|
182
|
+
|
|
183
|
+
# Check collection size
|
|
184
|
+
servers = aaa_group.servers
|
|
185
|
+
assert_equal(2, servers.size,
|
|
186
|
+
'Error: Collection is not two servers')
|
|
187
|
+
|
|
188
|
+
# Now remove them and then check again
|
|
189
|
+
aaa_group.servers = [server_name2]
|
|
190
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
191
|
+
pattern: /server #{server_name1}/)
|
|
192
|
+
|
|
193
|
+
aaa_group.servers = []
|
|
194
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
195
|
+
pattern: /server #{server_name2}/)
|
|
196
|
+
|
|
197
|
+
detach_aaaservergroup(aaa_group)
|
|
198
|
+
detach_tacacsserverhost(server1)
|
|
199
|
+
detach_tacacsserverhost(server2)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_remove_server_twice_tacacs
|
|
203
|
+
clean_tacacs_config
|
|
204
|
+
server_name1 = 'server1'
|
|
205
|
+
server_name2 = 'server2'
|
|
206
|
+
server1 = create_tacacsserverhost(server_name1)
|
|
207
|
+
server2 = create_tacacsserverhost(server_name2)
|
|
208
|
+
|
|
209
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
210
|
+
aaa_group.servers = [server_name1, server_name2]
|
|
211
|
+
|
|
212
|
+
# Check collection size
|
|
213
|
+
servers = aaa_group.servers
|
|
214
|
+
assert_equal(2, servers.size,
|
|
215
|
+
'Error: Collection is not two servers')
|
|
216
|
+
|
|
217
|
+
# Remove server 1
|
|
218
|
+
aaa_group.servers = [server_name2]
|
|
219
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
220
|
+
pattern: /server #{server_name1}/)
|
|
221
|
+
|
|
222
|
+
# Now remove server 2
|
|
223
|
+
aaa_group.servers = []
|
|
224
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
225
|
+
pattern: /server #{server_name2}/)
|
|
226
|
+
|
|
227
|
+
# Check collection size
|
|
228
|
+
servers = aaa_group.servers
|
|
229
|
+
assert_empty(servers, 'Error: Collection not empty')
|
|
230
|
+
|
|
231
|
+
detach_aaaservergroup(aaa_group)
|
|
232
|
+
detach_tacacsserverhost(server1)
|
|
233
|
+
detach_tacacsserverhost(server2)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def test_get_vrf_tacacs
|
|
237
|
+
group_name1 = 'Group1'
|
|
238
|
+
aaa_group = TacacsServerGroup.new(group_name1)
|
|
239
|
+
|
|
240
|
+
vrf = cmd_ref.lookup('tacacs_server_group', 'vrf').default_value
|
|
241
|
+
assert_equal(vrf, aaa_group.vrf,
|
|
242
|
+
'Error: TacacsServerGroup, vrf not default')
|
|
243
|
+
|
|
244
|
+
vrf = 'TESTME'
|
|
245
|
+
create_vrf(group_name1, 'tacacs+', vrf)
|
|
246
|
+
assert_equal(vrf, aaa_group.vrf,
|
|
247
|
+
'Error: TacacsServerGroup, vrf not configured')
|
|
248
|
+
|
|
249
|
+
vrf = cmd_ref.lookup('tacacs_server_group', 'vrf').default_value
|
|
250
|
+
aaa_group.vrf = vrf
|
|
251
|
+
assert_equal(vrf, aaa_group.vrf,
|
|
252
|
+
'Error: TacacsServerGroup, vrf not restored to default')
|
|
253
|
+
|
|
254
|
+
detach_aaaservergroup(aaa_group)
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def test_get_default_vrf_tacacs
|
|
258
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
259
|
+
assert_equal(cmd_ref.lookup('tacacs_server_group', 'vrf').default_value,
|
|
260
|
+
aaa_group.default_vrf,
|
|
261
|
+
'Error: TacacsServerGroup, default vrf incorrect')
|
|
262
|
+
detach_aaaservergroup(aaa_group)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
def test_set_vrf_tacacs
|
|
266
|
+
vrf = 'management-123'
|
|
267
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
268
|
+
aaa_group.vrf = vrf
|
|
269
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
270
|
+
pattern: /use-vrf #{vrf}/)
|
|
271
|
+
|
|
272
|
+
# Invalid case
|
|
273
|
+
assert_raises(TypeError) do
|
|
274
|
+
aaa_group.vrf = 2450
|
|
275
|
+
end
|
|
276
|
+
detach_aaaservergroup(aaa_group)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def test_get_deadtime_tacacs
|
|
280
|
+
group_name = 'Group1'
|
|
281
|
+
aaa_group = TacacsServerGroup.new(group_name)
|
|
282
|
+
|
|
283
|
+
deadtime = cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value
|
|
284
|
+
assert_equal(deadtime, aaa_group.deadtime,
|
|
285
|
+
'Error: TacacsServerGroup, deadtime not default')
|
|
286
|
+
|
|
287
|
+
deadtime = 850
|
|
288
|
+
create_deadtime(group_name, 'tacacs+', deadtime)
|
|
289
|
+
assert_equal(deadtime, aaa_group.deadtime,
|
|
290
|
+
'Error: TacacsServerGroup, deadtime not configured')
|
|
291
|
+
|
|
292
|
+
deadtime = cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value
|
|
293
|
+
aaa_group.deadtime = deadtime
|
|
294
|
+
assert_equal(deadtime, aaa_group.deadtime,
|
|
295
|
+
'Error: TacacsServerGroup, deadtime not restored to default')
|
|
296
|
+
|
|
297
|
+
detach_aaaservergroup(aaa_group)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def test_get_default_deadtime_tacacs
|
|
301
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
302
|
+
assert_equal(
|
|
303
|
+
cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value,
|
|
304
|
+
aaa_group.default_deadtime,
|
|
305
|
+
'Error: TacacsServerGroup, default deadtime incorrect')
|
|
306
|
+
detach_aaaservergroup(aaa_group)
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
def test_set_deadtime_tacacs
|
|
310
|
+
deadtime = 1250
|
|
311
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
312
|
+
aaa_group.deadtime = deadtime
|
|
313
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
314
|
+
pattern: /deadtime #{deadtime}/,
|
|
315
|
+
msg: 'Error: deadtime not configured')
|
|
316
|
+
# Invalid case
|
|
317
|
+
deadtime = 2450
|
|
318
|
+
assert_raises(CliError) do
|
|
319
|
+
aaa_group.deadtime = deadtime
|
|
320
|
+
end
|
|
321
|
+
detach_aaaservergroup(aaa_group)
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def test_get_source_interface_tacacs
|
|
325
|
+
group_name = 'Group1'
|
|
326
|
+
aaa_group = TacacsServerGroup.new(group_name)
|
|
327
|
+
intf =
|
|
328
|
+
cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
|
|
329
|
+
assert_equal(intf, aaa_group.source_interface,
|
|
330
|
+
'Error: TacacsServerGroup, source-interface set')
|
|
331
|
+
|
|
332
|
+
intf = 'Ethernet1/1'
|
|
333
|
+
create_source_interface(group_name, 'tacacs+', intf)
|
|
334
|
+
assert_equal(intf, aaa_group.source_interface,
|
|
335
|
+
'Error: TacacsServerGroup, source-interface not correct')
|
|
336
|
+
|
|
337
|
+
intf = 'Ethernet1/32'
|
|
338
|
+
create_source_interface(group_name, 'tacacs+', intf)
|
|
339
|
+
assert_equal(intf, aaa_group.source_interface,
|
|
340
|
+
'Error: TacacsServerGroup, source-interface not correct')
|
|
341
|
+
|
|
342
|
+
detach_aaaservergroup(aaa_group)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def test_get_default_source_interface_tacacs
|
|
346
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
347
|
+
assert_equal(
|
|
348
|
+
cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value,
|
|
349
|
+
aaa_group.default_source_interface,
|
|
350
|
+
'Error: Aaa_Group Server, default source-interface incorrect')
|
|
351
|
+
detach_aaaservergroup(aaa_group)
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
def test_set_source_interface_tacacs
|
|
355
|
+
intf =
|
|
356
|
+
cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
|
|
357
|
+
aaa_group = TacacsServerGroup.new('Group1')
|
|
358
|
+
assert_equal(intf, aaa_group.source_interface,
|
|
359
|
+
'Error: Aaa_Group Server, source-interface not default')
|
|
360
|
+
|
|
361
|
+
aaa_group.source_interface = 'loopback1'
|
|
362
|
+
assert_show_match(command: 'show run tacacs+ all | no-more',
|
|
363
|
+
pattern: /source-interface loopback1/,
|
|
364
|
+
msg: 'Error: source-interface not correct')
|
|
365
|
+
|
|
366
|
+
aaa_group.source_interface =
|
|
367
|
+
cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
|
|
368
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
369
|
+
pattern: /source-interface loopback1/)
|
|
370
|
+
|
|
371
|
+
# Invalid case
|
|
372
|
+
state = true
|
|
373
|
+
assert_raises(TypeError) do
|
|
374
|
+
aaa_group.source_interface = state
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
detach_aaaservergroup(aaa_group)
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
# tacacs_server_groups method is the same as groups, added for netdev
|
|
381
|
+
# compatibility, make sure output is the same
|
|
382
|
+
def test_groups_methods_equality
|
|
383
|
+
aaagroup1 = TacacsServerGroup.new('test1')
|
|
384
|
+
aaagroup2 = TacacsServerGroup.new('test2')
|
|
385
|
+
aaagroup3 = TacacsServerGroup.new('test3')
|
|
386
|
+
|
|
387
|
+
groups1 = TacacsServerGroup.groups.sort
|
|
388
|
+
groups2 = TacacsServerGroup.tacacs_server_groups.sort
|
|
389
|
+
|
|
390
|
+
assert_equal(groups1, groups2)
|
|
391
|
+
|
|
392
|
+
detach_aaaservergroup(aaagroup1)
|
|
393
|
+
detach_aaaservergroup(aaagroup2)
|
|
394
|
+
detach_aaaservergroup(aaagroup3)
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
def test_destroy_tacacs
|
|
398
|
+
group_name = 'Group1'
|
|
399
|
+
aaa_group = TacacsServerGroup.new(group_name)
|
|
400
|
+
|
|
401
|
+
detach_aaaservergroup(aaa_group)
|
|
402
|
+
refute_show_match(command: 'show run tacacs+ all | no-more',
|
|
403
|
+
pattern: /#{group_name}/)
|
|
404
|
+
end
|
|
405
|
+
end
|