summaryrefslogtreecommitdiff
path: root/spec/functions/fqdn_rand_string_spec.rb
diff options
context:
space:
mode:
authorDavid Schmitt <david.schmitt@puppetlabs.com>2015-06-01 12:21:59 +0100
committerDavid Schmitt <david.schmitt@puppetlabs.com>2015-06-01 18:02:22 +0100
commitf3e79ddcd56a221c7799b35efde7e9803a5c7923 (patch)
tree730386688574c94169d47d37f79af77c2cda2f08 /spec/functions/fqdn_rand_string_spec.rb
parentb62dff0c6e09faf9bacfb02575e689ed09ee5e56 (diff)
downloadpuppet-stdlib-f3e79ddcd56a221c7799b35efde7e9803a5c7923.tar.gz
puppet-stdlib-f3e79ddcd56a221c7799b35efde7e9803a5c7923.tar.bz2
Convert tests to use plain rspec-puppet
Tests in the new style produces the following documentation output: abs should not eq nil should run abs() and raise an Puppet::ParseError should run abs(-34) and return 34 should run abs("-34") and return 34 should run abs(34) and return 34 should run abs("34") and return 34
Diffstat (limited to 'spec/functions/fqdn_rand_string_spec.rb')
-rw-r--r--spec/functions/fqdn_rand_string_spec.rb72
1 files changed, 23 insertions, 49 deletions
diff --git a/spec/functions/fqdn_rand_string_spec.rb b/spec/functions/fqdn_rand_string_spec.rb
index 949d930..e407084 100644
--- a/spec/functions/fqdn_rand_string_spec.rb
+++ b/spec/functions/fqdn_rand_string_spec.rb
@@ -1,51 +1,25 @@
-#! /usr/bin/env ruby -S rspec
require 'spec_helper'
-describe "the fqdn_rand_string function" do
- let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
-
- it "should exist" do
- expect(Puppet::Parser::Functions.function("fqdn_rand_string")).to eq("function_fqdn_rand_string")
- end
-
- it "should raise an ArgumentError if there is less than 1 argument" do
- expect { fqdn_rand_string() }.to( raise_error(ArgumentError, /wrong number of arguments/))
- end
-
- it "should raise an ArgumentError if argument 1 isn't a positive integer" do
- expect { fqdn_rand_string(0) }.to( raise_error(ArgumentError, /first argument must be a positive integer/))
- expect { fqdn_rand_string(-1) }.to( raise_error(ArgumentError, /first argument must be a positive integer/))
- expect { fqdn_rand_string(0.5) }.to( raise_error(ArgumentError, /first argument must be a positive integer/))
- end
-
- it "provides a valid alphanumeric string when no character set is provided" do
- length = 100
- string = %r{\A[a-zA-Z0-9]{#{length}}\z}
- expect(fqdn_rand_string(length).match(string)).not_to eq(nil)
- end
-
- it "provides a valid alphanumeric string when an undef character set is provided" do
- length = 100
- string = %r{\A[a-zA-Z0-9]{#{length}}\z}
- expect(fqdn_rand_string(length, :charset => nil).match(string)).not_to eq(nil)
- end
-
- it "provides a valid alphanumeric string when an empty character set is provided" do
- length = 100
- string = %r{\A[a-zA-Z0-9]{#{length}}\z}
- expect(fqdn_rand_string(length, :charset => '').match(string)).not_to eq(nil)
- end
-
- it "uses a provided character set" do
- length = 100
- charset = '!@#$%^&*()-_=+'
- string = %r{\A[#{charset}]{#{length}}\z}
- expect(fqdn_rand_string(length, :charset => charset).match(string)).not_to eq(nil)
- end
-
- it "provides a random string exactly as long as the given length" do
- expect(fqdn_rand_string(10).size).to eql(10)
- end
+describe 'fqdn_rand_string' do
+ let(:default_charset) { %r{\A[a-zA-Z0-9]{100}\z} }
+ it { is_expected.not_to eq(nil) }
+ it { is_expected.to run.with_params().and_raise_error(ArgumentError, /wrong number of arguments/i) }
+ it { is_expected.to run.with_params(0).and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params(1.5).and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params(-10).and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params("-10").and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params("string").and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params([]).and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params({}).and_raise_error(ArgumentError, /first argument must be a positive integer/) }
+ it { is_expected.to run.with_params(1, 1).and_raise_error(ArgumentError, /second argument must be undef or a string/) }
+ it { is_expected.to run.with_params(1, []).and_raise_error(ArgumentError, /second argument must be undef or a string/) }
+ it { is_expected.to run.with_params(1, {}).and_raise_error(ArgumentError, /second argument must be undef or a string/) }
+ it { is_expected.to run.with_params(100).and_return(default_charset) }
+ it { is_expected.to run.with_params("100").and_return(default_charset) }
+ it { is_expected.to run.with_params(100, nil).and_return(default_charset) }
+ it { is_expected.to run.with_params(100, '').and_return(default_charset) }
+ it { is_expected.to run.with_params(100, 'a').and_return(/\Aa{100}\z/) }
+ it { is_expected.to run.with_params(100, 'ab').and_return(/\A[ab]{100}\z/) }
it "provides the same 'random' value on subsequent calls for the same host" do
expect(fqdn_rand_string(10)).to eql(fqdn_rand_string(10))
@@ -77,9 +51,9 @@ describe "the fqdn_rand_string function" do
charset = args[:charset]
extra = args[:extra_identifier] || []
- scope = PuppetlabsSpec::PuppetInternals.scope
- scope.stubs(:[]).with("::fqdn").returns(host)
- scope.stubs(:lookupvar).with("::fqdn").returns(host)
+ # workaround not being able to use let(:facts) because some tests need
+ # multiple different hostnames in one context
+ scope.stubs(:lookupvar).with("::fqdn", {}).returns(host)
function_args = [max]
if args.has_key?(:charset) or !extra.empty?