1 #! /usr/bin/env ruby -S rspec
5 describe Puppet::Parser::Functions.function(:validate_ipv6_address) do
6 let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
8 describe "when calling validate_ipv6_address from puppet" do
9 describe "when given IPv6 address strings" do
10 it "should compile with one argument" do
11 Puppet[:code] = "validate_ipv6_address('3ffe:0505:0002::')"
12 scope.compiler.compile
15 it "should compile with multiple arguments" do
16 Puppet[:code] = "validate_ipv6_address('3ffe:0505:0002::', '3ffe:0505:0001::')"
17 scope.compiler.compile
21 describe "when given an ipv4 address" do
22 it "should not compile" do
23 Puppet[:code] = "validate_ipv6_address('1.2.3.4')"
25 scope.compiler.compile
26 }.to raise_error(Puppet::ParseError, /not a valid IPv6 address/)
30 describe "when given other strings" do
31 it "should not compile" do
32 Puppet[:code] = "validate_ipv6_address('hello', 'world')"
34 scope.compiler.compile
35 }.to raise_error(Puppet::ParseError, /not a valid IPv6 address/)
39 # 1.8.7 is EOL'd and also absolutely insane about ipv6
40 unless RUBY_VERSION == '1.8.7'
41 describe "when given numbers" do
42 it "should not compile" do
43 Puppet[:code] = "validate_ipv6_address(1, 2)"
45 scope.compiler.compile
46 }.to raise_error(Puppet::ParseError, /not a valid IPv6 address/)
51 describe "when given booleans" do
52 it "should not compile" do
53 Puppet[:code] = "validate_ipv6_address(true, false)"
55 scope.compiler.compile
56 }.to raise_error(Puppet::ParseError, /is not a string/)
60 it "should not compile when no arguments are passed" do
61 Puppet[:code] = "validate_ipv6_address()"
63 scope.compiler.compile
64 }.to raise_error(Puppet::ParseError, /wrong number of arguments/)