cisco_node_utils 1.0.1 → 1.1.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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +81 -1
  4. data/.travis.yml +9 -0
  5. data/CHANGELOG.md +72 -6
  6. data/CONTRIBUTING.md +32 -7
  7. data/README.md +70 -7
  8. data/Rakefile +17 -0
  9. data/bin/check_metric_limits.rb +109 -0
  10. data/bin/git/hooks/commit-msg/enforce_style +81 -0
  11. data/bin/git/hooks/hook_lib +108 -0
  12. data/bin/git/hooks/hooks-wrapper +38 -0
  13. data/bin/git/hooks/post-flow-hotfix-start/update-version +24 -0
  14. data/bin/git/hooks/post-flow-release-finish/update-version +29 -0
  15. data/bin/git/hooks/post-flow-release-start/update-version +19 -0
  16. data/bin/git/hooks/post-merge/update-hooks +6 -0
  17. data/bin/git/hooks/post-rewrite/update-hooks +6 -0
  18. data/bin/git/hooks/pre-commit/rubocop +20 -0
  19. data/bin/git/hooks/pre-commit/validate-diffs +31 -0
  20. data/bin/git/hooks/pre-push/check-changelog +24 -0
  21. data/bin/git/hooks/pre-push/rubocop +7 -0
  22. data/bin/git/update-hooks +65 -0
  23. data/cisco_node_utils.gemspec +9 -3
  24. data/docs/README-develop-best-practices.md +404 -0
  25. data/docs/README-develop-node-utils-APIs.md +215 -365
  26. data/docs/README-maintainers.md +33 -3
  27. data/docs/template-router.rb +89 -91
  28. data/docs/template-test_router.rb +52 -55
  29. data/lib/.rubocop.yml +18 -0
  30. data/lib/cisco_node_utils.rb +2 -19
  31. data/lib/cisco_node_utils/README_YAML.md +1 -9
  32. data/lib/cisco_node_utils/bgp.rb +664 -0
  33. data/lib/cisco_node_utils/bgp_af.rb +530 -0
  34. data/lib/cisco_node_utils/bgp_neighbor.rb +425 -0
  35. data/lib/cisco_node_utils/bgp_neighbor_af.rb +709 -0
  36. data/lib/cisco_node_utils/cisco_cmn_utils.rb +59 -25
  37. data/lib/cisco_node_utils/command_reference.rb +72 -74
  38. data/lib/cisco_node_utils/command_reference_common.yaml +174 -9
  39. data/lib/cisco_node_utils/command_reference_common_bgp.yaml +535 -0
  40. data/lib/cisco_node_utils/command_reference_n7k.yaml +4 -0
  41. data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -9
  42. data/lib/cisco_node_utils/configparser_lib.rb +152 -147
  43. data/lib/cisco_node_utils/dns_domain.rb +79 -0
  44. data/lib/cisco_node_utils/domain_name.rb +71 -0
  45. data/lib/cisco_node_utils/interface.rb +167 -161
  46. data/lib/cisco_node_utils/interface_ospf.rb +78 -81
  47. data/lib/cisco_node_utils/name_server.rb +64 -0
  48. data/lib/cisco_node_utils/node.rb +154 -198
  49. data/lib/cisco_node_utils/node_util.rb +61 -0
  50. data/lib/cisco_node_utils/ntp_config.rb +65 -0
  51. data/lib/cisco_node_utils/ntp_server.rb +76 -0
  52. data/lib/cisco_node_utils/platform.rb +174 -165
  53. data/lib/cisco_node_utils/radius_global.rb +146 -0
  54. data/lib/cisco_node_utils/radius_server.rb +295 -0
  55. data/lib/cisco_node_utils/router_ospf.rb +59 -63
  56. data/lib/cisco_node_utils/router_ospf_vrf.rb +226 -210
  57. data/lib/cisco_node_utils/snmpcommunity.rb +52 -58
  58. data/lib/cisco_node_utils/snmpgroup.rb +22 -23
  59. data/lib/cisco_node_utils/snmpserver.rb +99 -103
  60. data/lib/cisco_node_utils/snmpuser.rb +294 -274
  61. data/lib/cisco_node_utils/syslog_server.rb +92 -0
  62. data/lib/cisco_node_utils/syslog_settings.rb +69 -0
  63. data/lib/cisco_node_utils/tacacs_server.rb +137 -133
  64. data/lib/cisco_node_utils/tacacs_server_host.rb +84 -87
  65. data/lib/cisco_node_utils/version.rb +2 -1
  66. data/lib/cisco_node_utils/vlan.rb +28 -31
  67. data/lib/cisco_node_utils/vrf.rb +80 -0
  68. data/lib/cisco_node_utils/vtp.rb +100 -97
  69. data/lib/cisco_node_utils/yum.rb +15 -17
  70. data/tests/.rubocop.yml +15 -0
  71. data/tests/basetest.rb +81 -36
  72. data/tests/ciscotest.rb +38 -78
  73. data/{lib/cisco_node_utils → tests}/platform_info.rb +12 -8
  74. data/{lib/cisco_node_utils → tests}/platform_info.yaml +1 -1
  75. data/tests/test_bgp_af.rb +920 -0
  76. data/tests/test_bgp_neighbor.rb +403 -0
  77. data/tests/test_bgp_neighbor_af.rb +589 -0
  78. data/tests/test_command_config.rb +65 -62
  79. data/tests/test_command_reference.rb +31 -45
  80. data/tests/test_dns_domain.rb +113 -0
  81. data/tests/test_domain_name.rb +86 -0
  82. data/tests/test_interface.rb +424 -548
  83. data/tests/test_interface_ospf.rb +248 -432
  84. data/tests/test_interface_svi.rb +56 -79
  85. data/tests/test_interface_switchport.rb +196 -272
  86. data/tests/test_name_server.rb +85 -0
  87. data/tests/test_node.rb +7 -6
  88. data/tests/test_node_ext.rb +133 -186
  89. data/tests/test_ntp_config.rb +49 -0
  90. data/tests/test_ntp_server.rb +74 -0
  91. data/tests/test_platform.rb +58 -37
  92. data/tests/test_radius_global.rb +78 -0
  93. data/tests/test_radius_server.rb +185 -0
  94. data/tests/test_router_bgp.rb +838 -0
  95. data/tests/test_router_ospf.rb +49 -80
  96. data/tests/test_router_ospf_vrf.rb +274 -392
  97. data/tests/test_snmpcommunity.rb +128 -172
  98. data/tests/test_snmpgroup.rb +12 -14
  99. data/tests/test_snmpserver.rb +160 -189
  100. data/tests/test_snmpuser.rb +568 -717
  101. data/tests/test_syslog_server.rb +88 -0
  102. data/tests/test_syslog_settings.rb +54 -0
  103. data/tests/test_tacacs_server.rb +113 -148
  104. data/tests/test_tacacs_server_host.rb +108 -161
  105. data/tests/test_vlan.rb +63 -79
  106. data/tests/test_vrf.rb +92 -0
  107. data/tests/test_vtp.rb +108 -126
  108. data/tests/test_yum.rb +47 -41
  109. metadata +92 -56
  110. data/.rubocop_todo.yml +0 -293
  111. data/docs/.rubocop.yml +0 -13
  112. data/docs/template-feature.rb +0 -45
  113. data/docs/template-test_feature.rb +0 -51
  114. data/tests/test_all_cisco.rb +0 -46
@@ -12,792 +12,643 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- require File.expand_path("../ciscotest", __FILE__)
16
- require File.expand_path("../../lib/cisco_node_utils/snmpuser", __FILE__)
15
+ require_relative 'ciscotest'
16
+ require_relative '../lib/cisco_node_utils/snmpuser'
17
17
 
18
- DEFAULT_SNMP_USER_AUTH_PASSWORD = ""
19
- DEFAULT_SNMP_USER_PRIV_PASSWORD = ""
20
- DEFAULT_SNMP_USER_GROUP_NAME = "network-operator"
18
+ DEFAULT_SNMP_USER_AUTH_PASSWORD = ''
19
+ DEFAULT_SNMP_USER_PRIV_PASSWORD = ''
20
+ DEFAULT_SNMP_USER_GROUP_NAME = 'network-operator'
21
21
 
22
+ # TestSnmpUser - Minitest for SnmpUser node utility class
22
23
  class TestSnmpUser < CiscoTestCase
24
+ @@existing_users = nil # rubocop:disable Style/ClassVars
25
+
26
+ def setup
27
+ super
28
+ @test_users = []
29
+ # Get the list of users that exist on the node when we first begin
30
+ @@existing_users ||= SnmpUser.users.keys # rubocop:disable Style/ClassVars
31
+ end
32
+
33
+ def create_user(name, opts='')
34
+ config("snmp-server user #{name} #{opts}")
35
+ @test_users.push(name)
36
+ end
37
+
38
+ def destroy_user(user)
39
+ @test_users.delete(user.name)
40
+ user.destroy
41
+ end
42
+
43
+ def teardown
44
+ unless @test_users.empty?
45
+ cfg = @test_users.collect { |name| "no snmp-server user #{name}" }
46
+ config(*cfg)
47
+ end
48
+ super
49
+ delta = SnmpUser.users.keys - @@existing_users
50
+ # User deletion can take some time, for some reason
51
+ unless delta.empty?
52
+ sleep(5)
53
+ node.cache_flush
54
+ delta = SnmpUser.users.keys - @@existing_users
55
+ end
56
+ @@existing_users = SnmpUser.users.keys # rubocop:disable Style/ClassVars
57
+ assert_empty(delta, 'Users not deleted after test!')
58
+ end
59
+
60
+ def user_pat(name, group='network-admin')
61
+ group ? /snmp-server user #{name} #{group}/ : /snmp-server user #{name}/
62
+ end
63
+
23
64
  ## test cases starts here
24
65
 
25
66
  def test_snmpuser_collection_not_empty
26
- s = @device.cmd("conf t")
27
- s = @device.cmd("snmp-server user tester")
28
- s = @device.cmd("end")
29
- # flush cache
30
- node.cache_flush
31
- snmpusers = SnmpUser.users()
32
- assert_equal(false, snmpusers.empty?(),
33
- "SnmpUser collection is empty")
34
- s = @device.cmd("conf t")
35
- s = @device.cmd("no snmp-server user tester")
36
- s = @device.cmd("end")
37
- node.cache_flush
67
+ create_user('tester')
68
+ refute_empty(SnmpUser.users,
69
+ 'SnmpUser collection is empty')
38
70
  end
39
71
 
40
- def test_engine_id_valid_and_none
41
- s = @device.cmd("conf t")
42
- s = @device.cmd("snmp-server user tester auth sha password engineID 22:22:22:22:23:22")
43
- s = @device.cmd("snmp-server user tester2")
44
- s = @device.cmd("end")
45
-
46
- node.cache_flush
47
- snmpusers = SnmpUser.users()
48
-
49
- snmpusers.each { |name, snmpuser|
50
- if snmpuser.name == "tester"
51
- assert_equal("22:22:22:22:23:22", snmpuser.engine_id)
52
- snmpuser.destroy
53
- elsif snmpuser.name == "tester2"
54
- assert_equal("", snmpuser.engine_id)
55
- snmpuser.destroy
56
- end
57
- }
58
- end
59
-
60
- def test_snmpuser_create_name_empty
61
- name = ""
62
- groups = []
63
- groups << "network-admin"
64
- assert_raises(ArgumentError) do
65
- snmpuser = SnmpUser.new(name,
66
- groups,
67
- :none, "",
68
- :none, "",
69
- false,
70
- "")
72
+ def test_snmpuser_create_invalid_args
73
+ args_list = [
74
+ ['Empty name',
75
+ ['', ['network-admin'],
76
+ :none, '', :none, '', false, ''],
77
+ ],
78
+ ['Auth password but no authproto',
79
+ ['userv3testUnknownAuth', ['network-admin'],
80
+ :none, 'test12345', :none, '', false, ''],
81
+ ],
82
+ ['Priv password but no privproto',
83
+ ['userv3testUnknownPriv', ['network-admin'],
84
+ :sha, 'test12345', :none, 'test12345', false, ''],
85
+ ],
86
+ ]
87
+ args_list.each do |msg, args|
88
+ assert_raises(ArgumentError, msg) { SnmpUser.new(*args) }
71
89
  end
72
90
  end
73
91
 
74
- def test_snmpuser_create_with_single_invalid_group_noauth_nopriv
75
- name = "userv3test"
76
- groups = []
77
- groups << "network-admin123"
78
- assert_raises(CliError) do
79
- snmpuser = SnmpUser.new(name,
80
- groups,
81
- :none, "",
82
- :none, "",
83
- false,
84
- "")
92
+ def test_snmpuser_create_invalid_cli
93
+ args_list = [
94
+ ['Cleartext password with localized key',
95
+ ['userv3testauthsha1', ['network-admin'],
96
+ :sha, 'test123456', :none, '', true, # localized key
97
+ ''],
98
+ ],
99
+ ['NX-OS Password must be at least 8 characters',
100
+ ['userv3testauthsha2', ['network-admin'],
101
+ :sha, 'test', :none, '', false, ''],
102
+ ],
103
+ ['Invalid group name',
104
+ ['userv3test', ['network-admin123'],
105
+ :none, '', :none, '', false, ''],
106
+ ],
107
+ ]
108
+ args_list.each do |msg, args|
109
+ assert_raises(CliError, msg) { SnmpUser.new(*args) }
110
+ end
111
+ end
112
+
113
+ def test_engine_id_valid_and_none
114
+ create_user('tester', 'auth sha password engineID 22:22:22:22:23:22')
115
+ create_user('tester2')
116
+
117
+ snmpusers = SnmpUser.users
118
+
119
+ found_tester = false
120
+ found_tester2 = false
121
+ snmpusers.each_value do |snmpuser|
122
+ if snmpuser.name == 'tester'
123
+ assert_equal('22:22:22:22:23:22', snmpuser.engine_id)
124
+ destroy_user(snmpuser)
125
+ found_tester = true
126
+ elsif snmpuser.name == 'tester2'
127
+ assert_equal('', snmpuser.engine_id)
128
+ destroy_user(snmpuser)
129
+ found_tester2 = true
130
+ end
85
131
  end
132
+ assert(found_tester)
133
+ assert(found_tester2)
86
134
  end
87
135
 
88
136
  def test_snmpuser_create_with_single_group_noauth_nopriv
89
- name = "userv3test2"
90
- groups = []
91
- groups << "network-admin"
137
+ name = 'userv3test2'
138
+ groups = ['network-admin']
92
139
  snmpuser = SnmpUser.new(name,
93
140
  groups,
94
- :none, "",
95
- :none, "",
141
+ :none, '',
142
+ :none, '',
96
143
  false,
97
- "")
98
- s = @device.cmd("show run snmp all | no-more")
99
- line = /snmp-server user #{name} network-admin/.match(s)
100
- # puts "line: #{line}"
101
- refute(line.nil?)
144
+ '')
145
+ assert_show_match(pattern: user_pat(name),
146
+ command: 'show run snmp all | no-more')
102
147
  snmpuser.destroy
103
148
  end
104
149
 
105
150
  def test_snmpuser_create_with_multi_group_noauth_nopriv
106
- name = "userv3test3"
107
- groups = []
108
- groups << "network-admin"
109
- groups << "vdc-admin"
151
+ name = 'userv3test3'
152
+ groups = ['network-admin', 'vdc-admin']
110
153
  snmpuser = SnmpUser.new(name,
111
154
  groups,
112
- :none, "",
113
- :none, "",
155
+ :none, '',
156
+ :none, '',
114
157
  false,
115
- "")
116
- s = @device.cmd("show run snmp all | no-more")
117
- groups.each do | group |
118
- line = /snmp-server user #{name} #{group}/.match(s)
119
- # puts "line: #{line}"
120
- refute(line.nil?)
158
+ '')
159
+ s = @device.cmd('show run snmp all | no-more')
160
+ groups.each do |group|
161
+ assert_match(user_pat(name, group), s)
121
162
  end
122
163
  snmpuser.destroy
123
164
  end
124
165
 
125
166
  def test_snmpuser_destroy
126
- name = "userv3testdestroy"
127
- group = "network-operator"
128
- s = @device.cmd("configure terminal")
129
- s = @device.cmd("snmp-server user #{name} #{group}")
130
- s = @device.cmd("end")
131
- node.cache_flush
132
-
133
- node.cache_flush
167
+ name = 'userv3testdestroy'
168
+ group = 'network-operator'
169
+ create_user(name, group)
134
170
 
135
171
  # get user
136
- snmpusers = SnmpUser.users()
137
- snmpusers.each do |key, snmpuser|
138
- # puts "name: #{snmpuser.name}"
139
- if key == name
140
- assert_equal(snmpuser.name, name)
141
- assert(snmpuser.engine_id.empty?)
142
- # destroy the user
143
- snmpuser.destroy
144
- break
145
- end
146
- end
172
+ snmpuser = SnmpUser.users[name]
173
+ assert_equal(snmpuser.name, name)
174
+ assert_empty(snmpuser.engine_id)
175
+ # destroy the user
176
+ destroy_user(snmpuser)
147
177
  # check user got removed.
148
- s = @device.cmd("show run snmp all | no-more")
149
- line = /snmp-server user #{name} #{group}/.match(s)
150
- assert(line.nil?)
151
- assert(SnmpUser.users[name].nil?)
178
+ refute_show_match(command: 'show run snmp all | no-more',
179
+ pattern: user_pat(name, group))
180
+ assert_nil(SnmpUser.users[name])
152
181
  end
153
182
 
154
183
  def test_snmpuser_auth_password_equal_invalid_param
155
- name = "testV3PwEqualInvalid"
156
- auth_pw = "test1234567"
157
- s = @device.cmd("configure terminal")
158
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw}")
159
- s = @device.cmd("end")
160
-
161
- # flush cache
162
- node.cache_flush
184
+ name = 'testV3PwEqualInvalid'
185
+ auth_pw = 'test1234567'
186
+ create_user(name, "network-admin auth md5 #{auth_pw}")
187
+
163
188
  # get users
164
- snmpusers = SnmpUser.users()
165
- s = @device.cmd("show snmp user | no-more")
166
- snmpusers.each do |key, snmpuser|
167
- refute(snmpuser.auth_password_equal?("", false)) if key == name
168
- end
169
- # unconfigure
170
- s = @device.cmd("configure terminal")
171
- s = @device.cmd("no snmp-server user #{name}")
172
- s = @device.cmd("end")
173
- node.cache_flush
189
+ refute(SnmpUser.users[name].auth_password_equal?('', false))
174
190
  end
175
191
 
176
192
  def test_snmpuser_auth_priv_password_equal_invalid_param
177
- name = "testV3PwEqualInvalid"
178
- auth_pw = "test1234567"
179
- s = @device.cmd("configure terminal")
180
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw} priv #{auth_pw}")
181
- s = @device.cmd("end")
182
-
183
- # flush cache
184
- node.cache_flush
193
+ name = 'testV3PwEqualInvalid'
194
+ auth_pw = 'test1234567'
195
+ create_user(name, "network-admin auth md5 #{auth_pw} priv #{auth_pw}")
196
+
185
197
  # get users
186
- snmpusers = SnmpUser.users()
187
- snmpusers.each do |key, snmpuser|
188
- if key == name
189
- refute(snmpuser.auth_password_equal?("", false))
190
- refute(snmpuser.priv_password_equal?("", false))
191
- end
192
- end
193
- # unconfigure
194
- s = @device.cmd("configure terminal")
195
- s = @device.cmd("no snmp-server user #{name}")
196
- s = @device.cmd("end")
197
- node.cache_flush
198
+ snmpuser = SnmpUser.users[name]
199
+ refute(snmpuser.auth_password_equal?('', false))
200
+ refute(snmpuser.priv_password_equal?('', false))
198
201
  end
199
202
 
200
203
  def test_snmpuser_auth_password_equal_priv_invalid_param
201
- name = "testV3PwEqualInvalid"
202
- auth_pw = "test1234567"
203
- s = @device.cmd("configure terminal")
204
- s = @device.cmd("snmp-server user #{name} network-operator auth md5 #{auth_pw} priv #{auth_pw}")
205
- s = @device.cmd("end")
206
-
207
- # flush cache
208
- node.cache_flush
204
+ name = 'testV3PwEqualInvalid'
205
+ auth_pw = 'test1234567'
206
+ create_user(name, "network-operator auth md5 #{auth_pw} priv #{auth_pw}")
207
+
209
208
  # get users
210
- snmpusers = SnmpUser.users()
211
- snmpusers.each do |key, snmpuser|
212
- if key == name
213
- assert(snmpuser.auth_password_equal?(auth_pw, false))
214
- refute(snmpuser.priv_password_equal?("", false))
215
- end
216
- end
217
- # unconfigure
218
- s = @device.cmd("configure terminal")
219
- s = @device.cmd("no snmp-server user #{name}")
220
- s = @device.cmd("end")
221
- node.cache_flush
209
+ snmpuser = SnmpUser.users[name]
210
+ assert(snmpuser.auth_password_equal?(auth_pw, false))
211
+ refute(snmpuser.priv_password_equal?('', false))
222
212
  end
223
213
 
224
214
  def test_snmpuser_auth_password_not_equal
225
- name = "testV3PwEqual"
226
- auth_pw = "test1234567"
227
- s = @device.cmd("configure terminal")
228
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw}")
229
- s = @device.cmd("end")
230
-
231
- # flush cache
232
- node.cache_flush
215
+ name = 'testV3PwEqual'
216
+ auth_pw = 'test1234567'
217
+ create_user(name, "network-admin auth md5 #{auth_pw}")
218
+
233
219
  # get users
234
- snmpusers = SnmpUser.users()
235
- snmpusers.each do |key, snmpuser|
236
- refute(snmpuser.auth_password_equal?("test12345", false)) if key == name
237
- end
238
- s = @device.cmd("configure terminal")
239
- s = @device.cmd("no snmp-server user #{name}")
240
- s = @device.cmd("end")
241
- node.cache_flush
220
+ snmpuser = SnmpUser.users[name]
221
+ refute(snmpuser.auth_password_equal?('test12345', false))
242
222
  end
243
223
 
244
224
  def test_snmpuser_auth_password_equal
245
- name = "testV3PwEqual"
246
- auth_pw = "test1234567"
247
- s = @device.cmd("configure terminal")
248
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw}")
249
- s = @device.cmd("end")
250
-
251
- # flush cache
252
- node.cache_flush
225
+ name = 'testV3PwEqual'
226
+ auth_pw = 'test1234567'
227
+ create_user(name, "network-admin auth md5 #{auth_pw}")
228
+
253
229
  # get users
254
- snmpusers = SnmpUser.users()
255
- snmpusers.each do |key, snmpuser|
256
- assert(snmpuser.auth_password_equal?(auth_pw, false)) if key == name
257
- end
258
- s = @device.cmd("configure terminal")
259
- s = @device.cmd("no snmp-server user #{name}")
260
- s = @device.cmd("end")
261
- node.cache_flush
262
- end
263
-
264
- def test_snmpuser_auth_clear_password_localizedkey_false
265
- name = "testV3ClearPwLocalFalse"
266
- auth_pw = "test123456"
267
- groups = []
268
- groups << "network-admin"
269
- assert_raises(CliError) do
270
- snmpuser = SnmpUser.new(name,
271
- groups,
272
- :sha, auth_pw,
273
- :none, "",
274
- true,
275
- "")
276
- end
230
+ assert(SnmpUser.users[name].auth_password_equal?(auth_pw, false))
231
+ end
232
+
233
+ def test_snmpuser_auth_priv_password_equal_empty
234
+ name = 'testV3PwEmpty'
235
+ create_user(name, 'network-admin')
236
+ # nil and "" are treated interchangeably
237
+ assert(SnmpUser.users[name].auth_password_equal?('', false))
238
+ assert(SnmpUser.users[name].priv_password_equal?('', false))
239
+ assert(SnmpUser.users[name].auth_password_equal?(nil, false))
240
+ assert(SnmpUser.users[name].priv_password_equal?(nil, false))
277
241
  end
278
242
 
279
243
  def test_snmpuser_auth_password_equal_localizedkey
280
- name = "testV3PwEqual"
281
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
282
- s = @device.cmd("configure terminal")
283
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw} localizedkey")
284
- s = @device.cmd("end")
285
-
286
- # flush cache
287
- node.cache_flush
244
+ name = 'testV3PwEqual'
245
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
246
+ create_user(name, "network-admin auth md5 #{auth_pw} localizedkey")
247
+
288
248
  # get users
289
- snmpusers = SnmpUser.users()
290
- snmpusers.each do |key, snmpuser|
291
- if key == name
292
- assert(snmpuser.auth_password_equal?(auth_pw, true))
293
- # we should verify that if we give a wrong password, the api will return false
294
- refute(snmpuser.auth_password_equal?("0xfe6c", true))
295
- end
296
- end
297
- s = @device.cmd("configure terminal")
298
- s = @device.cmd("no snmp-server user #{name}")
299
- s = @device.cmd("end")
300
- node.cache_flush
249
+ snmpuser = SnmpUser.users[name]
250
+ assert(snmpuser.auth_password_equal?(auth_pw, true))
251
+ # verify that if we give a wrong password, the api will return false
252
+ refute(snmpuser.auth_password_equal?('0xfe6c', true))
301
253
  end
302
254
 
303
255
  def test_snmpuser_auth_priv_password_equal_localizedkey
304
- name = "testV3PwEqual"
305
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
306
- priv_pw = "0x29916eac22d90362598abef1b9045018"
307
- s = @device.cmd("configure terminal")
308
- s = @device.cmd("snmp-server user #{name} network-admin auth md5 #{auth_pw} priv aes-128 #{priv_pw} localizedkey")
309
- s = @device.cmd("end")
310
-
311
- # flush cache
312
- node.cache_flush
256
+ name = 'testV3PwEqual'
257
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
258
+ priv_pw = '0x29916eac22d90362598abef1b9045018'
259
+ create_user(name, "network-admin auth md5 #{auth_pw} " \
260
+ "priv aes-128 #{priv_pw} localizedkey")
261
+
313
262
  # get users
314
- snmpusers = SnmpUser.users()
315
- snmpusers.each do |key, snmpuser|
316
- if key == name
317
- assert(snmpuser.auth_password_equal?(auth_pw, true))
318
- assert(snmpuser.priv_password_equal?(priv_pw, true))
319
- refute(snmpuser.priv_password_equal?("0x2291", true))
320
- end
321
- end
322
- s = @device.cmd("configure terminal")
323
- s = @device.cmd("no snmp-server user #{name}")
324
- s = @device.cmd("end")
325
- node.cache_flush
263
+ snmpuser = SnmpUser.users[name]
264
+ assert(snmpuser.auth_password_equal?(auth_pw, true))
265
+ assert(snmpuser.priv_password_equal?(priv_pw, true))
266
+ refute(snmpuser.priv_password_equal?('0x2291', true))
326
267
  end
327
268
 
328
269
  def test_snmpuser_auth_priv_des_password_equal
329
- name = "testV3PwEqual"
330
- auth_pw = "test1234567"
331
- priv_pw = "testdes1234"
332
- s = @device.cmd("configure terminal")
333
- s = @device.cmd("snmp-server user #{name} network-operator auth md5 #{auth_pw} priv #{priv_pw}")
334
- s = @device.cmd("end")
335
-
336
- # flush cache
337
- node.cache_flush
338
- # get users
339
- snmpusers = SnmpUser.users()
340
- s = @device.cmd("show snmp user | no-more")
341
- snmpusers.each do |key, snmpuser|
342
- if key == name
343
- assert(snmpuser.auth_password_equal?(auth_pw, false))
344
- assert(snmpuser.priv_password_equal?(priv_pw, false))
345
- end
346
- end
347
- s = @device.cmd("configure terminal")
348
- s = @device.cmd("no snmp-server user #{name}")
349
- s = @device.cmd("end")
350
- node.cache_flush
351
- end
352
-
353
- def test_snmpuser_create_with_single_group_unknown_auth_nopriv
354
- name = "userv3testUnknownAuth"
355
- groups = []
356
- groups << "network-admin"
357
- assert_raises(ArgumentError) do
358
- snmpuser = SnmpUser.new(name,
359
- groups,
360
- :none, "test12345",
361
- :none, "",
362
- false,
363
- "")
364
- end
365
- end
270
+ name = 'testV3PwEqual'
271
+ auth_pw = 'test1234567'
272
+ priv_pw = 'testdes1234'
273
+ create_user(name, "network-operator auth md5 #{auth_pw} priv #{priv_pw}")
366
274
 
367
- def test_snmpuser_create_with_single_group_auth_unknown_priv
368
- name = "userv3testUnknownPriv"
369
- groups = []
370
- groups << "network-admin"
371
- assert_raises(ArgumentError) do
372
- snmpuser = SnmpUser.new(name,
373
- groups,
374
- :sha, "test12345",
375
- :none, "test12345",
376
- false,
377
- "")
378
- end
275
+ # get users
276
+ snmpuser = SnmpUser.users[name]
277
+ assert(snmpuser.auth_password_equal?(auth_pw, false))
278
+ assert(snmpuser.priv_password_equal?(priv_pw, false))
379
279
  end
380
280
 
381
281
  def test_snmpuser_create_with_single_group_auth_md5_nopriv
382
- name = "userv3test5"
383
- groups = []
384
- groups << "network-admin"
385
- auth_pw = "test1234567"
386
- snmpuser = SnmpUser.new(name,
387
- groups,
388
- :md5, auth_pw,
389
- :none, "",
390
- false, # clear text
391
- "")
392
- s = @device.cmd("show run snmp all | in #{name} | no-more")
393
- line = /snmp-server user #{name} network-admin auth md5 \S+ localizedkey/.match(s)
394
- # puts "line: #{line}"
395
- refute(line.nil?)
396
- snmpuser.destroy
282
+ name = 'userv3test5'
283
+ groups = ['network-admin']
284
+ auth_pw = 'test1234567'
285
+ snmpuser = SnmpUser.new(name,
286
+ groups,
287
+ :md5, auth_pw,
288
+ :none, '',
289
+ false, # clear text
290
+ '')
291
+ assert_show_match(
292
+ pattern: /#{user_pat(name)} auth md5 \S+ localizedkey/,
293
+ command: "show run snmp all | in #{name} | no-more")
294
+ snmpuser.destroy
397
295
  end
398
296
 
399
297
  def test_snmpuser_create_with_single_group_auth_md5_nopriv_pw_localized
400
- name = "userv3testauth"
401
- groups = []
402
- groups << "network-admin"
403
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
404
- snmpuser = SnmpUser.new(name,
405
- groups,
406
- :md5, auth_pw,
407
- :none, "",
408
- true, # localized
409
- "")
410
- assert_equal(snmpuser.name, name)
411
- assert(snmpuser.engine_id.empty?)
412
- s = @device.cmd("show run snmp all | in #{name} | no-more")
413
- # puts "cmd #{s}"
414
- line = /snmp-server user #{name} network-admin auth md5 #{auth_pw} localizedkey/.match(s)
415
- # puts "line: #{line}"
416
- refute(line.nil?)
417
- snmpuser.destroy
418
- end
419
-
420
- def test_snmpuser_create_with_single_group_auth_sha_nopriv
421
- name = "userv3testsha"
422
- groups = []
423
- groups << "network-admin"
424
- auth_pw = "test1234567"
425
- snmpuser = SnmpUser.new(name,
426
- groups,
427
- :sha, auth_pw,
428
- :none, "",
429
- false, # clear text
430
- "")
431
- s = @device.cmd("show run snmp all | in #{name} | no-more")
432
- line = /snmp-server user #{name} network-admin auth sha \S+ localizedkey/.match(s)
433
- # puts "line: #{line}"
434
- refute(line.nil?)
435
- snmpuser.destroy
436
- end
437
-
438
- def test_snmpuser_create_with_single_group_auth_sha_clear_pw_nopriv_pw_localized_true
439
- name = "userv3testauthsha1"
440
- groups = []
441
- groups << "network-admin"
442
- auth_pw = "test123456"
443
- assert_raises(CliError) do
444
- snmpuser = SnmpUser.new(name,
445
- groups,
446
- :sha, auth_pw,
447
- :none, "",
448
- true, # localized key
449
- "")
450
- end
451
- end
452
-
453
- def test_snmpuser_create_with_single_group_auth_sha_short_length_pw_nopriv
454
- name = "userv3testauthsha2"
455
- groups = []
456
- groups << "network-admin"
457
- auth_pw = "test" # NXOS Password must be atleast 8 characters
458
- assert_raises(CliError) do
459
- snmpuser = SnmpUser.new(name,
460
- groups,
461
- :sha, auth_pw,
462
- :none, "",
463
- false, # localized key
464
- "")
465
- end
466
- end
467
-
468
- # If the auth pw is in hex and localized key param in constructor is false,
469
- # then the pw got localized by the device again.
470
- def test_snmpuser_create_with_single_group_auth_sha_nopriv_pw_localized_localizedkey_false
471
- name = "userv3testauthsha3"
472
- groups = []
473
- groups << "network-admin"
474
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
475
-
476
- snmpuser = SnmpUser.new(name,
477
- groups,
478
- :sha, auth_pw,
479
- :none, "",
480
- false, # localized key
481
- "")
482
- s = @device.cmd("show run snmp all | in #{name} | no-more")
483
- # puts "cmd #{s}"
484
- line = /snmp-server user #{name} network-admin auth sha \S+ localizedkey/.match(s)
485
- # puts "line: #{line}"
486
- refute(line.nil?)
487
- snmpuser.destroy
488
- end
489
-
490
- def test_snmpuser_create_with_single_group_auth_sha_nopriv_pw_localized
491
- name = "userv3testauthsha4"
492
- groups = []
493
- groups << "network-admin"
494
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
495
- snmpuser = SnmpUser.new(name,
496
- groups,
497
- :sha, auth_pw,
498
- :none, "",
499
- true, # localized
500
- "")
501
- s = @device.cmd("show run snmp all | in #{name} | no-more")
502
- # puts "cmd #{s}"
503
- line = /snmp-server user #{name} network-admin auth sha #{auth_pw} localizedkey/.match(s)
504
- # puts "line: #{line}"
505
- refute(line.nil?)
506
- snmpuser.destroy
507
- end
508
-
509
- def test_snmpuser_create_with_single_group_auth_md5_priv_des
510
- name = "userv3test6"
511
- groups = []
512
- groups << "network-admin"
513
- auth_pw = "test1234567"
514
- priv_pw = "priv1234567des"
515
- snmpuser = SnmpUser.new(name,
516
- groups,
517
- :md5, auth_pw,
518
- :des, priv_pw,
519
- false, # clear text
520
- "")
521
- s = @device.cmd("show run snmp all | in #{name} | no-more")
522
- line = /snmp-server user #{name} network-admin auth md5 \S+ priv \S+ localizedkey/.match(s)
523
- # puts "line: #{line}"
524
- refute(line.nil?)
525
- snmpuser.destroy
526
- end
527
-
528
- def test_snmpuser_create_with_single_group_auth_md5_priv_des_pw_localized
529
- name = "userv3testauth"
530
- groups = []
531
- groups << "network-admin"
532
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
533
- priv_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
534
- snmpuser = SnmpUser.new(name,
535
- groups,
536
- :md5, auth_pw,
537
- :des, priv_pw,
538
- true, # localized
539
- "")
540
- s = @device.cmd("show run snmp all | in #{name} | no-more")
541
- # puts "cmd #{s}"
542
- line = /snmp-server user #{name} network-admin auth md5 #{auth_pw} priv #{priv_pw} localizedkey/.match(s)
543
- # puts "line: #{line}"
544
- refute(line.nil?)
545
- snmpuser.destroy
546
- end
547
-
548
- def test_snmpuser_create_with_single_group_auth_md5_priv_aes128
549
- name = "userv3test7"
550
- groups = []
551
- groups << "network-admin"
552
- auth_pw = "test1234567"
553
- priv_pw = "priv1234567aes"
554
- snmpuser = SnmpUser.new(name,
555
- groups,
556
- :md5, auth_pw,
557
- :aes128, priv_pw,
558
- false, # clear text
559
- "")
560
- s = @device.cmd("show run snmp all | in #{name} | no-more")
561
- line = /snmp-server user #{name} network-admin auth md5 \S+ priv aes-128 \S+ localizedkey/.match(s)
562
- # puts "line: #{line}"
563
- refute(line.nil?)
564
- snmpuser.destroy
565
- end
566
-
567
- def test_snmpuser_create_with_single_group_auth_md5_priv_aes128_pw_localized
568
- name = "userv3testauth"
569
- groups = []
570
- groups << "network-admin"
571
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
572
- priv_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
573
- snmpuser = SnmpUser.new(name,
574
- groups,
575
- :md5, auth_pw,
576
- :aes128, priv_pw,
577
- true, # localized
578
- "")
579
- s = @device.cmd("show run snmp all | in #{name} | no-more")
580
- # puts "cmd #{s}"
581
- line = /snmp-server user #{name} network-admin auth md5 #{auth_pw} priv aes-128 #{priv_pw} localizedkey/.match(s)
582
- # puts "line: #{line}"
583
- refute(line.nil?)
584
- snmpuser.destroy
585
- end
586
-
587
- def test_snmpuser_create_with_single_group_auth_sha_priv_des
588
- name = "userv3test8"
589
- groups = []
590
- groups << "network-admin"
591
- auth_pw = "test1234567"
592
- priv_pw = "priv1234567des"
593
- snmpuser = SnmpUser.new(name,
594
- groups,
595
- :sha, auth_pw,
596
- :des, priv_pw,
597
- false, # clear text
598
- "")
599
- s = @device.cmd("show run snmp all | in #{name} | no-more")
600
- line = /snmp-server user #{name} network-admin auth sha \S+ priv \S+ localizedkey/.match(s)
601
- # puts "line: #{line}"
602
- refute(line.nil?)
603
- snmpuser.destroy
604
- end
605
-
606
- def test_snmpuser_create_with_single_group_auth_md5_priv_sha_pw_localized
607
- name = "userv3testauth"
608
- groups = []
609
- groups << "network-admin"
610
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
611
- priv_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
612
- snmpuser = SnmpUser.new(name,
613
- groups,
614
- :sha, auth_pw,
615
- :des, priv_pw,
616
- true, # localized
617
- "")
618
- s = @device.cmd("show run snmp all | in #{name} | no-more")
619
- # puts "cmd #{s}"
620
- line = /snmp-server user #{name} network-admin auth sha #{auth_pw} priv #{priv_pw} localizedkey/.match(s)
621
- # puts "line: #{line}"
622
- refute(line.nil?)
623
- snmpuser.destroy
624
- end
625
-
626
- def test_snmpuser_create_with_single_group_auth_sha_priv_aes128
627
- name = "userv3test9"
628
- groups = []
629
- groups << "network-admin"
630
- auth_pw = "test1234567"
631
- priv_pw = "priv1234567aes"
632
- snmpuser = SnmpUser.new(name,
633
- groups,
634
- :sha, auth_pw,
635
- :aes128, priv_pw,
636
- false, # clear text
637
- "")
638
- s = @device.cmd("show run snmp all | in #{name} | no-more")
639
- line = /snmp-server user #{name} network-admin auth sha \S+ priv aes-128 \S+ localizedkey/.match(s)
640
- # puts "line: #{line}"
641
- refute(line.nil?)
642
- snmpuser.destroy
643
- end
644
-
645
- def test_snmpuser_create_with_single_group_auth_sha_priv_aes128_pw_localized
646
- name = "userv3testauth"
647
- groups = []
648
- groups << "network-admin"
649
- auth_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
650
- priv_pw = "0xfe6cf9aea159c2c38e0a79ec23ed3cbb"
651
- snmpuser = SnmpUser.new(name,
652
- groups,
653
- :sha, auth_pw,
654
- :aes128, priv_pw,
655
- true, # localized
656
- "")
657
- s = @device.cmd("show run snmp all | in #{name} | no-more")
658
- line = /snmp-server user #{name} network-admin auth sha #{auth_pw} priv aes-128 #{priv_pw} localizedkey/.match(s)
659
- # puts "line: #{line}"
660
- refute(line.nil?)
661
- snmpuser.destroy
662
- end
663
-
664
- def test_snmpuser_create_destroy_with_engine_id
665
- name = "test_with_engine_id"
666
- auth_pw = "testpassword"
667
- priv_pw = "testpassword"
668
- engine_id = "128:12:12:12:12"
669
- snmpuser = SnmpUser.new(name, [""], :md5, auth_pw, :des, priv_pw,
670
- false, engine_id)
671
- s = @device.cmd("show run snmp all | in #{name} | no-more")
672
- line = /snmp-server user #{name} auth \S+ \S+ priv .*\S+ localizedkey engineID #{engine_id}/.match(s)
673
- refute(line.nil?)
674
- user = SnmpUser.users["#{name} #{engine_id}"]
675
- refute(user.nil?)
676
- assert_equal(snmpuser.name, user.name)
677
- assert_equal(snmpuser.name, name)
678
- assert_equal(snmpuser.engine_id, engine_id)
679
- assert_equal(snmpuser.engine_id, user.engine_id)
680
- snmpuser.destroy
681
- s = @device.cmd("show run snmp all | in #{name} | no-more")
682
- line = /snmp-server user #{name} auth \S+ \S+ priv .*\S+ localizedkey engineID #{engine_id}/.match(s)
683
- assert(line.nil?)
684
- assert(SnmpUser.users["#{name} #{engine_id}"].nil?)
685
- end
686
-
687
- def test_snmpuser_authpassword
688
- name = "test_authpassword"
689
- auth_pw = "0x123456"
690
- snmpuser = SnmpUser.new(name, [""], :md5, auth_pw, :none, "", true, "")
691
-
692
- pw = snmpuser.auth_password
693
- assert_equal(auth_pw, pw)
694
- snmpuser.destroy
695
- end
696
-
697
- def test_snmpuser_authpassword_with_engineid
698
- name = "test_authpassword"
699
- auth_pw = "0x123456"
700
- engine_id = "128:12:12:12:12"
701
- snmpuser = SnmpUser.new(name, [""], :md5, auth_pw, :none, "", true, engine_id)
702
-
703
- pw = snmpuser.auth_password
704
- assert_equal(auth_pw, pw)
705
- snmpuser.destroy
706
- end
707
-
708
- def test_snmpuser_privpassword
709
- name = "test_privpassword"
710
- priv_password = "0x123456"
711
- snmpuser = SnmpUser.new(name, [""], :md5, priv_password, :des, priv_password,
712
- true, "")
713
-
714
- pw = snmpuser.priv_password
715
- assert_equal(priv_password, pw)
716
- snmpuser.destroy
717
-
718
- snmpuser = SnmpUser.new(name, [""], :md5, priv_password, :aes128, priv_password,
719
- true, "")
720
- pw = snmpuser.priv_password
721
- assert_equal(priv_password, pw)
722
- snmpuser.destroy
723
- end
724
-
725
- def test_snmpuser_privpassword_with_engineid
726
- name = "test_privpassword"
727
- priv_password = "0x123456"
728
- engine_id = "128:12:12:12:12"
729
- snmpuser = SnmpUser.new(name, [""], :md5, priv_password, :des, priv_password,
730
- true, engine_id)
731
- pw = snmpuser.priv_password
732
- assert_equal(priv_password, pw)
733
- snmpuser.destroy
734
-
735
- snmpuser = SnmpUser.new(name, [""], :md5, priv_password, :aes128, priv_password,
736
- true, "")
737
- pw = snmpuser.priv_password
738
- assert_equal(priv_password, pw)
739
- snmpuser.destroy
740
- end
741
-
742
- def test_snmpuser_auth_password_equal_with_engineid
743
- name = "test_authpass_equal"
744
- auth_pass = "testpassword"
745
- engine_id = "128:12:12:12:12"
746
-
747
- snmpuser = SnmpUser.new(name, [""], :md5, auth_pass, :none, "", false,
748
- engine_id)
749
-
750
- assert(snmpuser.auth_password_equal?(auth_pass, false))
751
- # our api should be able to detect wrong password
752
- refute(snmpuser.auth_password_equal?("test2468", false))
753
- snmpuser.destroy
754
- end
755
-
756
- def test_snmpuser_priv_password_equal_with_engineid
757
- name = "test_privpass_equal"
758
- priv_pass = "testpassword"
759
- engine_id = "128:12:12:12:12"
760
-
761
- snmpuser = SnmpUser.new(name, [""], :md5, priv_pass, :des, priv_pass, false,
762
- engine_id)
763
- assert(snmpuser.priv_password_equal?(priv_pass, false))
764
- refute(snmpuser.priv_password_equal?("test2468", false))
765
- snmpuser.destroy
766
-
767
- snmpuser = SnmpUser.new(name, [""], :md5, priv_pass, :aes128, priv_pass, false,
768
- engine_id)
769
- assert(snmpuser.priv_password_equal?(priv_pass, false))
770
- refute(false, snmpuser.priv_password_equal?("test2468", false))
771
- snmpuser.destroy
772
- end
773
-
774
- def test_snmpuser_default_groups
775
- groups = [DEFAULT_SNMP_USER_GROUP_NAME]
776
- assert_equal(groups, SnmpUser.default_groups(),
777
- "Error: Wrong default groups")
778
- end
779
-
780
- def test_snmpuser_default_auth_protocol
781
- assert_equal(:md5,
782
- SnmpUser.default_auth_protocol(),
783
- "Error: Wrong default auth protocol")
784
- end
785
-
786
- def test_snmpuser_default_auth_password
787
- assert_equal(DEFAULT_SNMP_USER_AUTH_PASSWORD,
788
- SnmpUser.default_auth_password(),
789
- "Error: Wrong default auth password")
790
- end
791
-
792
- def test_snmpuser_default_priv_protocol
793
- assert_equal(:des,
794
- SnmpUser.default_priv_protocol(),
795
- "Error: Wrong default priv protocol")
796
- end
797
-
798
- def test_snmpuser_default_priv_password
799
- assert_equal(DEFAULT_SNMP_USER_PRIV_PASSWORD,
800
- SnmpUser.default_priv_password(),
801
- "Error: Wrong default priv password")
802
- end
298
+ name = 'userv3testauth'
299
+ groups = ['network-admin']
300
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
301
+ snmpuser = SnmpUser.new(name,
302
+ groups,
303
+ :md5, auth_pw,
304
+ :none, '',
305
+ true, # localized
306
+ '')
307
+ assert_equal(snmpuser.name, name)
308
+ assert_empty(snmpuser.engine_id)
309
+ assert_show_match(
310
+ pattern: /#{user_pat(name)} auth md5 #{auth_pw} localizedkey/,
311
+ command: "show run snmp all | in #{name} | no-more")
312
+ snmpuser.destroy
313
+ end
314
+
315
+ def test_snmpuser_create_with_single_group_auth_sha_nopriv
316
+ name = 'userv3testsha'
317
+ groups = ['network-admin']
318
+ auth_pw = 'test1234567'
319
+ snmpuser = SnmpUser.new(name,
320
+ groups,
321
+ :sha, auth_pw,
322
+ :none, '',
323
+ false, # clear text
324
+ '')
325
+ assert_show_match(
326
+ pattern: /#{user_pat(name)} auth sha \S+ localizedkey/,
327
+ command: "show run snmp all | in #{name} | no-more")
328
+ snmpuser.destroy
329
+ end
330
+
331
+ # If the auth pw is in hex and localized key param in constructor is false,
332
+ # then the pw got localized by the device again.
333
+ def test_create_1_group_auth_sha_nopriv_pw_localized_localizedkey_false
334
+ name = 'userv3testauthsha3'
335
+ groups = ['network-admin']
336
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
337
+
338
+ snmpuser = SnmpUser.new(name,
339
+ groups,
340
+ :sha, auth_pw,
341
+ :none, '',
342
+ false, # localized key
343
+ '')
344
+ assert_show_match(
345
+ pattern: /#{user_pat(name)} auth sha \S+ localizedkey/,
346
+ command: "show run snmp all | in #{name} | no-more")
347
+ snmpuser.destroy
348
+ end
349
+
350
+ def test_snmpuser_create_with_single_group_auth_sha_nopriv_pw_localized
351
+ name = 'userv3testauthsha4'
352
+ groups = ['network-admin']
353
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
354
+ snmpuser = SnmpUser.new(name,
355
+ groups,
356
+ :sha, auth_pw,
357
+ :none, '',
358
+ true, # localized
359
+ '')
360
+ assert_show_match(
361
+ pattern: /#{user_pat(name)} auth sha #{auth_pw} localizedkey/,
362
+ command: "show run snmp all | in #{name} | no-more")
363
+ snmpuser.destroy
364
+ end
365
+
366
+ def test_snmpuser_create_with_single_group_auth_md5_priv_des
367
+ name = 'userv3test6'
368
+ groups = ['network-admin']
369
+ auth_pw = 'test1234567'
370
+ priv_pw = 'priv1234567des'
371
+ snmpuser = SnmpUser.new(name,
372
+ groups,
373
+ :md5, auth_pw,
374
+ :des, priv_pw,
375
+ false, # clear text
376
+ '')
377
+ assert_show_match(
378
+ pattern: /#{user_pat(name)} auth md5 \S+ priv \S+ localizedkey/,
379
+ command: "show run snmp all | in #{name} | no-more")
380
+ snmpuser.destroy
381
+ end
382
+
383
+ def test_snmpuser_create_with_single_group_auth_md5_priv_des_pw_localized
384
+ name = 'userv3testauth'
385
+ groups = ['network-admin']
386
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
387
+ priv_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
388
+ snmpuser = SnmpUser.new(name,
389
+ groups,
390
+ :md5, auth_pw,
391
+ :des, priv_pw,
392
+ true, # localized
393
+ '')
394
+ # rubocop:disable Metrics/LineLength
395
+ assert_show_match(
396
+ pattern: /#{user_pat(name)} auth md5 #{auth_pw} priv #{priv_pw} localizedkey/,
397
+ command: "show run snmp all | in #{name} | no-more")
398
+ # rubocop:enable Metrics/LineLength
399
+ snmpuser.destroy
400
+ end
401
+
402
+ def test_snmpuser_create_with_single_group_auth_md5_priv_aes128
403
+ name = 'userv3test7'
404
+ groups = ['network-admin']
405
+ auth_pw = 'test1234567'
406
+ priv_pw = 'priv1234567aes'
407
+ snmpuser = SnmpUser.new(name,
408
+ groups,
409
+ :md5, auth_pw,
410
+ :aes128, priv_pw,
411
+ false, # clear text
412
+ '')
413
+ assert_show_match(
414
+ pattern: /#{user_pat(name)} auth md5 \S+ priv aes-128 \S+ localizedkey/,
415
+ command: "show run snmp all | in #{name} | no-more")
416
+ snmpuser.destroy
417
+ end
418
+
419
+ def test_snmpuser_create_with_single_group_auth_md5_priv_aes128_pw_localized
420
+ name = 'userv3testauth'
421
+ groups = ['network-admin']
422
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
423
+ priv_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
424
+ snmpuser = SnmpUser.new(name,
425
+ groups,
426
+ :md5, auth_pw,
427
+ :aes128, priv_pw,
428
+ true, # localized
429
+ '')
430
+ # rubocop:disable Metrics/LineLength
431
+ assert_show_match(
432
+ pattern: /#{user_pat(name)} auth md5 #{auth_pw} priv aes-128 #{priv_pw} localizedkey/,
433
+ command: "show run snmp all | in #{name} | no-more")
434
+ # rubocop:enable Metrics/LineLength
435
+ snmpuser.destroy
436
+ end
437
+
438
+ def test_snmpuser_create_with_single_group_auth_sha_priv_des
439
+ name = 'userv3test8'
440
+ groups = ['network-admin']
441
+ auth_pw = 'test1234567'
442
+ priv_pw = 'priv1234567des'
443
+ snmpuser = SnmpUser.new(name,
444
+ groups,
445
+ :sha, auth_pw,
446
+ :des, priv_pw,
447
+ false, # clear text
448
+ '')
449
+ assert_show_match(
450
+ pattern: /#{user_pat(name)} auth sha \S+ priv \S+ localizedkey/,
451
+ command: "show run snmp all | in #{name} | no-more")
452
+ snmpuser.destroy
453
+ end
454
+
455
+ def test_snmpuser_create_with_single_group_auth_md5_priv_sha_pw_localized
456
+ name = 'userv3testauth'
457
+ groups = ['network-admin']
458
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
459
+ priv_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
460
+ snmpuser = SnmpUser.new(name,
461
+ groups,
462
+ :sha, auth_pw,
463
+ :des, priv_pw,
464
+ true, # localized
465
+ '')
466
+ # rubocop:disable Metrics/LineLength
467
+ assert_show_match(
468
+ pattern: /#{user_pat(name)} auth sha #{auth_pw} priv #{priv_pw} localizedkey/,
469
+ command: "show run snmp all | in #{name} | no-more")
470
+ # rubocop:enable Metrics/LineLength
471
+ snmpuser.destroy
472
+ end
473
+
474
+ def test_snmpuser_create_with_single_group_auth_sha_priv_aes128
475
+ name = 'userv3test9'
476
+ groups = ['network-admin']
477
+ auth_pw = 'test1234567'
478
+ priv_pw = 'priv1234567aes'
479
+ snmpuser = SnmpUser.new(name,
480
+ groups,
481
+ :sha, auth_pw,
482
+ :aes128, priv_pw,
483
+ false, # clear text
484
+ '')
485
+ assert_show_match(
486
+ pattern: /#{user_pat(name)} auth sha \S+ priv aes-128 \S+ localizedkey/,
487
+ command: "show run snmp all | in #{name} | no-more")
488
+ snmpuser.destroy
489
+ end
490
+
491
+ def test_snmpuser_create_with_single_group_auth_sha_priv_aes128_pw_localized
492
+ name = 'userv3testauth'
493
+ groups = ['network-admin']
494
+ auth_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
495
+ priv_pw = '0xfe6cf9aea159c2c38e0a79ec23ed3cbb'
496
+ snmpuser = SnmpUser.new(name,
497
+ groups,
498
+ :sha, auth_pw,
499
+ :aes128, priv_pw,
500
+ true, # localized
501
+ '')
502
+ # rubocop:disable Metrics/LineLength
503
+ assert_show_match(
504
+ pattern: /#{user_pat(name)} auth sha #{auth_pw} priv aes-128 #{priv_pw} localizedkey/,
505
+ command: "show run snmp all | in #{name} | no-more")
506
+ # rubocop:enable Metrics/LineLength
507
+ snmpuser.destroy
508
+ end
509
+
510
+ def test_snmpuser_create_destroy_with_engine_id
511
+ name = 'test_with_engine_id'
512
+ auth_pw = 'testpassword'
513
+ priv_pw = 'testpassword'
514
+ engine_id = '128:12:12:12:12'
515
+ snmpuser = SnmpUser.new(name, [''], :md5, auth_pw, :des, priv_pw,
516
+ false, engine_id)
517
+ # rubocop:disable Metrics/LineLength
518
+ assert_show_match(
519
+ pattern: /snmp-server user #{name} auth \S+ \S+ priv .*\S+ localizedkey engineID #{engine_id}/,
520
+ command: "show run snmp all | in #{name} | no-more")
521
+ # rubocop:enable Metrics/LineLength
522
+ user = SnmpUser.users["#{name} #{engine_id}"]
523
+ refute_nil(user)
524
+ assert_equal(snmpuser.name, user.name)
525
+ assert_equal(snmpuser.name, name)
526
+ assert_equal(snmpuser.engine_id, engine_id)
527
+ assert_equal(snmpuser.engine_id, user.engine_id)
528
+ snmpuser.destroy
529
+ # rubocop:disable Metrics/LineLength
530
+ refute_show_match(
531
+ pattern: /snmp-server user #{name} auth \S+ \S+ priv .*\S+ localizedkey engineID #{engine_id}/,
532
+ command: "show run snmp all | in #{name} | no-more")
533
+ # rubocop:enable Metrics/LineLength
534
+ assert_nil(SnmpUser.users["#{name} #{engine_id}"])
535
+ end
536
+
537
+ def test_snmpuser_authpassword
538
+ name = 'test_authpassword'
539
+ auth_pw = '0x123456'
540
+ snmpuser = SnmpUser.new(name, [''], :md5, auth_pw, :none, '', true, '')
541
+
542
+ pw = snmpuser.auth_password
543
+ assert_equal(auth_pw, pw)
544
+ snmpuser.destroy
545
+ end
546
+
547
+ def test_snmpuser_authpassword_with_engineid
548
+ name = 'test_authpassword'
549
+ auth_pw = '0x123456'
550
+ engine_id = '128:12:12:12:12'
551
+ snmpuser = SnmpUser.new(name, [''], :md5, auth_pw,
552
+ :none, '', true, engine_id)
553
+
554
+ pw = snmpuser.auth_password
555
+ assert_equal(auth_pw, pw)
556
+ snmpuser.destroy
557
+ end
558
+
559
+ def test_snmpuser_privpassword
560
+ name = 'test_privpassword'
561
+ priv_password = '0x123456'
562
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_password,
563
+ :des, priv_password, true, '')
564
+
565
+ pw = snmpuser.priv_password
566
+ assert_equal(priv_password, pw)
567
+ snmpuser.destroy
568
+
569
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_password,
570
+ :aes128, priv_password, true, '')
571
+ pw = snmpuser.priv_password
572
+ assert_equal(priv_password, pw)
573
+ snmpuser.destroy
574
+ end
575
+
576
+ def test_snmpuser_privpassword_with_engineid
577
+ name = 'test_privpassword2'
578
+ priv_password = '0x123456'
579
+ engine_id = '128:12:12:12:12'
580
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_password,
581
+ :des, priv_password, true, engine_id)
582
+ pw = snmpuser.priv_password
583
+ assert_equal(priv_password, pw)
584
+ snmpuser.destroy
585
+
586
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_password,
587
+ :aes128, priv_password, true, '')
588
+ pw = snmpuser.priv_password
589
+ assert_equal(priv_password, pw)
590
+ snmpuser.destroy
591
+ end
592
+
593
+ def test_snmpuser_auth_password_equal_with_engineid
594
+ name = 'test_authpass_equal'
595
+ auth_pass = 'testpassword'
596
+ engine_id = '128:12:12:12:12'
597
+
598
+ snmpuser = SnmpUser.new(name, [''], :md5, auth_pass, :none, '', false,
599
+ engine_id)
600
+
601
+ assert(snmpuser.auth_password_equal?(auth_pass, false))
602
+ # our api should be able to detect wrong password
603
+ refute(snmpuser.auth_password_equal?('test2468', false))
604
+ snmpuser.destroy
605
+ end
606
+
607
+ def test_snmpuser_priv_password_equal_with_engineid
608
+ name = 'test_privpass_equal'
609
+ priv_pass = 'testpassword'
610
+ engine_id = '128:12:12:12:12'
611
+
612
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_pass, :des, priv_pass, false,
613
+ engine_id)
614
+ assert(snmpuser.priv_password_equal?(priv_pass, false))
615
+ refute(snmpuser.priv_password_equal?('test2468', false))
616
+ snmpuser.destroy
617
+
618
+ snmpuser = SnmpUser.new(name, [''], :md5, priv_pass,
619
+ :aes128, priv_pass, false, engine_id)
620
+ assert(snmpuser.priv_password_equal?(priv_pass, false))
621
+ refute(snmpuser.priv_password_equal?('test2468', false))
622
+ snmpuser.destroy
623
+ end
624
+
625
+ def test_snmpuser_default_groups
626
+ groups = [DEFAULT_SNMP_USER_GROUP_NAME]
627
+ assert_equal(groups, SnmpUser.default_groups,
628
+ 'Error: Wrong default groups')
629
+ end
630
+
631
+ def test_snmpuser_default_auth_protocol
632
+ assert_equal(:md5,
633
+ SnmpUser.default_auth_protocol,
634
+ 'Error: Wrong default auth protocol')
635
+ end
636
+
637
+ def test_snmpuser_default_auth_password
638
+ assert_equal(DEFAULT_SNMP_USER_AUTH_PASSWORD,
639
+ SnmpUser.default_auth_password,
640
+ 'Error: Wrong default auth password')
641
+ end
642
+
643
+ def test_snmpuser_default_priv_protocol
644
+ assert_equal(:des,
645
+ SnmpUser.default_priv_protocol,
646
+ 'Error: Wrong default priv protocol')
647
+ end
648
+
649
+ def test_snmpuser_default_priv_password
650
+ assert_equal(DEFAULT_SNMP_USER_PRIV_PASSWORD,
651
+ SnmpUser.default_priv_password,
652
+ 'Error: Wrong default priv password')
653
+ end
803
654
  end