cisco_acl_intp 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.rubocop.yml +2 -2
- data/.travis.yml +4 -2
- data/Gemfile +7 -6
- data/README.md +23 -18
- data/Rakefile +11 -13
- data/cisco_acl_intp.gemspec +7 -7
- data/lib/cisco_acl_intp/acc.rb +111 -0
- data/lib/cisco_acl_intp/{ace.rb → ace_base.rb} +9 -8
- data/lib/cisco_acl_intp/{extended_ace.rb → ace_extended.rb} +8 -10
- data/lib/cisco_acl_intp/{standard_ace.rb → ace_standard.rb} +5 -5
- data/lib/cisco_acl_intp/acespec_base.rb +15 -0
- data/lib/cisco_acl_intp/{ace_ip.rb → acespec_ip.rb} +14 -22
- data/lib/cisco_acl_intp/{ace_other_qualifiers.rb → acespec_other_qualifiers.rb} +7 -7
- data/lib/cisco_acl_intp/{ace_port.rb → acespec_port.rb} +10 -13
- data/lib/cisco_acl_intp/{ace_port_opr.rb → acespec_port_opr.rb} +75 -73
- data/lib/cisco_acl_intp/{ace_port_opr_base.rb → acespec_port_opr_base.rb} +49 -34
- data/lib/cisco_acl_intp/{ace_proto.rb → acespec_proto.rb} +4 -4
- data/lib/cisco_acl_intp/{ace_proto_base.rb → acespec_proto_base.rb} +8 -8
- data/lib/cisco_acl_intp/{ace_srcdst.rb → acespec_srcdst.rb} +9 -8
- data/lib/cisco_acl_intp/{ace_tcp_flags.rb → acespec_tcp_flags.rb} +4 -4
- data/lib/cisco_acl_intp/acl.rb +1 -1
- data/lib/cisco_acl_intp/acl_base.rb +108 -80
- data/lib/cisco_acl_intp/{mono_function_acl.rb → acl_category_base.rb} +5 -5
- data/lib/cisco_acl_intp/acl_utils.rb +1 -1
- data/lib/cisco_acl_intp/parser.rb +388 -406
- data/lib/cisco_acl_intp/parser.ry +8 -3
- data/lib/cisco_acl_intp/parser_api.rb +4 -4
- data/lib/cisco_acl_intp/scanner.rb +8 -10
- data/lib/cisco_acl_intp/scanner_special_token_handler.rb +3 -3
- data/lib/cisco_acl_intp/version.rb +1 -1
- data/spec/cisco_acl_intp/{extended_ace_spec.rb → ace_extended_spec.rb} +157 -128
- data/spec/cisco_acl_intp/ace_spec.rb +21 -19
- data/spec/cisco_acl_intp/{standard_ace_spec.rb → ace_standard_spec.rb} +7 -11
- data/spec/cisco_acl_intp/{ace_ip_spec.rb → acespec_ip_spec.rb} +34 -34
- data/spec/cisco_acl_intp/{ace_other_qualifier_spec.rb → acespec_other_qualifier_spec.rb} +18 -18
- data/spec/cisco_acl_intp/acespec_port_operator_spec.rb +331 -0
- data/spec/cisco_acl_intp/{ace_port_spec.rb → acespec_port_spec.rb} +33 -33
- data/spec/cisco_acl_intp/{ace_proto_spec.rb → acespec_proto_spec.rb} +61 -61
- data/spec/cisco_acl_intp/{ace_srcdst_spec.rb → acespec_srcdst_spec.rb} +113 -54
- data/spec/cisco_acl_intp/{ace_tcp_flags_spec.rb → acespec_tcp_flags_spec.rb} +10 -10
- data/spec/cisco_acl_intp/acl_base_spec.rb +14 -12
- data/spec/cisco_acl_intp/{extended_acl_spec.rb → acl_extended_spec.rb} +28 -28
- data/spec/cisco_acl_intp/{standard_acl_spec.rb → acl_standard_spec.rb} +24 -23
- data/spec/cisco_acl_intp/cisco_acl_intp_spec.rb +1 -1
- data/spec/cisco_acl_intp/parser_spec.rb +12 -12
- data/spec/cisco_acl_intp/scanner_spec.rb +31 -36
- data/spec/parser_fullfill_patterns.rb +6 -7
- data/spec/spec_helper.rb +6 -6
- data/tools/check_acl.rb +1 -1
- metadata +60 -59
- data/lib/cisco_acl_intp/single_acl_base.rb +0 -137
- data/spec/cisco_acl_intp/ace_port_operator_spec.rb +0 -340
@@ -5,7 +5,7 @@ describe RemarkAce do
|
|
5
5
|
describe '#to_s' do
|
6
6
|
it 'should be remark string' do
|
7
7
|
rmk = RemarkAce.new(' foo-bar _ baz @@ COMMENT')
|
8
|
-
rmk.to_s.
|
8
|
+
expect(rmk.to_s).to eq 'remark foo-bar _ baz @@ COMMENT'
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -17,23 +17,24 @@ describe RemarkAce do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should be true when same comment' do
|
20
|
-
(@rmk1 == @rmk2).
|
20
|
+
expect(@rmk1 == @rmk2).to be_truthy
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should be false when different comment' do
|
24
|
-
(@rmk1 == @rmk3).
|
24
|
+
expect(@rmk1 == @rmk3).to be_falsey
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe '#contains?' do
|
29
29
|
it 'should be always false' do
|
30
30
|
rmk = RemarkAce.new('asdfjklj;')
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
expect(
|
32
|
+
rmk.contains?(
|
33
|
+
src_ip: '192.168.4.4',
|
34
|
+
dst_ip: '172.30.240.33'
|
35
|
+
)).to be_falsey
|
35
36
|
# with empty argments
|
36
|
-
rmk.contains
|
37
|
+
expect(rmk.contains?).to be_falsey
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
@@ -44,15 +45,15 @@ describe EvaluateAce do
|
|
44
45
|
evl = EvaluateAce.new(
|
45
46
|
recursive_name: 'foobar_baz'
|
46
47
|
)
|
47
|
-
evl.to_s.
|
48
|
+
expect(evl.to_s).to be_aclstr('evaluate foobar_baz')
|
48
49
|
end
|
49
50
|
|
50
51
|
it 'raise error if not specified recursive name' do
|
51
|
-
|
52
|
+
expect do
|
52
53
|
EvaluateAce.new(
|
53
54
|
number: 30
|
54
55
|
)
|
55
|
-
end.
|
56
|
+
end.to raise_error(AclArgumentError)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -64,27 +65,28 @@ describe EvaluateAce do
|
|
64
65
|
end
|
65
66
|
|
66
67
|
it 'should be true when same evaluate name' do
|
67
|
-
(@evl1 == @evl2).
|
68
|
+
expect(@evl1 == @evl2).to be_truthy
|
68
69
|
end
|
69
70
|
|
70
71
|
it 'should be false when different evaluate name' do
|
71
|
-
(@evl1 == @evl3).
|
72
|
+
expect(@evl1 == @evl3).to be_falsey
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
76
|
describe '#contains?' do
|
76
77
|
it 'should be false' do
|
77
|
-
|
78
|
+
skip('match by evaluate is not implemented yet')
|
78
79
|
|
79
80
|
evl = EvaluateAce.new(
|
80
81
|
recursive_name: 'asdf_0-98'
|
81
82
|
)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
expect(
|
84
|
+
evl.contains?(
|
85
|
+
src_ip: '192.168.4.4',
|
86
|
+
dst_ip: '172.30.240.33'
|
87
|
+
)).to be_falsey
|
86
88
|
# with empty argments
|
87
|
-
evl.contains
|
89
|
+
expect(evl.contains?).to be_falsey
|
88
90
|
end
|
89
91
|
end
|
90
92
|
end
|
@@ -4,13 +4,12 @@ require 'spec_helper'
|
|
4
4
|
describe StandardAce do
|
5
5
|
describe '#to_s' do
|
6
6
|
context 'Normal case' do
|
7
|
-
|
8
7
|
it 'should be permit action and set ip/wildcard' do
|
9
8
|
sa = StandardAce.new(
|
10
9
|
action: 'permit',
|
11
10
|
src: { ipaddr: '192.168.15.15', wildcard: '0.0.7.6' }
|
12
11
|
)
|
13
|
-
sa.to_s.
|
12
|
+
expect(sa.to_s).to be_aclstr('permit 192.168.8.9 0.0.7.6')
|
14
13
|
end
|
15
14
|
|
16
15
|
it 'should be deny action and set ip/wildcard' do
|
@@ -18,7 +17,7 @@ describe StandardAce do
|
|
18
17
|
action: 'deny',
|
19
18
|
src: { ipaddr: '192.168.15.15', wildcard: '0.0.0.127' }
|
20
19
|
)
|
21
|
-
sa.to_s.
|
20
|
+
expect(sa.to_s).to be_aclstr('deny 192.168.15.0 0.0.0.127')
|
22
21
|
end
|
23
22
|
|
24
23
|
it 'should be able set with AceSrcDstSpec object' do
|
@@ -26,21 +25,18 @@ describe StandardAce do
|
|
26
25
|
ipaddr: '192.168.3.144', wildcard: '0.0.0.127'
|
27
26
|
)
|
28
27
|
sa = StandardAce.new(action: 'permit', src: asds)
|
29
|
-
sa.to_s.
|
28
|
+
expect(sa.to_s).to be_aclstr('permit 192.168.3.128 0.0.0.127')
|
30
29
|
end
|
31
|
-
|
32
30
|
end
|
33
31
|
|
34
32
|
context 'Argument error case' do
|
35
|
-
|
36
33
|
it 'should be rased exception when :action not specified' do
|
37
|
-
|
34
|
+
expect do
|
38
35
|
StandardAce.new(
|
39
36
|
src: { ipaddr: '192.168.3.3', wildcard: '0.0.0.127' }
|
40
37
|
)
|
41
|
-
end.
|
38
|
+
end.to raise_error(AclArgumentError)
|
42
39
|
end
|
43
|
-
|
44
40
|
end
|
45
41
|
end
|
46
42
|
|
@@ -61,11 +57,11 @@ describe StandardAce do
|
|
61
57
|
end
|
62
58
|
|
63
59
|
it 'shoud be true with match ip addr' do
|
64
|
-
@sa.contains?(@ip_match).
|
60
|
+
expect(@sa.contains?(@ip_match)).to be_truthy
|
65
61
|
end
|
66
62
|
|
67
63
|
it 'should be false with unmatch ip addr' do
|
68
|
-
@sa.contains?(@ip_unmatch).
|
64
|
+
expect(@sa.contains?(@ip_unmatch)).to be_falsey
|
69
65
|
end
|
70
66
|
end
|
71
67
|
end
|
@@ -31,32 +31,32 @@ describe AceIpSpec do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should be true same ip and same wildcard' do
|
34
|
-
(@ip == @ip1).
|
34
|
+
expect(@ip == @ip1).to be_truthy
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'should be true same ip and same wildcard/netmask' do
|
38
|
-
(@ip1 == @ip2).
|
38
|
+
expect(@ip1 == @ip2).to be_truthy
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should be false different ip and same netmask' do
|
42
|
-
(@ip2 == @ip3).
|
42
|
+
expect(@ip2 == @ip3).to be_falsey
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should be false different ip and same wildcard' do
|
46
|
-
(@ip1 == @ip4).
|
46
|
+
expect(@ip1 == @ip4).to be_falsey
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'should be false same ip and different wildcard' do
|
50
|
-
(@ip1 == @ip5).
|
50
|
+
expect(@ip1 == @ip5).to be_falsey
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'should be true ANY object' do
|
54
54
|
ip1 = AceIpSpec.new(ipaddr: 'any')
|
55
55
|
ip2 = AceIpSpec.new(ipaddr: '0.0.0.0', wildcard: '255.255.255.255')
|
56
56
|
ip3 = AceIpSpec.new(ipaddr: '0.0.0.0', netmask: 0)
|
57
|
-
(ip1 == ip2).
|
58
|
-
(ip2 == ip3).
|
59
|
-
(ip3 == ip1).
|
57
|
+
expect(ip1 == ip2).to be_truthy
|
58
|
+
expect(ip2 == ip3).to be_truthy
|
59
|
+
expect(ip3 == ip1).to be_truthy
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -66,8 +66,8 @@ describe AceIpSpec do
|
|
66
66
|
ipaddr: '192.168.15.15',
|
67
67
|
wildcard: '0.0.31.255'
|
68
68
|
)
|
69
|
-
ip.netmask.
|
70
|
-
ip.wildcard.
|
69
|
+
expect(ip.netmask).to eq 19
|
70
|
+
expect(ip.wildcard).to eq '0.0.31.255'
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'should not be converted wildcard/netmask' do
|
@@ -75,8 +75,8 @@ describe AceIpSpec do
|
|
75
75
|
ipaddr: '192.168.15.15',
|
76
76
|
wildcard: '0.3.5.0'
|
77
77
|
)
|
78
|
-
ip.netmask.
|
79
|
-
ip.wildcard.
|
78
|
+
expect(ip.netmask).to be_nil
|
79
|
+
expect(ip.wildcard).to eq '0.3.5.0'
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -89,19 +89,19 @@ describe AceIpSpec do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'should be true when subnet is contained' do
|
92
|
-
@ip.contains?('192.168.15.3/25').
|
92
|
+
expect(@ip.contains?('192.168.15.3/25')).to be_truthy
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'should be true when same subnet' do
|
96
|
-
@ip.contains?('192.168.15.3/24').
|
96
|
+
expect(@ip.contains?('192.168.15.3/24')).to be_truthy
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'should be false when larger subnet' do
|
100
|
-
@ip.contains?('192.168.15.3/23').
|
100
|
+
expect(@ip.contains?('192.168.15.3/23')).to be_falsey
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'should be false with not related block' do
|
104
|
-
@ip.contains?('192.168.16.3/24').
|
104
|
+
expect(@ip.contains?('192.168.16.3/24')).to be_falsey
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -111,12 +111,12 @@ describe AceIpSpec do
|
|
111
111
|
ipaddr: '192.168.15.15',
|
112
112
|
wildcard: '0.0.7.6'
|
113
113
|
)
|
114
|
-
ip.to_s.
|
114
|
+
expect(ip.to_s).to be_aclstr('192.168.8.9 0.0.7.6')
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'should be "any" with any alias' do
|
118
118
|
ip = AceIpSpec.new(ipaddr: 'any')
|
119
|
-
ip.to_s.
|
119
|
+
expect(ip.to_s).to be_aclstr('any')
|
120
120
|
end
|
121
121
|
|
122
122
|
it 'should be "any"' do
|
@@ -124,7 +124,7 @@ describe AceIpSpec do
|
|
124
124
|
ipaddr: '0.0.0.0',
|
125
125
|
wildcard: '255.255.255.255'
|
126
126
|
)
|
127
|
-
ip.to_s.
|
127
|
+
expect(ip.to_s).to be_aclstr('any')
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'should be "any" with full-bit wildcard mask' do
|
@@ -132,7 +132,7 @@ describe AceIpSpec do
|
|
132
132
|
ipaddr: '192.168.15.15',
|
133
133
|
wildcard: '255.255.255.255'
|
134
134
|
)
|
135
|
-
ip.to_s.
|
135
|
+
expect(ip.to_s).to be_aclstr('any')
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'should be "any" with zero-ip' do
|
@@ -140,7 +140,7 @@ describe AceIpSpec do
|
|
140
140
|
ipaddr: '0.0.0.0',
|
141
141
|
wildcard: '0.0.7.6'
|
142
142
|
)
|
143
|
-
ip.to_s.
|
143
|
+
expect(ip.to_s).to be_aclstr('any')
|
144
144
|
end
|
145
145
|
|
146
146
|
it 'should be "host 192.168.15.15"' do
|
@@ -148,7 +148,7 @@ describe AceIpSpec do
|
|
148
148
|
ipaddr: '192.168.15.15',
|
149
149
|
wildcard: '0.0.0.0'
|
150
150
|
)
|
151
|
-
ip.to_s.
|
151
|
+
expect(ip.to_s).to be_aclstr('host 192.168.15.15')
|
152
152
|
end
|
153
153
|
|
154
154
|
it 'should be "192.168.14.0 0.0.1.255" with netmask /23' do
|
@@ -156,7 +156,7 @@ describe AceIpSpec do
|
|
156
156
|
ipaddr: '192.168.15.15',
|
157
157
|
netmask: 23
|
158
158
|
)
|
159
|
-
ip.to_s.
|
159
|
+
expect(ip.to_s).to be_aclstr('192.168.14.0 0.0.1.255')
|
160
160
|
end
|
161
161
|
|
162
162
|
it 'should be "any" with netmask /0' do
|
@@ -164,7 +164,7 @@ describe AceIpSpec do
|
|
164
164
|
ipaddr: '192.168.15.15',
|
165
165
|
netmask: 0
|
166
166
|
)
|
167
|
-
ip.to_s.
|
167
|
+
expect(ip.to_s).to be_aclstr('any')
|
168
168
|
end
|
169
169
|
|
170
170
|
it 'should be "host 192.168.15.15" with netmask /32' do
|
@@ -172,41 +172,41 @@ describe AceIpSpec do
|
|
172
172
|
ipaddr: '192.168.15.15',
|
173
173
|
netmask: 32
|
174
174
|
)
|
175
|
-
ip.to_s.
|
175
|
+
expect(ip.to_s).to be_aclstr('host 192.168.15.15')
|
176
176
|
end
|
177
177
|
|
178
178
|
it 'should be "host 192.168.15.15" in default' do
|
179
179
|
ip = AceIpSpec.new(
|
180
180
|
ipaddr: '192.168.15.15'
|
181
181
|
)
|
182
|
-
ip.to_s.
|
182
|
+
expect(ip.to_s).to be_aclstr('host 192.168.15.15')
|
183
183
|
end
|
184
184
|
|
185
185
|
context 'Argument Error Case' do
|
186
186
|
it 'raise error without ipaddr' do
|
187
|
-
|
187
|
+
expect do
|
188
188
|
AceIpSpec.new(
|
189
189
|
netmask: 32
|
190
190
|
)
|
191
|
-
end.
|
191
|
+
end.to raise_error(AclArgumentError)
|
192
192
|
end
|
193
193
|
|
194
194
|
it 'raise error with invalid ipaddr' do
|
195
|
-
|
195
|
+
expect do
|
196
196
|
AceIpSpec.new(
|
197
197
|
ipaddr: '192.168.15.256'
|
198
198
|
)
|
199
|
-
end.
|
200
|
-
|
199
|
+
end.to raise_error
|
200
|
+
expect do
|
201
201
|
AceIpSpec.new(
|
202
202
|
ipaddr: '192.168.250.3.3'
|
203
203
|
)
|
204
|
-
end.
|
205
|
-
|
204
|
+
end.to raise_error
|
205
|
+
expect do
|
206
206
|
AceIpSpec.new(
|
207
207
|
ipaddr: '192,168.250.3'
|
208
208
|
)
|
209
|
-
end.
|
209
|
+
end.to raise_error
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
@@ -10,33 +10,33 @@ describe AceLogSpec do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'should be true when same cookie' do
|
13
|
-
(@log2 == @log3).
|
13
|
+
expect(@log2 == @log3).to be_truthy
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should be false when different cookie' do
|
17
|
-
(@log2 == @log1).
|
17
|
+
expect(@log2 == @log1).to be_falsey
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#to_s' do
|
22
22
|
it 'should be log without cookie' do
|
23
23
|
log = AceLogSpec.new
|
24
|
-
log.to_s.
|
24
|
+
expect(log.to_s).to be_aclstr('log')
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should be log-input without cookie string' do
|
28
28
|
log = AceLogSpec.new('', true)
|
29
|
-
log.to_s.
|
29
|
+
expect(log.to_s).to be_aclstr('log-input')
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should be log with cookie' do
|
33
33
|
log = AceLogSpec.new('Cookie0123')
|
34
|
-
log.to_s.
|
34
|
+
expect(log.to_s).to be_aclstr('log Cookie0123')
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'should be log-input with cookie string' do
|
38
38
|
log = AceLogSpec.new('log', true)
|
39
|
-
log.to_s.
|
39
|
+
expect(log.to_s).to be_aclstr('log-input log')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -50,24 +50,24 @@ describe AceRecursiveQualifier do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'should be true when same recursive-name' do
|
53
|
-
(@rcsv2 == @rcsv3).
|
53
|
+
expect(@rcsv2 == @rcsv3).to be_truthy
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'should be false when different recursive-name' do
|
57
|
-
(@rcsv2 == @rcsv1).
|
57
|
+
expect(@rcsv2 == @rcsv1).to be_falsey
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
describe '#to_s' do
|
62
62
|
it 'should be reflect spec string' do
|
63
63
|
rcsv = AceRecursiveQualifier.new('established')
|
64
|
-
rcsv.to_s.
|
64
|
+
expect(rcsv.to_s).to be_aclstr('reflect established')
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'should be raised error' do
|
68
|
-
|
68
|
+
expect do
|
69
69
|
AceRecursiveQualifier.new('')
|
70
|
-
end.
|
70
|
+
end.to raise_error(AclArgumentError)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
@@ -80,16 +80,16 @@ describe AceOtherQualifierList do
|
|
80
80
|
@list = AceOtherQualifierList.new
|
81
81
|
end
|
82
82
|
|
83
|
-
it 'should be size 0 when empty list'do
|
84
|
-
@list.size.
|
83
|
+
it 'should be size 0 when empty list' do
|
84
|
+
expect(@list.size).to be_zero
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'should count-up size when added AceTcpFlag objects' do
|
88
88
|
@list.push @oq1
|
89
|
-
@list.size.
|
89
|
+
expect(@list.size).to eq 1
|
90
90
|
@list.push @oq2
|
91
|
-
@list.size.
|
92
|
-
@list.to_s.
|
91
|
+
expect(@list.size).to eq 2
|
92
|
+
expect(@list.to_s).to be_aclstr('log reflect iptraffic')
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -104,11 +104,11 @@ describe AceOtherQualifierList do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'should be true when same other qualifier elements' do
|
107
|
-
(@list1 == @list2).
|
107
|
+
expect(@list1 == @list2).to be_truthy
|
108
108
|
end
|
109
109
|
|
110
110
|
it 'should be false when different other qualifier elements' do
|
111
|
-
(@list1 == @list3).
|
111
|
+
expect(@list1 == @list3).to be_falsey
|
112
112
|
end
|
113
113
|
end
|
114
114
|
end
|