]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(#2) - unstubbed is_valid_ip_address
authorKen Barber <ken@bob.sh>
Thu, 28 Jul 2011 17:10:16 +0000 (18:10 +0100)
committerKen Barber <ken@bob.sh>
Thu, 28 Jul 2011 17:10:16 +0000 (18:10 +0100)
lib/puppet/parser/functions/is_valid_ip_address.rb
spec/unit/parser/functions/is_valid_ip_address_spec.rb

index e91dda8c2e4ccd4d5c9e563c007e0b949d2b2696..4f45890a960d7c47a1bf96f1429809b37c6684f0 100644 (file)
@@ -7,11 +7,24 @@ module Puppet::Parser::Functions
     EOS
   ) do |arguments|
 
+    require 'ipaddr'
+
     if (arguments.size != 1) then
       raise(Puppet::ParseError, "is_valid_ip_address(): Wrong number of arguments "+
         "given #{arguments.size} for 1")
     end
 
+    begin 
+      ip = IPAddr.new(arguments[0])
+    rescue ArgumentError
+      return false
+    end
+
+    if ip.ipv4? or ip.ipv6? then
+      return true
+    else
+      return false
+    end
   end
 end
 
index ee53ee1a23887051c603ebc8136c103132acc4e0..2883aaa33ecd0fbab612ee610f40328a06269d28 100644 (file)
@@ -18,14 +18,28 @@ describe "the is_valid_ip_address function" do
     lambda { @scope.function_is_valid_ip_address([]) }.should( raise_error(Puppet::ParseError))
   end
 
-  it "should return true if an IP address" do
-    result = @scope.function_is_valid_ip_address("1.2.3.4")
+  it "should return true if an IPv4 address" do
+    result = @scope.function_is_valid_ip_address(["1.2.3.4"])
+    result.should(eq(true))
+  end
+
+  it "should return true if a full IPv6 address" do
+    result = @scope.function_is_valid_ip_address(["fe80:0000:cd12:d123:e2f8:47ff:fe09:dd74"])
+    result.should(eq(true))
+  end
+
+  it "should return true if a compressed IPv6 address" do
+    result = @scope.function_is_valid_ip_address(["fe00::1"])
     result.should(eq(true))
   end
 
   it "should return false if not valid" do
-    result = @scope.function_is_valid_ip_address("asdf")
+    result = @scope.function_is_valid_ip_address(["asdf"])
     result.should(eq(false))
   end
 
+  it "should return false if IP octets out of range" do
+    result = @scope.function_is_valid_ip_address(["1.1.1.300"])
+    result.should(eq(false))
+  end
 end