summaryrefslogtreecommitdiff
path: root/puppet/modules/stdlib/spec/functions/validate_slength_spec.rb
diff options
context:
space:
mode:
authorMicah <micah@leap.se>2016-07-12 16:46:08 -0400
committerMicah <micah@leap.se>2016-07-12 16:46:08 -0400
commit40ea2656f072e23bbbccd22c39fb29a36390fa3a (patch)
tree48d3b759d30e95a25577548b46df37db0cd0d5d3 /puppet/modules/stdlib/spec/functions/validate_slength_spec.rb
parent95374aacb857ed35c2fdfe6be7c0bfab86653963 (diff)
git subrepo clone https://leap.se/git/puppet_stdlib puppet/modules/stdlib
subrepo: subdir: "puppet/modules/stdlib" merged: "7112363" upstream: origin: "https://leap.se/git/puppet_stdlib" branch: "master" commit: "7112363" git-subrepo: version: "0.3.0" origin: "https://github.com/ingydotnet/git-subrepo" commit: "1e79595" Change-Id: I032e3e7c2984bf53b717373df495c039bb6f41b3
Diffstat (limited to 'puppet/modules/stdlib/spec/functions/validate_slength_spec.rb')
-rwxr-xr-xpuppet/modules/stdlib/spec/functions/validate_slength_spec.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/puppet/modules/stdlib/spec/functions/validate_slength_spec.rb b/puppet/modules/stdlib/spec/functions/validate_slength_spec.rb
new file mode 100755
index 00000000..e23f61a2
--- /dev/null
+++ b/puppet/modules/stdlib/spec/functions/validate_slength_spec.rb
@@ -0,0 +1,67 @@
+#! /usr/bin/env ruby -S rspec
+
+require 'spec_helper'
+
+describe "the validate_slength function" do
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
+
+ it "should exist" do
+ expect(Puppet::Parser::Functions.function("validate_slength")).to eq("function_validate_slength")
+ end
+
+ describe "validating the input argument types" do
+ it "raises an error if there are less than two arguments" do
+ expect { scope.function_validate_slength([]) }.to raise_error Puppet::ParseError, /Wrong number of arguments/
+ end
+
+ it "raises an error if there are more than three arguments" do
+ expect { scope.function_validate_slength(['input', 1, 2, 3]) }.to raise_error Puppet::ParseError, /Wrong number of arguments/
+ end
+
+ it "raises an error if the first argument is not a string" do
+ expect { scope.function_validate_slength([Object.new, 2, 1]) }.to raise_error Puppet::ParseError, /Expected first argument.*got .*Object/
+ end
+
+ it "raises an error if the second argument cannot be cast to an Integer" do
+ expect { scope.function_validate_slength(['input', Object.new]) }.to raise_error Puppet::ParseError, /Expected second argument.*got .*Object/
+ end
+
+ it "raises an error if the third argument cannot be cast to an Integer" do
+ expect { scope.function_validate_slength(['input', 1, Object.new]) }.to raise_error Puppet::ParseError, /Expected third argument.*got .*Object/
+ end
+
+ it "raises an error if the second argument is smaller than the third argument" do
+ expect { scope.function_validate_slength(['input', 1, 2]) }.to raise_error Puppet::ParseError, /Expected second argument to be larger than third argument/
+ end
+ end
+
+ describe "validating the input string length" do
+ describe "when the input is a string" do
+ it "fails validation if the string is larger than the max length" do
+ expect { scope.function_validate_slength(['input', 1]) }.to raise_error Puppet::ParseError, /Expected length .* between 0 and 1, was 5/
+ end
+
+ it "fails validation if the string is less than the min length" do
+ expect { scope.function_validate_slength(['input', 10, 6]) }.to raise_error Puppet::ParseError, /Expected length .* between 6 and 10, was 5/
+ end
+
+ it "doesn't raise an error if the string is under the max length" do
+ scope.function_validate_slength(['input', 10])
+ end
+
+ it "doesn't raise an error if the string is equal to the max length" do
+ scope.function_validate_slength(['input', 5])
+ end
+
+ it "doesn't raise an error if the string is equal to the min length" do
+ scope.function_validate_slength(['input', 10, 5])
+ end
+ end
+
+ describe "when the input is an array" do
+ it "fails validation if one of the array elements is not a string" do
+ expect { scope.function_validate_slength([["a", "b", Object.new], 2]) }.to raise_error Puppet::ParseError, /Expected element at array position 2 .*String, got .*Object/
+ end
+ end
+ end
+end