Skip to content

Commit 1c6eb99

Browse files
committed
test ipv6 functionality for source-address extension
1 parent aa6d619 commit 1c6eb99

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
ssh_data (1.0.0)
4+
ssh_data (1.1.0)
55

66
GEM
77
remote: https://rubygems.org/

spec/certificate_spec.rb

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,32 +122,54 @@
122122
described_class.new(public_key: public_key, key_id: key_id)
123123
}
124124

125-
it "checks single address" do
125+
it "checks single IPv4 address" do
126126
subject.critical_options["source-address"] = "1.1.1.1"
127127
expect(subject.allowed_source_address?("1.1.1.1")).to be(true)
128128
expect(subject.allowed_source_address?("2.2.2.2")).to be(false)
129129
end
130130

131-
it "checks multiple addresses" do
131+
it "checks single IPv6 address" do
132+
subject.critical_options["source-address"] = "3ffe:505:2::1"
133+
expect(subject.allowed_source_address?("3ffe:505:2::1")).to be(true)
134+
expect(subject.allowed_source_address?("3ffe:505:2:0::1")).to be(true)
135+
expect(subject.allowed_source_address?("3ffe:505:2::2")).to be(false)
136+
end
137+
138+
it "checks multiple IPv4 addresses" do
132139
subject.critical_options["source-address"] = "1.1.1.1,2.2.2.2"
133140
expect(subject.allowed_source_address?("1.1.1.1")).to be(true)
134141
expect(subject.allowed_source_address?("2.2.2.2")).to be(true)
135142
expect(subject.allowed_source_address?("3.3.3.3")).to be(false)
136143
end
137144

138-
it "checks single CIDR range" do
145+
it "checks multiple IPv6 addresses" do
146+
subject.critical_options["source-address"] = "3ffe:505:2::1,3ffe:505:2::2"
147+
expect(subject.allowed_source_address?("3ffe:505:2::1")).to be(true)
148+
expect(subject.allowed_source_address?("3ffe:505:2::2")).to be(true)
149+
expect(subject.allowed_source_address?("3ffe:505:2::3")).to be(false)
150+
end
151+
152+
it "checks single IPv4 CIDR range" do
139153
subject.critical_options["source-address"] = "1.1.1.0/24"
140154
expect(subject.allowed_source_address?("1.1.1.1")).to be(true)
141155
expect(subject.allowed_source_address?("1.1.1.2")).to be(true)
142156
expect(subject.allowed_source_address?("2.2.2.2")).to be(false)
143157
expect(subject.allowed_source_address?("1.1.2.1")).to be(false)
144158
end
145159

160+
it "checks single IPv6 CIDR range" do
161+
subject.critical_options["source-address"] = "3ffe:505:2::/112"
162+
expect(subject.allowed_source_address?("3ffe:505:2::1")).to be(true)
163+
expect(subject.allowed_source_address?("3ffe:505:2::2")).to be(true)
164+
expect(subject.allowed_source_address?("3ffe:505:2::1:1")).to be(false)
165+
end
166+
146167
it "checks multiple CIDR ranges" do
147-
subject.critical_options["source-address"] = "1.1.1.0/24,2.2.2.0/24"
168+
subject.critical_options["source-address"] = "1.1.1.0/24,3ffe:505:2::/112"
148169
expect(subject.allowed_source_address?("1.1.1.1")).to be(true)
149-
expect(subject.allowed_source_address?("2.2.2.2")).to be(true)
150-
expect(subject.allowed_source_address?("3.3.3.3")).to be(false)
170+
expect(subject.allowed_source_address?("3ffe:505:2::1")).to be(true)
171+
expect(subject.allowed_source_address?("2.2.2.2")).to be(false)
172+
expect(subject.allowed_source_address?("3ffe:505:2::1:1")).to be(false)
151173
end
152174

153175
it "returns false for bad addresses" do
@@ -157,6 +179,7 @@
157179

158180
it "allows any address if option is missing" do
159181
expect(subject.allowed_source_address?("1.1.1.1")).to be(true)
182+
expect(subject.allowed_source_address?("3ffe:505:2::1")).to be(true)
160183
end
161184
end
162185

0 commit comments

Comments
 (0)