aboutsummaryrefslogtreecommitdiff
path: root/spec/unit/type/host_spec.rb
diff options
context:
space:
mode:
authorJosh Cooper <josh@puppet.com>2018-07-09 19:50:03 -0700
committerJosh Cooper <josh@puppet.com>2018-07-09 19:50:03 -0700
commit59f4a9e49d397556a60f060faffdc14b734856da (patch)
tree8b630a7d02fc4e6e207fc3d84b9d78c1f6637191 /spec/unit/type/host_spec.rb
parent34e83e11a5fc344195217d9cd159d022b5d89ec1 (diff)
downloadpuppet-hosts_core-59f4a9e49d397556a60f060faffdc14b734856da.tar.gz
puppet-hosts_core-59f4a9e49d397556a60f060faffdc14b734856da.tar.bz2
Automatic validation updates
Updated rubocop violations using `pdk validate -a`.
Diffstat (limited to 'spec/unit/type/host_spec.rb')
-rw-r--r--spec/unit/type/host_spec.rb1020
1 files changed, 507 insertions, 513 deletions
diff --git a/spec/unit/type/host_spec.rb b/spec/unit/type/host_spec.rb
index ecce6e2..92138ee 100644
--- a/spec/unit/type/host_spec.rb
+++ b/spec/unit/type/host_spec.rb
@@ -5,19 +5,19 @@ host = Puppet::Type.type(:host)
describe host do
FakeHostProvider = Struct.new(:ip, :host_aliases, :comment)
- before do
+ before(:each) do
@class = host
@catalog = Puppet::Resource::Catalog.new
@provider = FakeHostProvider.new
- @resource = stub 'resource', :resource => nil, :provider => @provider
+ @resource = stub 'resource', resource: nil, provider: @provider
end
- it "should have :name be its namevar" do
+ it 'has :name be its namevar' do
expect(@class.key_attributes).to eq([:name])
end
- describe "when validating attributes" do
- [:name, :provider ].each do |param|
+ describe 'when validating attributes' do
+ [:name, :provider].each do |param|
it "should have a #{param} parameter" do
expect(@class.attrtype(param)).to eq(:param)
end
@@ -29,636 +29,631 @@ describe host do
end
end
- it "should have a list host_aliases" do
+ it 'has a list host_aliases' do
expect(@class.attrclass(:host_aliases).ancestors).to be_include(Puppet::Property::OrderedList)
end
-
end
- describe "when validating values" do
- it "should support present as a value for ensure" do
- expect { @class.new(:name => "foo", :ensure => :present) }.not_to raise_error
+ describe 'when validating values' do
+ it 'supports present as a value for ensure' do
+ expect { @class.new(name: 'foo', ensure: :present) }.not_to raise_error
end
- it "should support absent as a value for ensure" do
- expect { @class.new(:name => "foo", :ensure => :absent) }.not_to raise_error
+ it 'supports absent as a value for ensure' do
+ expect { @class.new(name: 'foo', ensure: :absent) }.not_to raise_error
end
- it "should accept IPv4 addresses" do
- expect { @class.new(:name => "foo", :ip => '10.96.0.1') }.not_to raise_error
+ it 'accepts IPv4 addresses' do
+ expect { @class.new(name: 'foo', ip: '10.96.0.1') }.not_to raise_error
end
- it "should accept long IPv6 addresses" do
+ it 'accepts long IPv6 addresses' do
# Taken from wikipedia article about ipv6
- expect { @class.new(:name => "foo", :ip => '2001:0db8:85a3:08d3:1319:8a2e:0370:7344') }.not_to raise_error
+ expect { @class.new(name: 'foo', ip: '2001:0db8:85a3:08d3:1319:8a2e:0370:7344') }.not_to raise_error
end
- it "should accept one host_alias" do
- expect { @class.new(:name => "foo", :host_aliases => 'alias1') }.not_to raise_error
+ it 'accepts one host_alias' do
+ expect { @class.new(name: 'foo', host_aliases: 'alias1') }.not_to raise_error
end
- it "should accept multiple host_aliases" do
- expect { @class.new(:name => "foo", :host_aliases => [ 'alias1', 'alias2' ]) }.not_to raise_error
+ it 'accepts multiple host_aliases' do
+ expect { @class.new(name: 'foo', host_aliases: ['alias1', 'alias2']) }.not_to raise_error
end
- it "should accept shortened IPv6 addresses" do
- expect { @class.new(:name => "foo", :ip => '2001:db8:0:8d3:0:8a2e:70:7344') }.not_to raise_error
- expect { @class.new(:name => "foo", :ip => '::ffff:192.0.2.128') }.not_to raise_error
- expect { @class.new(:name => "foo", :ip => '::1') }.not_to raise_error
+ it 'accepts shortened IPv6 addresses' do
+ expect { @class.new(name: 'foo', ip: '2001:db8:0:8d3:0:8a2e:70:7344') }.not_to raise_error
+ expect { @class.new(name: 'foo', ip: '::ffff:192.0.2.128') }.not_to raise_error
+ expect { @class.new(name: 'foo', ip: '::1') }.not_to raise_error
end
- it "should not accept malformed IPv4 addresses like 192.168.0.300" do
- expect { @class.new(:name => "foo", :ip => '192.168.0.300') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
+ it 'does not accept malformed IPv4 addresses like 192.168.0.300' do
+ expect { @class.new(name: 'foo', ip: '192.168.0.300') }.to raise_error(Puppet::ResourceError, %r{Parameter ip failed})
end
- it "should reject over-long IPv4 addresses" do
- expect { @class.new(:name => "foo", :ip => '10.10.10.10.10') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
+ it 'rejects over-long IPv4 addresses' do
+ expect { @class.new(name: 'foo', ip: '10.10.10.10.10') }.to raise_error(Puppet::ResourceError, %r{Parameter ip failed})
end
- it "should not accept malformed IP addresses like 2001:0dg8:85a3:08d3:1319:8a2e:0370:7344" do
- expect { @class.new(:name => "foo", :ip => '2001:0dg8:85a3:08d3:1319:8a2e:0370:7344') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
+ it 'does not accept malformed IP addresses like 2001:0dg8:85a3:08d3:1319:8a2e:0370:7344' do
+ expect { @class.new(name: 'foo', ip: '2001:0dg8:85a3:08d3:1319:8a2e:0370:7344') }.to raise_error(Puppet::ResourceError, %r{Parameter ip failed})
end
# Assorted, annotated IPv6 passes.
- ["::1", # loopback, compressed, non-routable
- "::", # unspecified, compressed, non-routable
- "0:0:0:0:0:0:0:1", # loopback, full
- "0:0:0:0:0:0:0:0", # unspecified, full
- "2001:DB8:0:0:8:800:200C:417A", # unicast, full
- "FF01:0:0:0:0:0:0:101", # multicast, full
- "2001:DB8::8:800:200C:417A", # unicast, compressed
- "FF01::101", # multicast, compressed
+ ['::1', # loopback, compressed, non-routable
+ '::', # unspecified, compressed, non-routable
+ '0:0:0:0:0:0:0:1', # loopback, full
+ '0:0:0:0:0:0:0:0', # unspecified, full
+ '2001:DB8:0:0:8:800:200C:417A', # unicast, full
+ 'FF01:0:0:0:0:0:0:101', # multicast, full
+ '2001:DB8::8:800:200C:417A', # unicast, compressed
+ 'FF01::101', # multicast, compressed
# Some more test cases that should pass.
- "2001:0000:1234:0000:0000:C1C0:ABCD:0876",
- "3ffe:0b00:0000:0000:0001:0000:0000:000a",
- "FF02:0000:0000:0000:0000:0000:0000:0001",
- "0000:0000:0000:0000:0000:0000:0000:0001",
- "0000:0000:0000:0000:0000:0000:0000:0000",
+ '2001:0000:1234:0000:0000:C1C0:ABCD:0876',
+ '3ffe:0b00:0000:0000:0001:0000:0000:000a',
+ 'FF02:0000:0000:0000:0000:0000:0000:0001',
+ '0000:0000:0000:0000:0000:0000:0000:0001',
+ '0000:0000:0000:0000:0000:0000:0000:0000',
# Assorted valid, compressed IPv6 addresses.
- "2::10",
- "ff02::1",
- "fe80::",
- "2002::",
- "2001:db8::",
- "2001:0db8:1234::",
- "::ffff:0:0",
- "::1",
- "1:2:3:4:5:6:7:8",
- "1:2:3:4:5:6::8",
- "1:2:3:4:5::8",
- "1:2:3:4::8",
- "1:2:3::8",
- "1:2::8",
- "1::8",
- "1::2:3:4:5:6:7",
- "1::2:3:4:5:6",
- "1::2:3:4:5",
- "1::2:3:4",
- "1::2:3",
- "1::8",
- "::2:3:4:5:6:7:8",
- "::2:3:4:5:6:7",
- "::2:3:4:5:6",
- "::2:3:4:5",
- "::2:3:4",
- "::2:3",
- "::8",
- "1:2:3:4:5:6::",
- "1:2:3:4:5::",
- "1:2:3:4::",
- "1:2:3::",
- "1:2::",
- "1::",
- "1:2:3:4:5::7:8",
- "1:2:3:4::7:8",
- "1:2:3::7:8",
- "1:2::7:8",
- "1::7:8",
+ '2::10',
+ 'ff02::1',
+ 'fe80::',
+ '2002::',
+ '2001:db8::',
+ '2001:0db8:1234::',
+ '::ffff:0:0',
+ '::1',
+ '1:2:3:4:5:6:7:8',
+ '1:2:3:4:5:6::8',
+ '1:2:3:4:5::8',
+ '1:2:3:4::8',
+ '1:2:3::8',
+ '1:2::8',
+ '1::8',
+ '1::2:3:4:5:6:7',
+ '1::2:3:4:5:6',
+ '1::2:3:4:5',
+ '1::2:3:4',
+ '1::2:3',
+ '1::8',
+ '::2:3:4:5:6:7:8',
+ '::2:3:4:5:6:7',
+ '::2:3:4:5:6',
+ '::2:3:4:5',
+ '::2:3:4',
+ '::2:3',
+ '::8',
+ '1:2:3:4:5:6::',
+ '1:2:3:4:5::',
+ '1:2:3:4::',
+ '1:2:3::',
+ '1:2::',
+ '1::',
+ '1:2:3:4:5::7:8',
+ '1:2:3:4::7:8',
+ '1:2:3::7:8',
+ '1:2::7:8',
+ '1::7:8',
# IPv4 addresses as dotted-quads
- "1:2:3:4:5:6:1.2.3.4",
- "1:2:3:4:5::1.2.3.4",
- "1:2:3:4::1.2.3.4",
- "1:2:3::1.2.3.4",
- "1:2::1.2.3.4",
- "1::1.2.3.4",
- "1:2:3:4::5:1.2.3.4",
- "1:2:3::5:1.2.3.4",
- "1:2::5:1.2.3.4",
- "1::5:1.2.3.4",
- "1::5:11.22.33.44",
- "fe80::217:f2ff:254.7.237.98",
- "::ffff:192.168.1.26",
- "::ffff:192.168.1.1",
- "0:0:0:0:0:0:13.1.68.3", # IPv4-compatible IPv6 address, full, deprecated
- "0:0:0:0:0:FFFF:129.144.52.38", # IPv4-mapped IPv6 address, full
- "::13.1.68.3", # IPv4-compatible IPv6 address, compressed, deprecated
- "::FFFF:129.144.52.38", # IPv4-mapped IPv6 address, compressed
- "fe80:0:0:0:204:61ff:254.157.241.86",
- "fe80::204:61ff:254.157.241.86",
- "::ffff:12.34.56.78",
- "::ffff:192.0.2.128", # this is OK, since there's a single zero digit in IPv4
- "fe80:0000:0000:0000:0204:61ff:fe9d:f156",
- "fe80:0:0:0:204:61ff:fe9d:f156",
- "fe80::204:61ff:fe9d:f156",
- "::1",
- "fe80::",
- "fe80::1",
- "::ffff:c000:280",
+ '1:2:3:4:5:6:1.2.3.4',
+ '1:2:3:4:5::1.2.3.4',
+ '1:2:3:4::1.2.3.4',
+ '1:2:3::1.2.3.4',
+ '1:2::1.2.3.4',
+ '1::1.2.3.4',
+ '1:2:3:4::5:1.2.3.4',
+ '1:2:3::5:1.2.3.4',
+ '1:2::5:1.2.3.4',
+ '1::5:1.2.3.4',
+ '1::5:11.22.33.44',
+ 'fe80::217:f2ff:254.7.237.98',
+ '::ffff:192.168.1.26',
+ '::ffff:192.168.1.1',
+ '0:0:0:0:0:0:13.1.68.3', # IPv4-compatible IPv6 address, full, deprecated
+ '0:0:0:0:0:FFFF:129.144.52.38', # IPv4-mapped IPv6 address, full
+ '::13.1.68.3', # IPv4-compatible IPv6 address, compressed, deprecated
+ '::FFFF:129.144.52.38', # IPv4-mapped IPv6 address, compressed
+ 'fe80:0:0:0:204:61ff:254.157.241.86',
+ 'fe80::204:61ff:254.157.241.86',
+ '::ffff:12.34.56.78',
+ '::ffff:192.0.2.128', # this is OK, since there's a single zero digit in IPv4
+ 'fe80:0000:0000:0000:0204:61ff:fe9d:f156',
+ 'fe80:0:0:0:204:61ff:fe9d:f156',
+ 'fe80::204:61ff:fe9d:f156',
+ '::1',
+ 'fe80::',
+ 'fe80::1',
+ '::ffff:c000:280',
# Additional test cases from http://rt.cpan.org/Public/Bug/Display.html?id=50693
- "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "2001:db8:85a3:0:0:8a2e:370:7334",
- "2001:db8:85a3::8a2e:370:7334",
- "2001:0db8:0000:0000:0000:0000:1428:57ab",
- "2001:0db8:0000:0000:0000::1428:57ab",
- "2001:0db8:0:0:0:0:1428:57ab",
- "2001:0db8:0:0::1428:57ab",
- "2001:0db8::1428:57ab",
- "2001:db8::1428:57ab",
- "0000:0000:0000:0000:0000:0000:0000:0001",
- "::1",
- "::ffff:0c22:384e",
- "2001:0db8:1234:0000:0000:0000:0000:0000",
- "2001:0db8:1234:ffff:ffff:ffff:ffff:ffff",
- "2001:db8:a::123",
- "fe80::",
-
- "1111:2222:3333:4444:5555:6666:7777:8888",
- "1111:2222:3333:4444:5555:6666:7777::",
- "1111:2222:3333:4444:5555:6666::",
- "1111:2222:3333:4444:5555::",
- "1111:2222:3333:4444::",
- "1111:2222:3333::",
- "1111:2222::",
- "1111::",
- "1111:2222:3333:4444:5555:6666::8888",
- "1111:2222:3333:4444:5555::8888",
- "1111:2222:3333:4444::8888",
- "1111:2222:3333::8888",
- "1111:2222::8888",
- "1111::8888",
- "::8888",
- "1111:2222:3333:4444:5555::7777:8888",
- "1111:2222:3333:4444::7777:8888",
- "1111:2222:3333::7777:8888",
- "1111:2222::7777:8888",
- "1111::7777:8888",
- "::7777:8888",
- "1111:2222:3333:4444::6666:7777:8888",
- "1111:2222:3333::6666:7777:8888",
- "1111:2222::6666:7777:8888",
- "1111::6666:7777:8888",
- "::6666:7777:8888",
- "1111:2222:3333::5555:6666:7777:8888",
- "1111:2222::5555:6666:7777:8888",
- "1111::5555:6666:7777:8888",
- "::5555:6666:7777:8888",
- "1111:2222::4444:5555:6666:7777:8888",
- "1111::4444:5555:6666:7777:8888",
- "::4444:5555:6666:7777:8888",
- "1111::3333:4444:5555:6666:7777:8888",
- "::3333:4444:5555:6666:7777:8888",
- "::2222:3333:4444:5555:6666:7777:8888",
- "1111:2222:3333:4444:5555:6666:123.123.123.123",
- "1111:2222:3333:4444:5555::123.123.123.123",
- "1111:2222:3333:4444::123.123.123.123",
- "1111:2222:3333::123.123.123.123",
- "1111:2222::123.123.123.123",
- "1111::123.123.123.123",
- "::123.123.123.123",
- "1111:2222:3333:4444::6666:123.123.123.123",
- "1111:2222:3333::6666:123.123.123.123",
- "1111:2222::6666:123.123.123.123",
- "1111::6666:123.123.123.123",
- "::6666:123.123.123.123",
- "1111:2222:3333::5555:6666:123.123.123.123",
- "1111:2222::5555:6666:123.123.123.123",
- "1111::5555:6666:123.123.123.123",
- "::5555:6666:123.123.123.123",
- "1111:2222::4444:5555:6666:123.123.123.123",
- "1111::4444:5555:6666:123.123.123.123",
- "::4444:5555:6666:123.123.123.123",
- "1111::3333:4444:5555:6666:123.123.123.123",
- "::2222:3333:4444:5555:6666:123.123.123.123",
+ '2001:0db8:85a3:0000:0000:8a2e:0370:7334',
+ '2001:db8:85a3:0:0:8a2e:370:7334',
+ '2001:db8:85a3::8a2e:370:7334',
+ '2001:0db8:0000:0000:0000:0000:1428:57ab',
+ '2001:0db8:0000:0000:0000::1428:57ab',
+ '2001:0db8:0:0:0:0:1428:57ab',
+ '2001:0db8:0:0::1428:57ab',
+ '2001:0db8::1428:57ab',
+ '2001:db8::1428:57ab',
+ '0000:0000:0000:0000:0000:0000:0000:0001',
+ '::1',
+ '::ffff:0c22:384e',
+ '2001:0db8:1234:0000:0000:0000:0000:0000',
+ '2001:0db8:1234:ffff:ffff:ffff:ffff:ffff',
+ '2001:db8:a::123',
+ 'fe80::',
+
+ '1111:2222:3333:4444:5555:6666:7777:8888',
+ '1111:2222:3333:4444:5555:6666:7777::',
+ '1111:2222:3333:4444:5555:6666::',
+ '1111:2222:3333:4444:5555::',
+ '1111:2222:3333:4444::',
+ '1111:2222:3333::',
+ '1111:2222::',
+ '1111::',
+ '1111:2222:3333:4444:5555:6666::8888',
+ '1111:2222:3333:4444:5555::8888',
+ '1111:2222:3333:4444::8888',
+ '1111:2222:3333::8888',
+ '1111:2222::8888',
+ '1111::8888',
+ '::8888',
+ '1111:2222:3333:4444:5555::7777:8888',
+ '1111:2222:3333:4444::7777:8888',
+ '1111:2222:3333::7777:8888',
+ '1111:2222::7777:8888',
+ '1111::7777:8888',
+ '::7777:8888',
+ '1111:2222:3333:4444::6666:7777:8888',
+ '1111:2222:3333::6666:7777:8888',
+ '1111:2222::6666:7777:8888',
+ '1111::6666:7777:8888',
+ '::6666:7777:8888',
+ '1111:2222:3333::5555:6666:7777:8888',
+ '1111:2222::5555:6666:7777:8888',
+ '1111::5555:6666:7777:8888',
+ '::5555:6666:7777:8888',
+ '1111:2222::4444:5555:6666:7777:8888',
+ '1111::4444:5555:6666:7777:8888',
+ '::4444:5555:6666:7777:8888',
+ '1111::3333:4444:5555:6666:7777:8888',
+ '::3333:4444:5555:6666:7777:8888',
+ '::2222:3333:4444:5555:6666:7777:8888',
+ '1111:2222:3333:4444:5555:6666:123.123.123.123',
+ '1111:2222:3333:4444:5555::123.123.123.123',
+ '1111:2222:3333:4444::123.123.123.123',
+ '1111:2222:3333::123.123.123.123',
+ '1111:2222::123.123.123.123',
+ '1111::123.123.123.123',
+ '::123.123.123.123',
+ '1111:2222:3333:4444::6666:123.123.123.123',
+ '1111:2222:3333::6666:123.123.123.123',
+ '1111:2222::6666:123.123.123.123',
+ '1111::6666:123.123.123.123',
+ '::6666:123.123.123.123',
+ '1111:2222:3333::5555:6666:123.123.123.123',
+ '1111:2222::5555:6666:123.123.123.123',
+ '1111::5555:6666:123.123.123.123',
+ '::5555:6666:123.123.123.123',
+ '1111:2222::4444:5555:6666:123.123.123.123',
+ '1111::4444:5555:6666:123.123.123.123',
+ '::4444:5555:6666:123.123.123.123',
+ '1111::3333:4444:5555:6666:123.123.123.123',
+ '::2222:3333:4444:5555:6666:123.123.123.123',
# Playing with combinations of "0" and "::"; these are all sytactically
# correct, but are bad form because "0" adjacent to "::" should be
# combined into "::"
- "::0:0:0:0:0:0:0",
- "::0:0:0:0:0:0",
- "::0:0:0:0:0",
- "::0:0:0:0",
- "::0:0:0",
- "::0:0",
- "::0",
- "0:0:0:0:0:0:0::",
- "0:0:0:0:0:0::",
- "0:0:0:0:0::",
- "0:0:0:0::",
- "0:0:0::",
- "0:0::",
- "0::",
+ '::0:0:0:0:0:0:0',
+ '::0:0:0:0:0:0',
+ '::0:0:0:0:0',
+ '::0:0:0:0',
+ '::0:0:0',
+ '::0:0',
+ '::0',
+ '0:0:0:0:0:0:0::',
+ '0:0:0:0:0:0::',
+ '0:0:0:0:0::',
+ '0:0:0:0::',
+ '0:0:0::',
+ '0:0::',
+ '0::',
# Additional cases: http://crisp.tweakblogs.net/blog/2031/ipv6-validation-%28and-caveats%29.html
- "0:a:b:c:d:e:f::",
- "::0:a:b:c:d:e:f", # syntactically correct, but bad form (::0:... could be combined)
- "a:b:c:d:e:f:0::",
- ].each do |ip|
+ '0:a:b:c:d:e:f::',
+ '::0:a:b:c:d:e:f', # syntactically correct, but bad form (::0:... could be combined)
+ 'a:b:c:d:e:f:0::'].each do |ip|
it "should accept #{ip.inspect} as an IPv6 address" do
- expect { @class.new(:name => "foo", :ip => ip) }.not_to raise_error
+ expect { @class.new(name: 'foo', ip: ip) }.not_to raise_error
end
end
# ...aaaand, some failure cases.
- [":",
- "02001:0000:1234:0000:0000:C1C0:ABCD:0876", # extra 0 not allowed!
- "2001:0000:1234:0000:00001:C1C0:ABCD:0876", # extra 0 not allowed!
- "2001:0000:1234:0000:0000:C1C0:ABCD:0876 0", # junk after valid address
- "2001:0000:1234: 0000:0000:C1C0:ABCD:0876", # internal space
- "3ffe:0b00:0000:0001:0000:0000:000a", # seven segments
- "FF02:0000:0000:0000:0000:0000:0000:0000:0001", # nine segments
- "3ffe:b00::1::a", # double "::"
- "::1111:2222:3333:4444:5555:6666::", # double "::"
- "1:2:3::4:5::7:8", # Double "::"
- "12345::6:7:8",
+ [':',
+ '02001:0000:1234:0000:0000:C1C0:ABCD:0876', # extra 0 not allowed!
+ '2001:0000:1234:0000:00001:C1C0:ABCD:0876', # extra 0 not allowed!
+ '2001:0000:1234:0000:0000:C1C0:ABCD:0876 0', # junk after valid address
+ '2001:0000:1234: 0000:0000:C1C0:ABCD:0876', # internal space
+ '3ffe:0b00:0000:0001:0000:0000:000a', # seven segments
+ 'FF02:0000:0000:0000:0000:0000:0000:0000:0001', # nine segments
+ '3ffe:b00::1::a', # double "::"
+ '::1111:2222:3333:4444:5555:6666::', # double "::"
+ '1:2:3::4:5::7:8', # Double "::"
+ '12345::6:7:8',
# IPv4 embedded, but bad...
- "1::5:400.2.3.4", "1::5:260.2.3.4", "1::5:256.2.3.4", "1::5:1.256.3.4",
- "1::5:1.2.256.4", "1::5:1.2.3.256", "1::5:300.2.3.4", "1::5:1.300.3.4",
- "1::5:1.2.300.4", "1::5:1.2.3.300", "1::5:900.2.3.4", "1::5:1.900.3.4",
- "1::5:1.2.900.4", "1::5:1.2.3.900", "1::5:300.300.300.300", "1::5:3000.30.30.30",
- "1::400.2.3.4", "1::260.2.3.4", "1::256.2.3.4", "1::1.256.3.4",
- "1::1.2.256.4", "1::1.2.3.256", "1::300.2.3.4", "1::1.300.3.4",
- "1::1.2.300.4", "1::1.2.3.300", "1::900.2.3.4", "1::1.900.3.4",
- "1::1.2.900.4", "1::1.2.3.900", "1::300.300.300.300", "1::3000.30.30.30",
- "::400.2.3.4", "::260.2.3.4", "::256.2.3.4", "::1.256.3.4",
- "::1.2.256.4", "::1.2.3.256", "::300.2.3.4", "::1.300.3.4",
- "::1.2.300.4", "::1.2.3.300", "::900.2.3.4", "::1.900.3.4",
- "::1.2.900.4", "::1.2.3.900", "::300.300.300.300", "::3000.30.30.30",
- "2001:1:1:1:1:1:255Z255X255Y255", # garbage instead of "." in IPv4
- "::ffff:192x168.1.26", # ditto
- "::ffff:2.3.4",
- "::ffff:257.1.2.3",
- "1.2.3.4:1111:2222:3333:4444::5555",
- "1.2.3.4:1111:2222:3333::5555",
- "1.2.3.4:1111:2222::5555",
- "1.2.3.4:1111::5555",
- "1.2.3.4::5555",
- "1.2.3.4::",
+ '1::5:400.2.3.4', '1::5:260.2.3.4', '1::5:256.2.3.4', '1::5:1.256.3.4',
+ '1::5:1.2.256.4', '1::5:1.2.3.256', '1::5:300.2.3.4', '1::5:1.300.3.4',
+ '1::5:1.2.300.4', '1::5:1.2.3.300', '1::5:900.2.3.4', '1::5:1.900.3.4',
+ '1::5:1.2.900.4', '1::5:1.2.3.900', '1::5:300.300.300.300', '1::5:3000.30.30.30',
+ '1::400.2.3.4', '1::260.2.3.4', '1::256.2.3.4', '1::1.256.3.4',
+ '1::1.2.256.4', '1::1.2.3.256', '1::300.2.3.4', '1::1.300.3.4',
+ '1::1.2.300.4', '1::1.2.3.300', '1::900.2.3.4', '1::1.900.3.4',
+ '1::1.2.900.4', '1::1.2.3.900', '1::300.300.300.300', '1::3000.30.30.30',
+ '::400.2.3.4', '::260.2.3.4', '::256.2.3.4', '::1.256.3.4',
+ '::1.2.256.4', '::1.2.3.256', '::300.2.3.4', '::1.300.3.4',
+ '::1.2.300.4', '::1.2.3.300', '::900.2.3.4', '::1.900.3.4',
+ '::1.2.900.4', '::1.2.3.900', '::300.300.300.300', '::3000.30.30.30',
+ '2001:1:1:1:1:1:255Z255X255Y255', # garbage instead of "." in IPv4
+ '::ffff:192x168.1.26', # ditto
+ '::ffff:2.3.4',
+ '::ffff:257.1.2.3',
+ '1.2.3.4:1111:2222:3333:4444::5555',
+ '1.2.3.4:1111:2222:3333::5555',
+ '1.2.3.4:1111:2222::5555',
+ '1.2.3.4:1111::5555',
+ '1.2.3.4::5555',
+ '1.2.3.4::',
# Testing IPv4 addresses represented as dotted-quads Leading zero's in
# IPv4 addresses not allowed: some systems treat the leading "0" in
# ".086" as the start of an octal number Update: The BNF in RFC-3986
# explicitly defines the dec-octet (for IPv4 addresses) not to have a
# leading zero
- "fe80:0000:0000:0000:0204:61ff:254.157.241.086",
- "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4",
- "1111:2222:3333:4444:5555:6666:00.00.00.00",
- "1111:2222:3333:4444:5555:6666:000.000.000.000",
- "1111:2222:3333:4444:5555:6666:256.256.256.256",
-
- "1111:2222:3333:4444::5555:",
- "1111:2222:3333::5555:",
- "1111:2222::5555:",
- "1111::5555:",
- "::5555:",
- ":::",
- "1111:",
- ":",
-
- ":1111:2222:3333:4444::5555",
- ":1111:2222:3333::5555",
- ":1111:2222::5555",
- ":1111::5555",
- ":::5555",
- ":::",
+ 'fe80:0000:0000:0000:0204:61ff:254.157.241.086',
+ 'XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4',
+ '1111:2222:3333:4444:5555:6666:00.00.00.00',
+ '1111:2222:3333:4444:5555:6666:000.000.000.000',
+ '1111:2222:3333:4444:5555:6666:256.256.256.256',
+
+ '1111:2222:3333:4444::5555:',
+ '1111:2222:3333::5555:',
+ '1111:2222::5555:',
+ '1111::5555:',
+ '::5555:',
+ ':::',
+ '1111:',
+ ':',
+
+ ':1111:2222:3333:4444::5555',
+ ':1111:2222:3333::5555',
+ ':1111:2222::5555',
+ ':1111::5555',
+ ':::5555',
+ ':::',
# Additional test cases from http://rt.cpan.org/Public/Bug/Display.html?id=50693
- "123",
- "ldkfj",
- "2001::FFD3::57ab",
- "2001:db8:85a3::8a2e:37023:7334",
- "2001:db8:85a3::8a2e:370k:7334",
- "1:2:3:4:5:6:7:8:9",
- "1::2::3",
- "1:::3:4:5",
- "1:2:3::4:5:6:7:8:9",
+ '123',
+ 'ldkfj',
+ '2001::FFD3::57ab',
+ '2001:db8:85a3::8a2e:37023:7334',
+ '2001:db8:85a3::8a2e:370k:7334',
+ '1:2:3:4:5:6:7:8:9',
+ '1::2::3',
+ '1:::3:4:5',
+ '1:2:3::4:5:6:7:8:9',
# Invalid data
- "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX",
+ 'XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX',
# Too many components
- "1111:2222:3333:4444:5555:6666:7777:8888:9999",
- "1111:2222:3333:4444:5555:6666:7777:8888::",
- "::2222:3333:4444:5555:6666:7777:8888:9999",
+ '1111:2222:3333:4444:5555:6666:7777:8888:9999',
+ '1111:2222:3333:4444:5555:6666:7777:8888::',
+ '::2222:3333:4444:5555:6666:7777:8888:9999',
# Too few components
- "1111:2222:3333:4444:5555:6666:7777",
- "1111:2222:3333:4444:5555:6666",
- "1111:2222:3333:4444:5555",
- "1111:2222:3333:4444",
- "1111:2222:3333",
- "1111:2222",
- "1111",
+ '1111:2222:3333:4444:5555:6666:7777',
+ '1111:2222:3333:4444:5555:6666',
+ '1111:2222:3333:4444:5555',
+ '1111:2222:3333:4444',
+ '1111:2222:3333',
+ '1111:2222',
+ '1111',
# Missing :
- "11112222:3333:4444:5555:6666:7777:8888",
- "1111:22223333:4444:5555:6666:7777:8888",
- "1111:2222:33334444:5555:6666:7777:8888",
- "1111:2222:3333:44445555:6666:7777:8888",
- "1111:2222:3333:4444:55556666:7777:8888",
- "1111:2222:3333:4444:5555:66667777:8888",
- "1111:2222:3333:4444:5555:6666:77778888",
+ '11112222:3333:4444:5555:6666:7777:8888',
+ '1111:22223333:4444:5555:6666:7777:8888',
+ '1111:2222:33334444:5555:6666:7777:8888',
+ '1111:2222:3333:44445555:6666:7777:8888',
+ '1111:2222:3333:4444:55556666:7777:8888',
+ '1111:2222:3333:4444:5555:66667777:8888',
+ '1111:2222:3333:4444:5555:6666:77778888',
# Missing : intended for ::
- "1111:2222:3333:4444:5555:6666:7777:8888:",
- "1111:2222:3333:4444:5555:6666:7777:",
- "1111:2222:3333:4444:5555:6666:",
- "1111:2222:3333:4444:5555:",
- "1111:2222:3333:4444:",
- "1111:2222:3333:",
- "1111:2222:",
- "1111:",
- ":",
- ":8888",
- ":7777:8888",
- ":6666:7777:8888",
- ":5555:6666:7777:8888",
- ":4444:5555:6666:7777:8888",
- ":3333:4444:5555:6666:7777:8888",
- ":2222:3333:4444:5555:6666:7777:8888",
- ":1111:2222:3333:4444:5555:6666:7777:8888",
+ '1111:2222:3333:4444:5555:6666:7777:8888:',
+ '1111:2222:3333:4444:5555:6666:7777:',
+ '1111:2222:3333:4444:5555:6666:',
+ '1111:2222:3333:4444:5555:',
+ '1111:2222:3333:4444:',
+ '1111:2222:3333:',
+ '1111:2222:',
+ '1111:',
+ ':',
+ ':8888',
+ ':7777:8888',
+ ':6666:7777:8888',
+ ':5555:6666:7777:8888',
+ ':4444:5555:6666:7777:8888',
+ ':3333:4444:5555:6666:7777:8888',
+ ':2222:3333:4444:5555:6666:7777:8888',
+ ':1111:2222:3333:4444:5555:6666:7777:8888',
# :::
- ":::2222:3333:4444:5555:6666:7777:8888",
- "1111:::3333:4444:5555:6666:7777:8888",
- "1111:2222:::4444:5555:6666:7777:8888",
- "1111:2222:3333:::5555:6666:7777:8888",
- "1111:2222:3333:4444:::6666:7777:8888",
- "1111:2222:3333:4444:5555:::7777:8888",
- "1111:2222:3333:4444:5555:6666:::8888",
- "1111:2222:3333:4444:5555:6666:7777:::",
+ ':::2222:3333:4444:5555:6666:7777:8888',
+ '1111:::3333:4444:5555:6666:7777:8888',
+ '1111:2222:::4444:5555:6666:7777:8888',
+ '1111:2222:3333:::5555:6666:7777:8888',
+ '1111:2222:3333:4444:::6666:7777:8888',
+ '1111:2222:3333:4444:5555:::7777:8888',
+ '1111:2222:3333:4444:5555:6666:::8888',
+ '1111:2222:3333:4444:5555:6666:7777:::',
# Double ::",
- "::2222::4444:5555:6666:7777:8888",
- "::2222:3333::5555:6666:7777:8888",
- "::2222:3333:4444::6666:7777:8888",
- "::2222:3333:4444:5555::7777:8888",
- "::2222:3333:4444:5555:7777::8888",
- "::2222:3333:4444:5555:7777:8888::",
-
- "1111::3333::5555:6666:7777:8888",
- "1111::3333:4444::6666:7777:8888",
- "1111::3333:4444:5555::7777:8888",
- "1111::3333:4444:5555:6666::8888",
- "1111::3333:4444:5555:6666:7777::",
+ '::2222::4444:5555:6666:7777:8888',
+ '::2222:3333::5555:6666:7777:8888',
+ '::2222:3333:4444::6666:7777:8888',
+ '::2222:3333:4444:5555::7777:8888',
+ '::2222:3333:4444:5555:7777::8888',
+ '::2222:3333:4444:5555:7777:8888::',
- "1111:2222::4444::6666:7777:8888",
- "1111:2222::4444:5555::7777:8888",
- "1111:2222::4444:5555:6666::8888",
- "1111:2222::4444:5555:6666:7777::",
+ '1111::3333::5555:6666:7777:8888',
+ '1111::3333:4444::6666:7777:8888',
+ '1111::3333:4444:5555::7777:8888',
+ '1111::3333:4444:5555:6666::8888',
+ '1111::3333:4444:5555:6666:7777::',
- "1111:2222:3333::5555::7777:8888",
- "1111:2222:3333::5555:6666::8888",
- "1111:2222:3333::5555:6666:7777::",
+ '1111:2222::4444::6666:7777:8888',
+ '1111:2222::4444:5555::7777:8888',
+ '1111:2222::4444:5555:6666::8888',
+ '1111:2222::4444:5555:6666:7777::',
- "1111:2222:3333:4444::6666::8888",
- "1111:2222:3333:4444::6666:7777::",
+ '1111:2222:3333::5555::7777:8888',
+ '1111:2222:3333::5555:6666::8888',
+ '1111:2222:3333::5555:6666:7777::',
- "1111:2222:3333:4444:5555::7777::",
+ '1111:2222:3333:4444::6666::8888',
+ '1111:2222:3333:4444::6666:7777::',
+ '1111:2222:3333:4444:5555::7777::',
# Too many components"
- "1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4",
- "1111:2222:3333:4444:5555:6666:7777:1.2.3.4",
- "1111:2222:3333:4444:5555:6666::1.2.3.4",
- "::2222:3333:4444:5555:6666:7777:1.2.3.4",
- "1111:2222:3333:4444:5555:6666:1.2.3.4.5",
+ '1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4',
+ '1111:2222:3333:4444:5555:6666:7777:1.2.3.4',
+ '1111:2222:3333:4444:5555:6666::1.2.3.4',
+ '::2222:3333:4444:5555:6666:7777:1.2.3.4',
+ '1111:2222:3333:4444:5555:6666:1.2.3.4.5',
# Too few components
- "1111:2222:3333:4444:5555:1.2.3.4",
- "1111:2222:3333:4444:1.2.3.4",
- "1111:2222:3333:1.2.3.4",
- "1111:2222:1.2.3.4",
- "1111:1.2.3.4",
+ '1111:2222:3333:4444:5555:1.2.3.4',
+ '1111:2222:3333:4444:1.2.3.4',
+ '1111:2222:3333:1.2.3.4',
+ '1111:2222:1.2.3.4',
+ '1111:1.2.3.4',
# Missing :
- "11112222:3333:4444:5555:6666:1.2.3.4",
- "1111:22223333:4444:5555:6666:1.2.3.4",
- "1111:2222:33334444:5555:6666:1.2.3.4",
- "1111:2222:3333:44445555:6666:1.2.3.4",
- "1111:2222:3333:4444:55556666:1.2.3.4",
- "1111:2222:3333:4444:5555:66661.2.3.4",
+ '11112222:3333:4444:5555:6666:1.2.3.4',
+ '1111:22223333:4444:5555:6666:1.2.3.4',
+ '1111:2222:33334444:5555:6666:1.2.3.4',
+ '1111:2222:3333:44445555:6666:1.2.3.4',
+ '1111:2222:3333:4444:55556666:1.2.3.4',
+ '1111:2222:3333:4444:5555:66661.2.3.4',
# Missing .
- "1111:2222:3333:4444:5555:6666:255255.255.255",
- "1111:2222:3333:4444:5555:6666:255.255255.255",
- "1111:2222:3333:4444:5555:6666:255.255.255255",
+ '1111:2222:3333:4444:5555:6666:255255.255.255',
+ '1111:2222:3333:4444:5555:6666:255.255255.255',
+ '1111:2222:3333:4444:5555:6666:255.255.255255',
# Missing : intended for ::
- ":1.2.3.4",
- ":6666:1.2.3.4",
- ":5555:6666:1.2.3.4",
- ":4444:5555:6666:1.2.3.4",
- ":3333:4444:5555:6666:1.2.3.4",
- ":2222:3333:4444:5555:6666:1.2.3.4",
- ":1111:2222:3333:4444:5555:6666:1.2.3.4",
+ ':1.2.3.4',
+ ':6666:1.2.3.4',
+ ':5555:6666:1.2.3.4',
+ ':4444:5555:6666:1.2.3.4',
+ ':3333:4444:5555:6666:1.2.3.4',
+ ':2222:3333:4444:5555:6666:1.2.3.4',
+ ':1111:2222:3333:4444:5555:6666:1.2.3.4',
# :::
- ":::2222:3333:4444:5555:6666:1.2.3.4",
- "1111:::3333:4444:5555:6666:1.2.3.4",
- "1111:2222:::4444:5555:6666:1.2.3.4",
- "1111:2222:3333:::5555:6666:1.2.3.4",
- "1111:2222:3333:4444:::6666:1.2.3.4",
- "1111:2222:3333:4444:5555:::1.2.3.4",
+ ':::2222:3333:4444:5555:6666:1.2.3.4',
+ '1111:::3333:4444:5555:6666:1.2.3.4',
+ '1111:2222:::4444:5555:6666:1.2.3.4',
+ '1111:2222:3333:::5555:6666:1.2.3.4',
+ '1111:2222:3333:4444:::6666:1.2.3.4',
+ '1111:2222:3333:4444:5555:::1.2.3.4',
# Double ::
- "::2222::4444:5555:6666:1.2.3.4",
- "::2222:3333::5555:6666:1.2.3.4",
- "::2222:3333:4444::6666:1.2.3.4",
- "::2222:3333:4444:5555::1.2.3.4",
+ '::2222::4444:5555:6666:1.2.3.4',
+ '::2222:3333::5555:6666:1.2.3.4',
+ '::2222:3333:4444::6666:1.2.3.4',
+ '::2222:3333:4444:5555::1.2.3.4',
- "1111::3333::5555:6666:1.2.3.4",
- "1111::3333:4444::6666:1.2.3.4",
- "1111::3333:4444:5555::1.2.3.4",
+ '1111::3333::5555:6666:1.2.3.4',
+ '1111::3333:4444::6666:1.2.3.4',
+ '1111::3333:4444:5555::1.2.3.4',
- "1111:2222::4444::6666:1.2.3.4",
- "1111:2222::4444:5555::1.2.3.4",
+ '1111:2222::4444::6666:1.2.3.4',
+ '1111:2222::4444:5555::1.2.3.4',
- "1111:2222:3333::5555::1.2.3.4",
+ '1111:2222:3333::5555::1.2.3.4',
# Missing parts
- "::.",
- "::..",
- "::...",
- "::1...",
- "::1.2..",
- "::1.2.3.",
- "::.2..",
- "::.2.3.",
- "::.2.3.4",
- "::..3.",
- "::..3.4",
- "::...4",
+ '::.',
+ '::..',
+ '::...',
+ '::1...',
+ '::1.2..',
+ '::1.2.3.',
+ '::.2..',
+ '::.2.3.',
+ '::.2.3.4',
+ '::..3.',
+ '::..3.4',
+ '::...4',
# Extra : in front
- ":1111:2222:3333:4444:5555:6666:7777::",
- ":1111:2222:3333:4444:5555:6666::",
- ":1111:2222:3333:4444:5555::",
- ":1111:2222:3333:4444::",
- ":1111:2222:3333::",
- ":1111:2222::",
- ":1111::",
- ":::",
- ":1111:2222:3333:4444:5555:6666::8888",
- ":1111:2222:3333:4444:5555::8888",
- ":1111:2222:3333:4444::8888",
- ":1111:2222:3333::8888",
- ":1111:2222::8888",
- ":1111::8888",
- ":::8888",
- ":1111:2222:3333:4444:5555::7777:8888",
- ":1111:2222:3333:4444::7777:8888",
- ":1111:2222:3333::7777:8888",
- ":1111:2222::7777:8888",
- ":1111::7777:8888",
- ":::7777:8888",
- ":1111:2222:3333:4444::6666:7777:8888",
- ":1111:2222:3333::6666:7777:8888",
- ":1111:2222::6666:7777:8888",
- ":1111::6666:7777:8888",
- ":::6666:7777:8888",
- ":1111:2222:3333::5555:6666:7777:8888",
- ":1111:2222::5555:6666:7777:8888",
- ":1111::5555:6666:7777:8888",
- ":::5555:6666:7777:8888",
- ":1111:2222::4444:5555:6666:7777:8888",
- ":1111::4444:5555:6666:7777:8888",
- ":::4444:5555:6666:7777:8888",
- ":1111::3333:4444:5555:6666:7777:8888",
- ":::3333:4444:5555:6666:7777:8888",
- ":::2222:3333:4444:5555:6666:7777:8888",
- ":1111:2222:3333:4444:5555:6666:1.2.3.4",
- ":1111:2222:3333:4444:5555::1.2.3.4",
- ":1111:2222:3333:4444::1.2.3.4",
- ":1111:2222:3333::1.2.3.4",
- ":1111:2222::1.2.3.4",
- ":1111::1.2.3.4",
- ":::1.2.3.4",
- ":1111:2222:3333:4444::6666:1.2.3.4",
- ":1111:2222:3333::6666:1.2.3.4",
- ":1111:2222::6666:1.2.3.4",
- ":1111::6666:1.2.3.4",
- ":::6666:1.2.3.4",
- ":1111:2222:3333::5555:6666:1.2.3.4",
- ":1111:2222::5555:6666:1.2.3.4",
- ":1111::5555:6666:1.2.3.4",
- ":::5555:6666:1.2.3.4",
- ":1111:2222::4444:5555:6666:1.2.3.4",
- ":1111::4444:5555:6666:1.2.3.4",
- ":::4444:5555:6666:1.2.3.4",
- ":1111::3333:4444:5555:6666:1.2.3.4",
- ":::2222:3333:4444:5555:6666:1.2.3.4",
+ ':1111:2222:3333:4444:5555:6666:7777::',
+ ':1111:2222:3333:4444:5555:6666::',
+ ':1111:2222:3333:4444:5555::',
+ ':1111:2222:3333:4444::',
+ ':1111:2222:3333::',
+ ':1111:2222::',
+ ':1111::',
+ ':::',
+ ':1111:2222:3333:4444:5555:6666::8888',
+ ':1111:2222:3333:4444:5555::8888',
+ ':1111:2222:3333:4444::8888',
+ ':1111:2222:3333::8888',
+ ':1111:2222::8888',
+ ':1111::8888',
+ ':::8888',
+ ':1111:2222:3333:4444:5555::7777:8888',
+ ':1111:2222:3333:4444::7777:8888',
+ ':1111:2222:3333::7777:8888',
+ ':1111:2222::7777:8888',
+ ':1111::7777:8888',
+ ':::7777:8888',
+ ':1111:2222:3333:4444::6666:7777:8888',
+ ':1111:2222:3333::6666:7777:8888',
+ ':1111:2222::6666:7777:8888',
+ ':1111::6666:7777:8888',
+ ':::6666:7777:8888',
+ ':1111:2222:3333::5555:6666:7777:8888',
+ ':1111:2222::5555:6666:7777:8888',
+ ':1111::5555:6666:7777:8888',
+ ':::5555:6666:7777:8888',
+ ':1111:2222::4444:5555:6666:7777:8888',
+ ':1111::4444:5555:6666:7777:8888',
+ ':::4444:5555:6666:7777:8888',
+ ':1111::3333:4444:5555:6666:7777:8888',
+ ':::3333:4444:5555:6666:7777:8888',
+ ':::2222:3333:4444:5555:6666:7777:8888',
+ ':1111:2222:3333:4444:5555:6666:1.2.3.4',
+ ':1111:2222:3333:4444:5555::1.2.3.4',
+ ':1111:2222:3333:4444::1.2.3.4',
+ ':1111:2222:3333::1.2.3.4',
+ ':1111:2222::1.2.3.4',
+ ':1111::1.2.3.4',
+ ':::1.2.3.4',
+ ':1111:2222:3333:4444::6666:1.2.3.4',
+ ':1111:2222:3333::6666:1.2.3.4',
+ ':1111:2222::6666:1.2.3.4',
+ ':1111::6666:1.2.3.4',
+ ':::6666:1.2.3.4',
+ ':1111:2222:3333::5555:6666:1.2.3.4',
+ ':1111:2222::5555:6666:1.2.3.4',
+ ':1111::5555:6666:1.2.3.4',
+ ':::5555:6666:1.2.3.4',
+ ':1111:2222::4444:5555:6666:1.2.3.4',
+ ':1111::4444:5555:6666:1.2.3.4',
+ ':::4444:5555:6666:1.2.3.4',
+ ':1111::3333:4444:5555:6666:1.2.3.4',
+ ':::2222:3333:4444:5555:6666:1.2.3.4',
# Extra : at end
- "1111:2222:3333:4444:5555:6666:7777:::",
- "1111:2222:3333:4444:5555:6666:::",
- "1111:2222:3333:4444:5555:::",
- "1111:2222:3333:4444:::",
- "1111:2222:3333:::",
- "1111:2222:::",
- "1111:::",
- ":::",
- "1111:2222:3333:4444:5555:6666::8888:",
- "1111:2222:3333:4444:5555::8888:",
- "1111:2222:3333:4444::8888:",
- "1111:2222:3333::8888:",
- "1111:2222::8888:",
- "1111::8888:",
- "::8888:",
- "1111:2222:3333:4444:5555::7777:8888:",
- "1111:2222:3333:4444::7777:8888:",
- "1111:2222:3333::7777:8888:",
- "1111:2222::7777:8888:",
- "1111::7777:8888:",
- "::7777:8888:",
- "1111:2222:3333:4444::6666:7777:8888:",
- "1111:2222:3333::6666:7777:8888:",
- "1111:2222::6666:7777:8888:",
- "1111::6666:7777:8888:",
- "::6666:7777:8888:",
- "1111:2222:3333::5555:6666:7777:8888:",
- "1111:2222::5555:6666:7777:8888:",
- "1111::5555:6666:7777:8888:",
- "::5555:6666:7777:8888:",
- "1111:2222::4444:5555:6666:7777:8888:",
- "1111::4444:5555:6666:7777:8888:",
- "::4444:5555:6666:7777:8888:",
- "1111::3333:4444:5555:6666:7777:8888:",
- "::3333:4444:5555:6666:7777:8888:",
- "::2222:3333:4444:5555:6666:7777:8888:",
- ].each do |ip|
+ '1111:2222:3333:4444:5555:6666:7777:::',
+ '1111:2222:3333:4444:5555:6666:::',
+ '1111:2222:3333:4444:5555:::',
+ '1111:2222:3333:4444:::',
+ '1111:2222:3333:::',
+ '1111:2222:::',
+ '1111:::',
+ ':::',
+ '1111:2222:3333:4444:5555:6666::8888:',
+ '1111:2222:3333:4444:5555::8888:',
+ '1111:2222:3333:4444::8888:',
+ '1111:2222:3333::8888:',
+ '1111:2222::8888:',
+ '1111::8888:',
+ '::8888:',
+ '1111:2222:3333:4444:5555::7777:8888:',
+ '1111:2222:3333:4444::7777:8888:',
+ '1111:2222:3333::7777:8888:',
+ '1111:2222::7777:8888:',
+ '1111::7777:8888:',
+ '::7777:8888:',
+ '1111:2222:3333:4444::6666:7777:8888:',
+ '1111:2222:3333::6666:7777:8888:',
+ '1111:2222::6666:7777:8888:',
+ '1111::6666:7777:8888:',
+ '::6666:7777:8888:',
+ '1111:2222:3333::5555:6666:7777:8888:',
+ '1111:2222::5555:6666:7777:8888:',
+ '1111::5555:6666:7777:8888:',
+ '::5555:6666:7777:8888:',
+ '1111:2222::4444:5555:6666:7777:8888:',
+ '1111::4444:5555:6666:7777:8888:',
+ '::4444:5555:6666:7777:8888:',
+ '1111::3333:4444:5555:6666:7777:8888:',
+ '::3333:4444:5555:6666:7777:8888:',
+ '::2222:3333:4444:5555:6666:7777:8888:'].each do |ip|
it "should reject #{ip.inspect} as an IPv6 address" do
- expect { @class.new(:name => "foo", :ip => ip) }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
+ expect { @class.new(name: 'foo', ip: ip) }.to raise_error(Puppet::ResourceError, %r{Parameter ip failed})
end
end
- it "should not accept newlines in resourcename" do
- expect { @class.new(:name => "fo\no", :ip => '127.0.0.1' ) }.to raise_error(Puppet::ResourceError, /Hostname cannot include newline/)
+ it 'does not accept newlines in resourcename' do
+ expect { @class.new(name: "fo\no", ip: '127.0.0.1') }.to raise_error(Puppet::ResourceError, %r{Hostname cannot include newline})
end
- it "should not accept newlines in ipaddress" do
- expect { @class.new(:name => "foo", :ip => "127.0.0.1\n") }.to raise_error(Puppet::ResourceError, /Invalid IP address/)
+ it 'does not accept newlines in ipaddress' do
+ expect { @class.new(name: 'foo', ip: "127.0.0.1\n") }.to raise_error(Puppet::ResourceError, %r{Invalid IP address})
end
- it "should not accept newlines in host_aliases" do
- expect { @class.new(:name => "foo", :ip => '127.0.0.1', :host_aliases => [ 'well_formed', "thisalias\nhavenewline" ] ) }.to raise_error(Puppet::ResourceError, /Host aliases cannot include whitespace/)
+ it 'does not accept newlines in host_aliases' do
+ expect { @class.new(name: 'foo', ip: '127.0.0.1', host_aliases: ['well_formed', "thisalias\nhavenewline"]) }.to raise_error(Puppet::ResourceError, %r{Host aliases cannot include whitespace})
end
- it "should not accept newlines in comment" do
- expect { @class.new(:name => "foo", :ip => '127.0.0.1', :comment => "Test of comment blah blah \n test 123" ) }.to raise_error(Puppet::ResourceError, /Comment cannot include newline/)
+ it 'does not accept newlines in comment' do
+ expect { @class.new(name: 'foo', ip: '127.0.0.1', comment: "Test of comment blah blah \n test 123") }.to raise_error(Puppet::ResourceError, %r{Comment cannot include newline})
end
- it "should not accept spaces in resourcename" do
- expect { @class.new(:name => "foo bar") }.to raise_error(Puppet::ResourceError, /Invalid host name/)
+ it 'does not accept spaces in resourcename' do
+ expect { @class.new(name: 'foo bar') }.to raise_error(Puppet::ResourceError, %r{Invalid host name})
end
- it "should not accept host_aliases with spaces" do
- expect { @class.new(:name => "foo", :host_aliases => [ 'well_formed', 'not wellformed' ]) }.to raise_error(Puppet::ResourceError, /Host aliases cannot include whitespace/)
+ it 'does not accept host_aliases with spaces' do
+ expect { @class.new(name: 'foo', host_aliases: ['well_formed', 'not wellformed']) }.to raise_error(Puppet::ResourceError, %r{Host aliases cannot include whitespace})
end
- it "should not accept empty host_aliases" do
- expect { @class.new(:name => "foo", :host_aliases => ['alias1','']) }.to raise_error(Puppet::ResourceError, /Host aliases cannot be an empty string/)
+ it 'does not accept empty host_aliases' do
+ expect { @class.new(name: 'foo', host_aliases: ['alias1', '']) }.to raise_error(Puppet::ResourceError, %r{Host aliases cannot be an empty string})
end
end
- describe "when syncing" do
-
- it "should send the first value to the provider for ip property" do
- @ip = @class.attrclass(:ip).new(:resource => @resource, :should => %w{192.168.0.1 192.168.0.2})
+ describe 'when syncing' do
+ it 'sends the first value to the provider for ip property' do
+ @ip = @class.attrclass(:ip).new(resource: @resource, should: ['192.168.0.1', '192.168.0.2'])
@ip.sync
expect(@provider.ip).to eq('192.168.0.1')
end
- it "should send the first value to the provider for comment property" do
- @comment = @class.attrclass(:comment).new(:resource => @resource, :should => %w{Bazinga Notme})
+ it 'sends the first value to the provider for comment property' do
+ @comment = @class.attrclass(:comment).new(resource: @resource, should: ['Bazinga', 'Notme'])
@comment.sync
expect(@provider.comment).to eq('Bazinga')
end
- it "should send the joined array to the provider for host_alias" do
- @host_aliases = @class.attrclass(:host_aliases).new(:resource => @resource, :should => %w{foo bar})
+ it 'sends the joined array to the provider for host_alias' do
+ @host_aliases = @class.attrclass(:host_aliases).new(resource: @resource, should: ['foo', 'bar'])
@host_aliases.sync
expect(@provider.host_aliases).to eq('foo bar')
end
- it "should also use the specified delimiter for joining" do
- @host_aliases = @class.attrclass(:host_aliases).new(:resource => @resource, :should => %w{foo bar})
+ it 'alsoes use the specified delimiter for joining' do
+ @host_aliases = @class.attrclass(:host_aliases).new(resource: @resource, should: ['foo', 'bar'])
@host_aliases.stubs(:delimiter).returns "\t"
@host_aliases.sync
@@ -666,16 +661,15 @@ describe host do
expect(@provider.host_aliases).to eq("foo\tbar")
end
- it "should care about the order of host_aliases" do
- @host_aliases = @class.attrclass(:host_aliases).new(:resource => @resource, :should => %w{foo bar})
- expect(@host_aliases.insync?(%w{foo bar})).to eq(true)
- expect(@host_aliases.insync?(%w{bar foo})).to eq(false)
+ it 'cares about the order of host_aliases' do
+ @host_aliases = @class.attrclass(:host_aliases).new(resource: @resource, should: ['foo', 'bar'])
+ expect(@host_aliases.insync?(['foo', 'bar'])).to eq(true)
+ expect(@host_aliases.insync?(['bar', 'foo'])).to eq(false)
end
- it "should not consider aliases to be in sync if should is a subset of current" do
- @host_aliases = @class.attrclass(:host_aliases).new(:resource => @resource, :should => %w{foo bar})
- expect(@host_aliases.insync?(%w{foo bar anotherone})).to eq(false)
+ it 'does not consider aliases to be in sync if should is a subset of current' do
+ @host_aliases = @class.attrclass(:host_aliases).new(resource: @resource, should: ['foo', 'bar'])
+ expect(@host_aliases.insync?(['foo', 'bar', 'anotherone'])).to eq(false)
end
-
end
end