X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Fspec%2Ffunctions%2Ffqdn_rand_string_spec.rb;fp=3rdparty%2Fmodules%2Fstdlib%2Fspec%2Ffunctions%2Ffqdn_rand_string_spec.rb;h=861a59ecb05177c7d814442362742dd1f82bb100;hb=6963202b4b62c2816655ac9532521b018fdf83bd;hp=949d930c7fedc2961cfa5edb78418804fc4f678a;hpb=a69999e580f8b3abd12446c2d6ad59e517651813;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/spec/functions/fqdn_rand_string_spec.rb b/3rdparty/modules/stdlib/spec/functions/fqdn_rand_string_spec.rb index 949d930c7..861a59ecb 100644 --- a/3rdparty/modules/stdlib/spec/functions/fqdn_rand_string_spec.rb +++ b/3rdparty/modules/stdlib/spec/functions/fqdn_rand_string_spec.rb @@ -1,51 +1,26 @@ -#! /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 { is_expected.to run.with_params(100, 'ãβ').and_return(/\A[ãβ]{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 +52,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?