]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(#2) unstub is_valid_domain_name
authorKen Barber <ken@bob.sh>
Fri, 29 Jul 2011 19:08:31 +0000 (20:08 +0100)
committerKen Barber <ken@bob.sh>
Fri, 29 Jul 2011 19:08:31 +0000 (20:08 +0100)
lib/puppet/parser/functions/is_valid_domain_name.rb
spec/unit/parser/functions/is_valid_domain_name_spec.rb

index c0b319c16c87a0ef0e17116ffcd5d713739b8952..99d6f86985a707e6ecd7a9831be41bf938e36e35 100644 (file)
@@ -12,6 +12,14 @@ module Puppet::Parser::Functions
         "given #{arguments.size} for 1")
     end
 
+    domain = arguments[0]
+
+    if domain =~ /^(([a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\.?$/ then
+      return true
+    else
+      return false
+    end
+
   end
 end
 
index f03f6e8aba67dac338d068da4ca7c2d2f06c8c16..3339447fef0b4ee1e7b21ac937888a57eea2b548 100644 (file)
@@ -19,13 +19,38 @@ describe "the is_valid_domain_name function" do
   end
 
   it "should return true if a valid domain name" do
-    result = @scope.function_is_valid_domain_name("foo.bar.com")
-    result.should(eq(true))
+    result = @scope.function_is_valid_domain_name(["foo.bar.com"])
+    result.should(be_true)
   end
 
-  it "should return false if not a valid domain name" do
-    result = @scope.function_is_valid_domain_name("not valid")
-    result.should(eq(false))
+  it "should allow domain parts to start with numbers" do
+    result = @scope.function_is_valid_domain_name(["3foo.2bar.com"])
+    result.should(be_true)
+  end
+
+  it "should allow domain to end with a dot" do
+    result = @scope.function_is_valid_domain_name(["3foo.2bar.com."])
+    result.should(be_true)
+  end
+
+  it "should allow a single part domain" do
+    result = @scope.function_is_valid_domain_name(["orange"])
+    result.should(be_true)
+  end
+
+  it "should return false if domain parts start with hyphens" do
+    result = @scope.function_is_valid_domain_name(["-3foo.2bar.com"])
+    result.should(be_false)
+  end
+
+  it "should return true if domain contains hyphens" do
+    result = @scope.function_is_valid_domain_name(["3foo-bar.2bar-fuzz.com"])
+    result.should(be_true)
+  end
+
+  it "should return false if domain name contains spaces" do
+    result = @scope.function_is_valid_domain_name(["not valid"])
+    result.should(be_false)
   end
 
 end