diff options
-rw-r--r-- | lib/puppet/parser/functions/is_valid_domain_name.rb | 8 | ||||
-rw-r--r-- | spec/unit/parser/functions/is_valid_domain_name_spec.rb | 35 |
2 files changed, 38 insertions, 5 deletions
diff --git a/lib/puppet/parser/functions/is_valid_domain_name.rb b/lib/puppet/parser/functions/is_valid_domain_name.rb index c0b319c..99d6f86 100644 --- a/lib/puppet/parser/functions/is_valid_domain_name.rb +++ b/lib/puppet/parser/functions/is_valid_domain_name.rb @@ -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 diff --git a/spec/unit/parser/functions/is_valid_domain_name_spec.rb b/spec/unit/parser/functions/is_valid_domain_name_spec.rb index f03f6e8..3339447 100644 --- a/spec/unit/parser/functions/is_valid_domain_name_spec.rb +++ b/spec/unit/parser/functions/is_valid_domain_name_spec.rb @@ -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 |