cisco_node_utils 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|