diff --git a/.fixtures.yml b/.fixtures.yml index 619c5f74..ae707da9 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -1,6 +1,5 @@ fixtures: repositories: - "stdlib": - "repo": "git://github.com/puppetlabs/puppetlabs-stdlib.git" + "stdlib": "https://github.com/puppetlabs/puppetlabs-stdlib.git" symlinks: sqlserver: "#{source_dir}" diff --git a/lib/puppet/parser/functions/sqlserver_validate_instance_name.rb b/lib/puppet/parser/functions/sqlserver_validate_instance_name.rb index 152876e2..e9cb7327 100644 --- a/lib/puppet/parser/functions/sqlserver_validate_instance_name.rb +++ b/lib/puppet/parser/functions/sqlserver_validate_instance_name.rb @@ -10,6 +10,7 @@ # @raise [Puppet::ParserError] Instance name can not be larger than 16 characters # @raise [Puppet::ParserError] Instance name can not start or end with underscore (_) # + module Puppet::Parser::Functions newfunction(:sqlserver_validate_instance_name, :docs => < e - raise Puppet::ParseError, "An exception was raised while trying to parse the svrrole hash key #{k} in #{value}: Exception is #{e}" - end - end - end -end diff --git a/manifests/config.pp b/manifests/config.pp index 81c72e7b..a33c41c6 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -23,10 +23,10 @@ # } # define sqlserver::config ( - $admin_user = '', - $admin_pass = '', - $admin_login_type = 'SQL_LOGIN', - $instance_name = $title, + Optional[String] $admin_user = '', + Optional[String] $admin_pass = '', + Enum['SQL_LOGIN', 'WINDOWS_LOGIN'] $admin_login_type = 'SQL_LOGIN', + String[1,16] $instance_name = $title, ) { ##This config is a catalog requirement for sqlserver_tsql and is looked up to retrieve the admin_user, ## admin_pass and admin_login_type for a given instance_name diff --git a/manifests/database.pp b/manifests/database.pp index a2fcbd0b..31c41347 100644 --- a/manifests/database.pp +++ b/manifests/database.pp @@ -83,32 +83,32 @@ # @see http://msdn.microsoft.com/en-us/library/ms190303.aspx System Languages # define sqlserver::database ( - $db_name = $title, - $instance = 'MSSQLSERVER', - $ensure = present, - $compatibility = 100, - $collation_name = undef, - $filestream_non_transacted_access = undef, - $filestream_directory_name = undef, - $filespec_name = undef, - $filespec_filename = undef, - $filespec_size = undef, - $filespec_maxsize = undef, - $filespec_filegrowth = undef, - $log_name = undef, - $log_filename = undef, - $log_size = undef, - $log_maxsize = undef, - $log_filegrowth = undef, - $containment = 'NONE', + String[1,128] $db_name = $title, + String[1,16] $instance = 'MSSQLSERVER', + Enum['present', 'absent'] $ensure = 'present', + Integer $compatibility = 100, + Optional[String[1]] $collation_name = undef, + Optional[Enum['OFF', 'READ_ONLY', 'FULL']] $filestream_non_transacted_access = undef, + Optional[Pattern[/^[\w|\s]+$/]] $filestream_directory_name = undef, + Optional[String[1,128]] $filespec_name = undef, + Optional[Stdlib::Absolutepath] $filespec_filename = undef, + Optional[String[1]] $filespec_size = undef, + Optional[String[1]] $filespec_maxsize = undef, + Optional[String[1]] $filespec_filegrowth = undef, + Optional[String[1,128]] $log_name = undef, + Optional[Stdlib::Absolutepath] $log_filename = undef, + Optional[String[1]] $log_size = undef, + Optional[String[1]] $log_maxsize = undef, + Optional[String[1]] $log_filegrowth = undef, + Enum['PARTIAL', 'NONE'] $containment = 'NONE', #require Containment = 'PARTIAL' for the following params to be executed - $default_fulltext_language = 'English', - $default_language = 'us_english', - $nested_triggers = undef, - $transform_noise_words = undef, - $two_digit_year_cutoff = 2049, - $db_chaining = 'OFF', - $trustworthy = 'OFF', + String[1] $default_fulltext_language = 'English', + String[1] $default_language = 'us_english', + Optional[Enum['ON', 'OFF']] $nested_triggers = undef, + Optional[Enum['ON', 'OFF']] $transform_noise_words = undef, + Integer[1753, 9999] $two_digit_year_cutoff = 2049, + Enum['ON', 'OFF'] $db_chaining = 'OFF', + Enum['ON', 'OFF'] $trustworthy = 'OFF', ){ ## # validate max size @@ -123,49 +123,38 @@ if $filespec_maxsize and $filespec_maxsize != 'UNLIMITED' { sqlserver_validate_size($filespec_maxsize) } + if $filespec_filename or $filespec_name { - validate_re($filespec_filename, '^.+$', 'filespec_filename must not be null if specifying filespec_name') - validate_re($filespec_name, '^.+$', 'filespec_name must not be null if specifying filespec_filename') - sqlserver_validate_range($filespec_name, 1, 128, 'filespec_name can not be more than 128 characters and must be at least 1 character in length') - validate_absolute_path($filespec_filename) - } - if $log_filename { - sqlserver_validate_range($log_name, 1, 128, "${log_name} can not be more than 128 characters and must be at least 1 character in length") - validate_absolute_path($log_filename) + assert_type(String[1], $filespec_filename) |$expected, $actual| { + fail('filespec_filename must also be specified when specifying filespec_name') + } + assert_type(String[1], $filespec_name) |$expected, $actual| { + fail('filespec_name must also be specified when specifying filespec_filename') + } } + if $log_size { sqlserver_validate_size($log_size) } if $log_maxsize { sqlserver_validate_size($log_maxsize) } - if $log_filename or $log_filegrowth or $log_maxsize or $log_name or $log_size { - sqlserver_validate_range($filespec_filename, 1, 128, 'filespec_name and filespec_filename must be specified when specifying any log attributes') - validate_absolute_path($filespec_filename) - } -## VALIDATE FILESTREAM - if $filestream_non_transacted_access { - validate_re($filestream_non_transacted_access, '^(OFF|READ_ONLY|FULL)$', - "filestream_non_transacted_access can be OFF|READ_ONLY|FULL only, you provided ${filestream_non_transacted_access}") + if $log_filename or $log_name { + assert_type(String[1], $log_filename) |$expected, $actual| { + fail('log_filename must also be specified when specifying log_name') + } + assert_type(String[1], $log_name) |$expected, $actual| { + fail('log_name must also be specified when specifying log_filename') + } } - if $filestream_directory_name { - validate_re($filestream_directory_name,'^[\w|\s]+$', - "Filestream Directory Name should not be an absolute path but a directory name only, you provided ${filestream_directory_name}") - } - - sqlserver_validate_instance_name($instance) - - validate_re($containment, '^(PARTIAL|NONE)$', "Containment must be either PARTIAL or NONE, you provided ${containment}") -## Validate PARTIAL required variables switches - if $containment == 'PARTIAL' { - if $db_chaining { sqlserver_validate_on_off($db_chaining) } - if $nested_triggers { sqlserver_validate_on_off($nested_triggers) } - if $transform_noise_words { sqlserver_validate_on_off($transform_noise_words) } - if $trustworthy { sqlserver_validate_on_off($trustworthy) } - sqlserver_validate_range($two_digit_year_cutoff, 1753, 9999, - "Two digit year cutoff must be between 1753 and 9999, you provided ${two_digit_year_cutoff}") + if $log_filename or $log_filegrowth or $log_maxsize or $log_name or $log_size { + assert_type(String[1], $filespec_filename) |$expected, $actual| { + fail('filespec_filename must also be specified when specifying any log attribute') + } + assert_type(String[1], $filespec_name) |$expected, $actual| { + fail('filespec_name must also be specified when specifying any log attribute') + } } - - validate_re($ensure,['^present$','^absent$'],"Ensure must be either present or absent, you provided ${ensure}") + sqlserver_validate_instance_name($instance) $create_delete = $ensure ? { present => 'create', @@ -178,6 +167,4 @@ onlyif => template('sqlserver/query/database_exists.sql.erb'), require => Sqlserver::Config[$instance], } - - } diff --git a/manifests/login.pp b/manifests/login.pp index e712902f..6b6d0fa8 100644 --- a/manifests/login.pp +++ b/manifests/login.pp @@ -51,23 +51,21 @@ ## define sqlserver::login ( $login = $title, - $instance = 'MSSQLSERVER', - $ensure = 'present', - $password = undef, - $svrroles = { }, - $login_type = 'SQL_LOGIN', - $default_database = 'master', - $default_language = 'us_english', - $check_expiration = false, - $check_policy = true, - $disabled = false, - $permissions = { }, + String[1,16] $instance = 'MSSQLSERVER', + Enum['SQL_LOGIN', 'WINDOWS_LOGIN'] $login_type = 'SQL_LOGIN', + Enum['present', 'absent'] $ensure = 'present', + Optional[String] $password = undef, + Optional[Hash] $svrroles = { }, + String $default_database = 'master', + String $default_language = 'us_english', + Boolean $check_expiration = false, + Boolean $check_policy = true, + Boolean $disabled = false, + Optional[Hash] $permissions = { }, ) { sqlserver_validate_instance_name($instance) - validate_re($login_type,['^(SQL_LOGIN|WINDOWS_LOGIN)$']) - if $check_expiration and !$check_policy { fail ('Can not have check expiration enabled when check_policy is disabled') } @@ -85,7 +83,6 @@ } if $ensure == present { - validate_hash($permissions) $_upermissions = sqlserver_upcase($permissions) sqlserver_validate_hash_uniq_values($_upermissions, "Duplicate permissions found for sqlserver::login[${title}]") diff --git a/manifests/login/permissions.pp b/manifests/login/permissions.pp index 0e498360..c25752a2 100644 --- a/manifests/login/permissions.pp +++ b/manifests/login/permissions.pp @@ -21,25 +21,16 @@ # ## define sqlserver::login::permissions ( - $login, - $permissions, - $state = 'GRANT', - $with_grant_option = false, - $instance = 'MSSQLSERVER', + String[1,128] $login, + Array[String[4,128]] $permissions, + Pattern[/(?i)^(GRANT|REVOKE|DENY)$/] $state = 'GRANT', + Optional[Boolean] $with_grant_option = false, + String[1,16] $instance = 'MSSQLSERVER', ){ sqlserver_validate_instance_name($instance) -## Validate Permissions - sqlserver_validate_range($permissions, 4, 128, 'Permission must be between 4 and 128 characters') - validate_array($permissions) - - sqlserver_validate_range($login, 1, 128, 'Login must be between 1 and 128 characters') - -## Validate state $_state = upcase($state) - validate_re($_state,'^(GRANT|REVOKE|DENY)$', "State parameter can only be one of 'GRANT', 'REVOKE' or 'DENY', you passed a value of ${state}") - validate_bool($with_grant_option) $_grant_option = $with_grant_option ? { true => '-WITH_GRANT_OPTION', default => '' diff --git a/manifests/role.pp b/manifests/role.pp index 70acce1d..dc7e8136 100644 --- a/manifests/role.pp +++ b/manifests/role.pp @@ -37,22 +37,18 @@ # Whether we should purge any members not listed in the members parameter. Default: false ## define sqlserver::role( - $ensure = present, - $role = $title, - $instance = 'MSSQLSERVER', - $authorization = undef, - $type = 'SERVER', - $database = 'master', - $permissions = { }, - $members = [], - $members_purge = false, + String[1,128] $role = $title, + String[1,16] $instance = 'MSSQLSERVER', + Enum['present', 'absent'] $ensure = 'present', + Optional[String] $authorization = undef, + Enum['SERVER', 'DATABASE'] $type = 'SERVER', + String[1,128] $database = 'master', + Optional[Hash] $permissions = { }, + Array[String] $members = [], + Boolean $members_purge = false, ){ sqlserver_validate_instance_name($instance) - sqlserver_validate_range($role, 1, 128, 'Role names must be between 1 and 128 characters') - validate_re($type, ['^SERVER$','^DATABASE$'], "Type must be either 'SERVER' or 'DATABASE', provided '${type}'") - - sqlserver_validate_range($database, 1, 128, 'Database name must be between 1 and 128 characters') if $type == 'SERVER' and $database != 'master' { fail('Can not specify a database other than master when managing SERVER ROLES') } @@ -75,7 +71,6 @@ } if $ensure == present { - validate_hash($permissions) $_upermissions = sqlserver_upcase($permissions) Sqlserver::Role::Permissions{ @@ -111,7 +106,6 @@ } } - validate_array($members) if size($members) > 0 or $members_purge == true { sqlserver_tsql{ "role-${role}-members": command => template('sqlserver/create/role/members.sql.erb'), diff --git a/manifests/role/permissions.pp b/manifests/role/permissions.pp index cb80072c..b1bc5dd9 100644 --- a/manifests/role/permissions.pp +++ b/manifests/role/permissions.pp @@ -31,32 +31,21 @@ # ## define sqlserver::role::permissions ( - $role, - $permissions, - $state = 'GRANT', - $with_grant_option = false, - $type = 'SERVER', - $database = 'master', - $instance = 'MSSQLSERVER', + String[1,128] $role, + Array[String[4,128]] $permissions, + Pattern[/(?i)^(GRANT|REVOKE|DENY)$/] $state = 'GRANT', + Optional[Boolean] $with_grant_option = false, + Enum['SERVER','DATABASE'] $type = 'SERVER', + String[1,128] $database = 'master', + String[1,16] $instance = 'MSSQLSERVER', ){ - validate_array($permissions) if size($permissions) < 1 { warning("Received an empty set of permissions for ${title}, no further action will be taken") } else{ sqlserver_validate_instance_name($instance) - #Validate state $_state = upcase($state) - validate_re($_state,'^(GRANT|REVOKE|DENY)$',"State can only be of 'GRANT', 'REVOKE' or 'DENY' you passed ${state}") - validate_bool($with_grant_option) - - #Validate role - sqlserver_validate_range($role, 1, 128, 'Role names must be between 1 and 128 characters') - - #Validate permissions - sqlserver_validate_range($permissions, 4, 128, 'Permissions must be between 4 and 128 characters') $_upermissions = upcase($permissions) - $_grant_option = $with_grant_option ? { true => '-WITH_GRANT_OPTION', false => '', diff --git a/manifests/sp_configure.pp b/manifests/sp_configure.pp index 32322221..4af52040 100644 --- a/manifests/sp_configure.pp +++ b/manifests/sp_configure.pp @@ -27,22 +27,14 @@ # @see http://msdn.microsoft.com/en-us/library/ms189631.aspx Server Configuration Options ## define sqlserver::sp_configure ( - $value, - $config_name = $title, - $instance = 'MSSQLSERVER', - $reconfigure = true, - $with_override = false, - $restart = false, + Integer $value, + Pattern['^\w+'] $config_name = $title, + String[1,16] $instance = 'MSSQLSERVER', + Boolean $reconfigure = true, + Boolean $with_override = false, + Boolean $restart = false, ){ sqlserver_validate_instance_name($instance) - validate_re($config_name,'^\w+') - if !is_integer($value) { - fail("Value for ${config_name}, for instance ${instance}, must be a integer value, you provided ${value}") - } - - validate_bool($reconfigure) - validate_bool($with_override) - validate_bool($restart) $service_name = $instance ? { 'MSSQLSERVER' => 'MSSQLSERVER', diff --git a/manifests/user.pp b/manifests/user.pp index 29139e83..c7bde386 100644 --- a/manifests/user.pp +++ b/manifests/user.pp @@ -39,14 +39,14 @@ # ## define sqlserver::user ( - $database, - $ensure = 'present', - $user = $title, - $default_schema = undef, - $instance = 'MSSQLSERVER', - $login = undef, - $password = undef, - $permissions = { }, + String[1,128] $database, + Enum['present', 'absent'] $ensure = 'present', + String[1] $user = $title, + Optional[String] $default_schema = undef, + String[1,16] $instance = 'MSSQLSERVER', + Optional[String[1]] $login = undef, + Optional[String[1,128]] $password = undef, + Optional[Hash] $permissions = { }, ) { sqlserver_validate_instance_name($instance) @@ -54,12 +54,10 @@ $is_windows_user = sqlserver_is_domain_or_local_user($login) if $password { - sqlserver_validate_range($password, 1, 128, 'Password must be equal or less than 128 characters') if $is_windows_user and $login != undef{ fail('Can not provide password when using a Windows Login') } } - sqlserver_validate_range($database, 1, 128, 'Database name must be between 1 and 128 characters') $create_delete = $ensure ? { present => 'create', @@ -74,7 +72,6 @@ } if $ensure == present { - validate_hash($permissions) $_upermissions = sqlserver_upcase($permissions) sqlserver_validate_hash_uniq_values($_upermissions, "Duplicate permissions found for sqlserver::user[${title}]") diff --git a/manifests/user/permissions.pp b/manifests/user/permissions.pp index e6d6c077..7ab14f78 100644 --- a/manifests/user/permissions.pp +++ b/manifests/user/permissions.pp @@ -27,32 +27,20 @@ # ## define sqlserver::user::permissions ( - $user, - $database, - $permissions, - $state = 'GRANT', - $with_grant_option = false, - $instance = 'MSSQLSERVER', + String[1,128] $user, + Array[String[4,128]] $permissions, + String[1,128] $database = 'master', + Pattern[/(?i)^(GRANT|REVOKE|DENY)$/] $state = 'GRANT', + Optional[Boolean] $with_grant_option = false, + String[1,16] $instance = 'MSSQLSERVER', ){ sqlserver_validate_instance_name($instance) -## Validate Permissions - sqlserver_validate_range($permissions, 4, 128, 'Permission must be between 4 and 128 characters') - validate_array($permissions) - -## Validate state $_state = upcase($state) - validate_re($_state,'^(GRANT|REVOKE|DENY)$',"State can only be of 'GRANT', 'REVOKE' or 'DENY' you passed ${state}") - - validate_bool($with_grant_option) if $with_grant_option and $_state != 'GRANT' { fail("Can not use with_grant_option and state ${_state}, must be 'GRANT'") } - sqlserver_validate_range($database, 1, 128, 'Database must be between 1 and 128 characters') - - sqlserver_validate_range($user, 1, 128, 'User must be between 1 and 128 characters') - $_grant_option = $with_grant_option ? { true => '-WITH_GRANT_OPTION', default => '' diff --git a/metadata.json b/metadata.json index 8a378281..e7ee1a3b 100644 --- a/metadata.json +++ b/metadata.json @@ -33,6 +33,6 @@ } ], "dependencies": [ - { "name": "puppetlabs-stdlib", "version_requirement": "4.x" } + { "name":"puppetlabs/stdlib","version_requirement":">= 4.13.1 < 5.0.0" } ] } diff --git a/spec/defines/database_spec.rb b/spec/defines/database_spec.rb index 324c17e8..7695d20e 100644 --- a/spec/defines/database_spec.rb +++ b/spec/defines/database_spec.rb @@ -23,12 +23,12 @@ describe 'Providing log filespec it should compile with valid log on params and' do it_behaves_like 'validation error' do let(:additional_params) { {:log_filename => "c:/test/logfile.ldf", :log_name => "myCrazyLog"} } - let(:raise_error_check) { 'filespec_name and filespec_filename must be specified when specifying any log attributes' } + let(:raise_error_check) { /(filespec_filename|filespec_name)/ } end it_behaves_like 'validation error' do let(:additional_params) { { :filespec_filename => 'c:/test/test.mdf'} } - let(:raise_error_check) { /(input needs to be a String|filespec_name must not be null if specifying filespec_filename)/ } + let(:raise_error_check) { /filespec_name must also be specified when specifying filespec_filename/ } end describe 'filespec_name can not be more than 128 characters' do it_behaves_like 'validation error' do @@ -36,7 +36,7 @@ :filespec_filename => 'c:/test/test.mdf', :filespec_name => 'OMGthisISsoReallyLongAndBoringProcessImeanAReallyOMGthisISsoReallyLongAndBoringProcessMakeItOMGthisISsoReallyLongAndBoringProcess'} } - let(:raise_error_check) { 'filespec_name can not be more than 128 characters' } + let(:raise_error_check) { "'filespec_name' expects" } end end it_behaves_like 'sqlserver_tsql command' do diff --git a/spec/defines/login/permissions_spec.rb b/spec/defines/login/permissions_spec.rb index 3cc41f45..f4fbfe7b 100644 --- a/spec/defines/login/permissions_spec.rb +++ b/spec/defines/login/permissions_spec.rb @@ -12,7 +12,7 @@ let(:params) { { :permissions => ['SELECT'], } } - let(:raise_error_check) { 'Login must be between 1 and 128 characters' } + let(:raise_error_check) { /'login' expects a String.+ value/ } describe 'missing' do if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') < 0 let(:raise_error_check) { 'Must pass login to Sqlserver::Login::Permissions[myTitle]' } @@ -30,11 +30,11 @@ it_behaves_like 'validation error' end end - context 'permission' do + context 'permissions' do let(:params) { { :login => 'loggingUser', } } - let(:raise_error_check) { 'Permission must be between 4 and 128 characters' } + let(:raise_error_check) { /'permissions' .+ expects a String.+ value/ } describe 'empty' do let(:additional_params) { {:permissions => ['']} } it_behaves_like 'validation error' @@ -55,7 +55,7 @@ } } describe 'invalid' do let(:additional_params) { {:state => 'invalid'} } - let(:raise_error_check) { "State parameter can only be one of 'GRANT', 'REVOKE' or 'DENY', you passed a value of invalid" } + let(:raise_error_check) { "'state' expects" } it_behaves_like 'validation error' end end diff --git a/spec/defines/role_spec.rb b/spec/defines/role_spec.rb index 21fd39a4..b8983b24 100644 --- a/spec/defines/role_spec.rb +++ b/spec/defines/role_spec.rb @@ -12,7 +12,7 @@ let(:additional_params) { { :type => 'invalid', } } - let(:raise_error_check) { "Type must be either 'SERVER' or 'DATABASE', provided 'invalid'" } + let(:raise_error_check) { "'type' expects" } it_behaves_like 'validation error' end describe 'SERVER' do @@ -80,7 +80,7 @@ end describe 'empty instance' do let(:additional_params) { {'instance' => ''} } - let(:raise_error_check) { 'Instance name must be between 1 to 16 characters' } + let(:raise_error_check) { "instance' expects a String[1, 16]" } it_behaves_like 'validation error' end end diff --git a/spec/defines/sp_configure_spec.rb b/spec/defines/sp_configure_spec.rb index ac4c5223..10e45631 100644 --- a/spec/defines/sp_configure_spec.rb +++ b/spec/defines/sp_configure_spec.rb @@ -38,13 +38,13 @@ describe 'reconfigure => invalid' do let(:additional_params) { {:reconfigure => 'invalid'} } - let(:raise_error_check) {'"invalid" is not a boolean. It looks to be a String'} + let(:raise_error_check) { "'reconfigure' expects a Boolean value" } it_behaves_like 'validation error' end describe 'restart => invalid' do let(:additional_params) { {:restart => 'invalid'} } - let(:raise_error_check) {'"invalid" is not a boolean. It looks to be a String'} + let(:raise_error_check) { "'restart' expects a Boolean value" } it_behaves_like 'validation error' end @@ -62,7 +62,7 @@ describe 'with_override => invalid' do let(:additional_params) { {:with_override => 'invalid'} } - let(:raise_error_check) {'"invalid" is not a boolean. It looks to be a String'} + let(:raise_error_check) { "'with_override' expects a Boolean value" } it_behaves_like 'validation error' end diff --git a/spec/defines/user/permissions_spec.rb b/spec/defines/user/permissions_spec.rb index 36934bae..18852705 100644 --- a/spec/defines/user/permissions_spec.rb +++ b/spec/defines/user/permissions_spec.rb @@ -13,13 +13,9 @@ :permissions => ['SELECT'], :database => 'loggingDb', } } - let(:raise_error_check) { 'User must be between 1 and 128 characters' } + let(:raise_error_check) { "'user' expects a String[1, 128] value" } describe 'missing' do - if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') < 0 - let(:raise_error_check) { 'Must pass user to Sqlserver::User::Permissions[myTitle]' } - else - let(:raise_error_check) { "expects a value for parameter 'user'" } - end + let(:raise_error_check) { "expects a value for parameter 'user'" } it_behaves_like 'validation error' end @@ -37,9 +33,10 @@ :user => 'loggingUser', :database => 'loggingDb', } } - let(:raise_error_check) { 'Permission must be between 4 and 128 characters' } + let(:raise_error_check) { /'permissions' .+ expects a String.+ value/ } describe 'empty' do let(:additional_params) { {:permissions => ''} } + let(:raise_error_check) { /'permissions' expects an Array value/ } it_behaves_like 'validation error' end describe 'under limit' do @@ -59,7 +56,7 @@ } } describe 'invalid' do let(:additional_params) { {:state => 'invalide'} } - let(:raise_error_check) { "State can only be of 'GRANT', 'REVOKE' or 'DENY' you passed invalide" } + let(:raise_error_check) { "'state' expects" } it_behaves_like 'validation error' end end @@ -77,7 +74,7 @@ end describe 'invalid' do let(:additional_params) { {:with_grant_option => 'invalid'} } - let(:raise_error_check) { '"invalid" is not a boolean' } + let(:raise_error_check) { "'with_grant_option' expects" } it_behaves_like 'validation error' end end diff --git a/spec/defines/user_spec.rb b/spec/defines/user_spec.rb index 54b77183..9ae3b7ac 100644 --- a/spec/defines/user_spec.rb +++ b/spec/defines/user_spec.rb @@ -12,7 +12,7 @@ o = [('a'..'z'), ('A'..'Z'), (0..9)].map { |i| i.to_a }.flatten string = (0...129).map { o[rand(o.length)] }.join let(:additional_params) { {:password => string} } - let(:raise_error_check) { 'Password must be equal or less than 128 characters' } + let(:raise_error_check) { "'password' expects" } it_should_behave_like 'validation error' end @@ -20,7 +20,7 @@ o = [('a'..'z'), ('A'..'Z'), (0..9)].map { |i| i.to_a }.flatten string = (0...129).map { o[rand(o.length)] }.join let(:additional_params) { {:database => string} } - let(:raise_error_check) { 'Database name must be between 1 and 128 characters' } + let(:raise_error_check) { "'database' expects a String[1, 128]" } let(:sqlserver_tsql_title) { "user-MSSQLSERVER-#{string}-loggingUser" } it_should_behave_like 'validation error' end @@ -181,7 +181,6 @@ :permissions => {'GRANT' => ['CONNECT SQL'], 'REVOKE' => ['CONNECT SQL']} } } let(:raise_error_check) { "Duplicate permissions found for sqlserver::user[#{title}" } - let(:raise_error_check) { "Duplicate permissions found for sqlserver::user[#{title}" } it_behaves_like 'validation error' end end diff --git a/spec/functions/sqlserver_validate_svrroles_hash_spec.rb b/spec/functions/sqlserver_validate_svrroles_hash_spec.rb deleted file mode 100644 index 6ac2d2f7..00000000 --- a/spec/functions/sqlserver_validate_svrroles_hash_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -require 'spec_helper' -require 'puppet/error' - -RSpec.describe 'sqlserver_validate_svrroles_hash function' do - possible_roles = %w(sysadmin serveradmin securityadmin processadmin setupadmin bulkadmin diskadmin dbcreator) - - shared_examples 'compile' do |value| - it { - scope.function_sqlserver_validate_svrroles_hash([value]) - } - end - - shared_examples 'failure' do - - end - - describe 'should validate an empty hash' do - it_should_behave_like 'compile', {} - end - - describe 'should compile and validate the correct hash' do - it_should_behave_like 'compile', {'sysadmin' => 1} - end - - describe 'should fail when invalid role' do - let(:arguments) { [{'bogus' => 1}] } - let(:msg) { /svrrole requires a value of/ } - it { - expect { - scope.function_sqlserver_validate_svrroles_hash(arguments) - }.to raise_error(Puppet::Error, msg) - - } - end - - describe 'should fail with more than one parameter' do - let(:arguments) { [{'sysadmin' => 1}, 'whoops'] } - let(:msg) { /sqlserver_validate_svcrole_hash\(\): wrong number of arguments/ } - it { - expect { - scope.function_sqlserver_validate_svrroles_hash(arguments) - }.to raise_error(Puppet::Error, msg) - } - end - -end