Skip to content

(FM-3655) SQL Server CI acceptance issues #151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 25 additions & 26 deletions spec/acceptance/sqlserver_config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,16 @@
host = find_only_one("sql_host")

# Get instance name
INST_NAME = ("MSSQL" + SecureRandom.hex(4)).upcase
inst_name = ("MSSQL" + SecureRandom.hex(4)).upcase

# Get database name
DB_NAME = ("DB" + SecureRandom.hex(4)).upcase
db_name = ("DB" + SecureRandom.hex(4)).upcase

describe "sqlserver::config test", :node => host do
version = host['sql_version'].to_s

def ensure_sqlserver_instance(host, ensure_val = 'present')
def ensure_sqlserver_instance(host,inst_name, ensure_val = 'present')
create_new_instance= <<-MANIFEST
sqlserver_instance{'#{INST_NAME}':
sqlserver_instance{'#{inst_name}':
ensure => '#{ensure_val}',
source => 'H:',
features => [ 'SQL' ],
Expand All @@ -34,7 +33,7 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

before(:all) do
# Create new instance
ensure_sqlserver_instance(host)
ensure_sqlserver_instance(host, inst_name)

# get credentials for new config
@admin_user = "admin" + SecureRandom.hex(2)
Expand All @@ -51,13 +50,13 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

it "Create New Admin Login:" do
create_new_login = <<-MANIFEST
sqlserver::config{'#{INST_NAME}':
instance_name => '#{INST_NAME}',
sqlserver::config{'#{inst_name}':
instance_name => '#{inst_name}',
admin_user => 'sa',
admin_pass => 'Pupp3t1@',
}
sqlserver::login{'#{@admin_user}':
instance => '#{INST_NAME}',
instance => '#{inst_name}',
login_type => 'SQL_LOGIN',
login => '#{@admin_user}',
password => '#{@admin_pass}',
Expand All @@ -71,13 +70,13 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

it "Validate New Config WITH using instance_name in sqlserver::config" do
pp = <<-MANIFEST
sqlserver::config{'#{INST_NAME}':
sqlserver::config{'#{inst_name}':
admin_user => '#{@admin_user}',
admin_pass => '#{@admin_pass}',
instance_name => '#{INST_NAME}',
instance_name => '#{inst_name}',
}
sqlserver::database{'#{DB_NAME}':
instance => '#{INST_NAME}',
sqlserver::database{'#{db_name}':
instance => '#{inst_name}',
}
MANIFEST
apply_manifest_on(host, pp) do |r|
Expand All @@ -87,20 +86,20 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

it "Validate new login and database actualy created" do
hostname = host.hostname
query = "USE #{DB_NAME}; SELECT * from master..sysdatabases WHERE name = '#{DB_NAME}'"
query = "USE #{db_name}; SELECT * from master..sysdatabases WHERE name = '#{db_name}'"

run_sql_query(host, {:query => query, :server => hostname, :instance => INST_NAME, \
run_sql_query(host, {:query => query, :server => hostname, :instance => inst_name, \
:sql_admin_user => @admin_user, :sql_admin_pass => @admin_pass, :expected_row_count => 1})
end

it "Validate New Config WITHOUT using instance_name in sqlserver::config" do
pp = <<-MANIFEST
sqlserver::config{'#{INST_NAME}':
sqlserver::config{'#{inst_name}':
admin_user => '#{@admin_user}',
admin_pass => '#{@admin_pass}',
}
sqlserver::database{'#{DB_NAME}':
instance => '#{INST_NAME}',
sqlserver::database{'#{db_name}':
instance => '#{inst_name}',
}
MANIFEST
apply_manifest_on(host, pp) do |r|
Expand All @@ -110,12 +109,12 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

it "Negative test: sqlserver::config without admin_user" do
pp = <<-MANIFEST
sqlserver::config{'#{INST_NAME}':
sqlserver::config{'#{inst_name}':
admin_pass => '#{@admin_pass}',
instance_name => '#{INST_NAME}',
instance_name => '#{inst_name}',
}
sqlserver::database{'#{DB_NAME}':
instance => '#{INST_NAME}',
sqlserver::database{'#{db_name}':
instance => '#{inst_name}',
}
MANIFEST
apply_manifest_on(host, pp, {:acceptable_exit_codes => [0,1]}) do |r|
Expand All @@ -125,12 +124,12 @@ def ensure_sqlserver_instance(host, ensure_val = 'present')

it "Negative test: sqlserver::config without admin_pass" do
pp = <<-MANIFEST
sqlserver::config{'#{INST_NAME}':
sqlserver::config{'#{inst_name}':
admin_user => '#{@admin_user}',
instance_name => '#{INST_NAME}',
instance_name => '#{inst_name}',
}
sqlserver::database{'#{DB_NAME}':
instance => '#{INST_NAME}',
sqlserver::database{'#{db_name}':
instance => '#{inst_name}',
}
MANIFEST
apply_manifest_on(host, pp, {:acceptable_exit_codes => [0,1]}) do |r|
Expand Down
26 changes: 13 additions & 13 deletions spec/acceptance/sqlserver_role_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@
hostname = host.hostname

# database name
DB_NAME = ("DB" + SecureRandom.hex(4)).upcase
db_name = ("DB" + SecureRandom.hex(4)).upcase
LOGIN1 = "Login1_" + SecureRandom.hex(2)
LOGIN2 = "Login2_" + SecureRandom.hex(2)
LOGIN3 = "Login3_" + SecureRandom.hex(2)
USER1 = "User1_" + SecureRandom.hex(2)

describe "Test sqlserver::role", :node => host do

def ensure_sqlserver_logins_users(host)
def ensure_sqlserver_logins_users(host, db_name)
pp = <<-MANIFEST
sqlserver::config{'MSSQLSERVER':
admin_user => 'sa',
admin_pass => 'Pupp3t1@',
}
sqlserver::database{ '#{DB_NAME}':
sqlserver::database{ '#{db_name}':
}
sqlserver::login{'#{LOGIN1}':
login_type => 'SQL_LOGIN',
Expand All @@ -35,7 +35,7 @@ def ensure_sqlserver_logins_users(host)
password => 'Pupp3t1@',
}
sqlserver::user{'#{USER1}':
database => '#{DB_NAME}',
database => '#{db_name}',
user => '#{USER1}',
login => '#{LOGIN1}',
default_schema => 'guest',
Expand All @@ -50,7 +50,7 @@ def ensure_sqlserver_logins_users(host)
context "Start testing sqlserver::role", {:testrail => ['89161', '89162', '89163', '89164', '89165']} do
before(:all) do
# Create database users
ensure_sqlserver_logins_users(host)
ensure_sqlserver_logins_users(host, db_name)
end
before(:each) do
@role = "Role_" + SecureRandom.hex(2)
Expand Down Expand Up @@ -78,7 +78,7 @@ def ensure_sqlserver_logins_users(host)
admin_pass => 'Pupp3t1@',
}
sqlserver::user{'#{USER1}':
database => '#{DB_NAME}',
database => '#{db_name}',
ensure => 'absent',
}
MANIFEST
Expand Down Expand Up @@ -106,7 +106,7 @@ def ensure_sqlserver_logins_users(host)
end

#validate that the database-specific role '#{@role}' is successfully created with specified permissions':
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT spr.principal_id, spr.name,
spe.state_desc, spe.permission_name
FROM sys.server_principals AS spr
Expand All @@ -117,7 +117,7 @@ def ensure_sqlserver_logins_users(host)
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 2 })

# validate that the database-specific role '#{@role}' has correct authorization #{LOGIN1}
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT spr.name, sl.name
FROM sys.server_principals AS spr
JOIN sys.sql_logins AS sl
Expand All @@ -136,7 +136,7 @@ def ensure_sqlserver_logins_users(host)
sqlserver::role{'DatabaseRole':
ensure => 'present',
role => '#{@role}',
database => '#{DB_NAME}',
database => '#{db_name}',
permissions => {'GRANT' => ['SELECT', 'INSERT', 'UPDATE', 'DELETE', 'CONTROL', 'ALTER']},
type => 'DATABASE',
}
Expand All @@ -146,7 +146,7 @@ def ensure_sqlserver_logins_users(host)
end

# validate that the database-specific role '#{@role}' is successfully created with specified permissions':
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
Expand Down Expand Up @@ -178,7 +178,7 @@ def ensure_sqlserver_logins_users(host)
end

#validate that the server role '#{@role}' is successfully created with specified permissions':
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT spr.principal_id AS ID, spr.name AS Server_Role,
spe.state_desc, spe.permission_name
FROM sys.server_principals AS spr
Expand All @@ -189,7 +189,7 @@ def ensure_sqlserver_logins_users(host)
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 2 })

#validate that the t server role '#{@role}' has correct members (Login1, 2, 3)
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT spr.principal_id AS ID, spr.name AS ServerRole
FROM sys.server_principals AS spr
JOIN sys.server_role_members m
Expand Down Expand Up @@ -222,7 +222,7 @@ def ensure_sqlserver_logins_users(host)
end

#validate that the t server role '#{@role}' has correct members (only Login3)
query = "USE #{DB_NAME};
query = "USE #{db_name};
SELECT spr.principal_id AS ID, spr.name AS ServerRole
FROM sys.server_principals AS spr
JOIN sys.server_role_members m
Expand Down
22 changes: 11 additions & 11 deletions spec/acceptance/sqlserver_tsql_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
host = find_only_one("sql_host")

# database name
DB_NAME = ("DB" + SecureRandom.hex(4)).upcase
db_name = ("DB" + SecureRandom.hex(4)).upcase

#database user:
DB_LOGIN_USER = "loginuser" + SecureRandom.hex(2)

describe "sqlserver_tsql test", :node => host do

def ensure_sqlserver_database(host, ensure_val = 'present')
def ensure_sqlserver_database(host,db_name, ensure_val = 'present')
pp = <<-MANIFEST
sqlserver::config{'MSSQLSERVER':
admin_user => 'sa',
admin_pass => 'Pupp3t1@',
}
sqlserver::database{'#{DB_NAME}':
sqlserver::database{'#{db_name}':
instance => 'MSSQLSERVER',
}
MANIFEST
Expand All @@ -33,9 +33,9 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
before(:all) do
# Create new database
@table_name = 'Tables_' + SecureRandom.hex(3)
@query = "USE #{DB_NAME}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
@query = "USE #{db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"

ensure_sqlserver_database(host)
ensure_sqlserver_database(host, db_name)
end

after(:all) do
Expand All @@ -52,7 +52,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
}
sqlserver_tsql{'testsqlserver_tsql':
instance => 'MSSQLSERVER',
database => '#{DB_NAME}',
database => '#{db_name}',
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
}
MANIFEST
Expand All @@ -73,7 +73,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
it "Run sqlserver_tsql WITH onlyif is true:" do
#Initilize a new table name:
@table_name = 'Table_' + SecureRandom.hex(3)
@query = "USE #{DB_NAME}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
@query = "USE #{db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
pp = <<-MANIFEST
sqlserver::config{'MSSQLSERVER':
instance_name => 'MSSQLSERVER',
Expand All @@ -82,7 +82,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
}
sqlserver_tsql{'testsqlserver_tsql':
instance => 'MSSQLSERVER',
database => '#{DB_NAME}',
database => '#{db_name}',
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
onlyif => "IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES) < 10000"
}
Expand All @@ -105,7 +105,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
it "Run sqlserver_tsql WITH onlyif is false:" do
#Initilize a new table name:
@table_name = 'Table_' + SecureRandom.hex(3)
@query = "USE #{DB_NAME}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
@query = "USE #{db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
pp = <<-MANIFEST
sqlserver::config{'MSSQLSERVER':
instance_name => 'MSSQLSERVER',
Expand All @@ -114,7 +114,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
}
sqlserver_tsql{'testsqlserver_tsql':
instance => 'MSSQLSERVER',
database => '#{DB_NAME}',
database => '#{db_name}',
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
onlyif => "IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES) > 10000
THROW 5300, 'Too many tables', 10"
Expand Down Expand Up @@ -144,7 +144,7 @@ def ensure_sqlserver_database(host, ensure_val = 'present')
}
sqlserver_tsql{'testsqlserver_tsql':
instance => 'MSSQLSERVER',
database => '#{DB_NAME}',
database => '#{db_name}',
command => "invalid-tsql-command",
}
MANIFEST
Expand Down
Loading