Skip to content

Commit 0c17ce7

Browse files
committed
(MODULES-2454)/Automated_Test_For_Database_User
1 parent aaec34d commit 0c17ce7

File tree

1 file changed

+219
-0
lines changed

1 file changed

+219
-0
lines changed
+219
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
require 'spec_helper_acceptance'
2+
require 'securerandom'
3+
require 'erb'
4+
5+
host = find_only_one("sql_host")
6+
hostname = host.hostname
7+
8+
# database name
9+
DB_NAME = ("DB" + SecureRandom.hex(4)).upcase
10+
11+
describe "sqlserver::user test", :node => host do
12+
13+
def ensure_sqlserver_database(host, ensure_val = 'present')
14+
pp = <<-MANIFEST
15+
sqlserver::config{'MSSQLSERVER':
16+
admin_user => 'sa',
17+
admin_pass => 'Pupp3t1@',
18+
}
19+
sqlserver::sp_configure{ 'spconfig1':
20+
config_name => 'contained database authentication',
21+
value => 1,
22+
reconfigure => true,
23+
instance => 'MSSQLSERVER',
24+
}
25+
sqlserver::database{ '#{DB_NAME}':
26+
instance => 'MSSQLSERVER',
27+
collation_name => 'SQL_Estonian_CP1257_CS_AS',
28+
compatibility => '100',
29+
containment => 'PARTIAL',
30+
require => Sqlserver::Sp_configure['spconfig1']
31+
}
32+
MANIFEST
33+
34+
apply_manifest_on(host, pp) do |r|
35+
expect(r.stderr).not_to match(/Error/i)
36+
end
37+
end
38+
39+
context "Create database users with optional attributes", {:testrail => ['89143', '89144', '89145', '89146', '89149']} do
40+
before(:all) do
41+
# Create new database
42+
ensure_sqlserver_database(host)
43+
end
44+
before (:each) do
45+
@new_sql_login = "Login" + SecureRandom.hex(2)
46+
@db_user = "DBuser" + SecureRandom.hex(2)
47+
end
48+
49+
after(:all) do
50+
# remove the newly created instance
51+
#ensure_sqlserver_database(host, 'absent')
52+
end
53+
54+
it "Create database user with optional default_schema" do
55+
pp = <<-MANIFEST
56+
sqlserver::config{'MSSQLSERVER':
57+
admin_user => 'sa',
58+
admin_pass => 'Pupp3t1@',
59+
}
60+
sqlserver::login{'#{@db_user}':
61+
instance => 'MSSQLSERVER',
62+
login_type => 'SQL_LOGIN',
63+
password => 'Pupp3t1@',
64+
}
65+
sqlserver::user{'#{@db_user}':
66+
database => '#{DB_NAME}',
67+
user => '#{@db_user}',
68+
default_schema => 'guest',
69+
require => Sqlserver::Login['#{@db_user}'],
70+
}
71+
MANIFEST
72+
apply_manifest_on(host, pp) do |r|
73+
expect(r.stderr).not_to match(/Error/i)
74+
end
75+
76+
puts "validate that the database user '#{@db_user}' is successfully created with default schema 'guest':"
77+
query = "USE #{DB_NAME};
78+
SELECT name AS Database_User_Name, default_schema_name
79+
FROM SYS.DATABASE_PRINCIPALS
80+
WHERE name = '#{@db_user}'
81+
AND
82+
default_schema_name = 'guest';"
83+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 1 })
84+
end
85+
86+
it "Create database user with optional instance" do
87+
pp = <<-MANIFEST
88+
sqlserver::config{'MSSQLSERVER':
89+
admin_user => 'sa',
90+
admin_pass => 'Pupp3t1@',
91+
}
92+
sqlserver::login{'#{@db_user}':
93+
instance => 'MSSQLSERVER',
94+
login_type => 'SQL_LOGIN',
95+
password => 'Pupp3t1@',
96+
}
97+
sqlserver::user{'#{@db_user}':
98+
instance => 'MSSQLSERVER',
99+
database => '#{DB_NAME}',
100+
user => '#{@db_user}',
101+
require => Sqlserver::Login['#{@db_user}'],
102+
}
103+
MANIFEST
104+
apply_manifest_on(host, pp) do |r|
105+
expect(r.stderr).not_to match(/Error/i)
106+
end
107+
108+
puts "validate that the database user '#{@db_user}' is successfully created:"
109+
query = "USE #{DB_NAME};
110+
SELECT name AS Database_User_Name
111+
FROM SYS.DATABASE_PRINCIPALS
112+
WHERE name = '#{@db_user}';"
113+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 1 })
114+
end
115+
116+
it "Create database user with optional login" do
117+
pp = <<-MANIFEST
118+
sqlserver::config{'MSSQLSERVER':
119+
admin_user => 'sa',
120+
admin_pass => 'Pupp3t1@',
121+
}
122+
sqlserver::login{'#{@new_sql_login}':
123+
instance => 'MSSQLSERVER',
124+
login_type => 'SQL_LOGIN',
125+
password => 'Pupp3t1@',
126+
}
127+
sqlserver::user{'#{@db_user}':
128+
instance => 'MSSQLSERVER',
129+
database => '#{DB_NAME}',
130+
login => '#{@new_sql_login}',
131+
user => '#{@db_user}',
132+
require => Sqlserver::Login['#{@new_sql_login}'],
133+
}
134+
MANIFEST
135+
apply_manifest_on(host, pp) do |r|
136+
expect(r.stderr).not_to match(/Error/i)
137+
end
138+
139+
puts "validate that the database user '#{@db_user}' is mapped with sql login '#{@new_sql_login}':"
140+
query = "USE #{DB_NAME};
141+
SELECT d.name AS Database_User, l.name as Associated_sql_login
142+
FROM SYS.DATABASE_PRINCIPALS d, MASTER.SYS.SQL_LOGINS l
143+
WHERE d.sid = l.sid
144+
AND d.name = '#{@db_user}';"
145+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 1 })
146+
end
147+
148+
it "Create database user with optional password" do
149+
pp = <<-MANIFEST
150+
sqlserver::config{'MSSQLSERVER':
151+
admin_user => 'sa',
152+
admin_pass => 'Pupp3t1@',
153+
}
154+
sqlserver::login{'#{@new_sql_login}':
155+
instance => 'MSSQLSERVER',
156+
login_type => 'SQL_LOGIN',
157+
password => 'Pupp3t1@',
158+
}
159+
sqlserver::user{'#{@db_user}':
160+
instance => 'MSSQLSERVER',
161+
database => '#{DB_NAME}',
162+
login => '#{@new_sql_login}',
163+
user => '#{@db_user}',
164+
password => 'databaseUserPasswd',
165+
require => Sqlserver::Login['#{@new_sql_login}'],
166+
}
167+
MANIFEST
168+
apply_manifest_on(host, pp) do |r|
169+
expect(r.stderr).not_to match(/Error/i)
170+
end
171+
172+
puts "validate that the database user '#{@db_user}' is successfully created:"
173+
query = "USE #{DB_NAME}; SELECT * FROM SYS.DATABASE_PRINCIPALS WHERE name = '#{@db_user}';"
174+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 1 })
175+
end
176+
177+
it "Delete database user" do
178+
pp = <<-MANIFEST
179+
sqlserver::config{'MSSQLSERVER':
180+
admin_user => 'sa',
181+
admin_pass => 'Pupp3t1@',
182+
}
183+
sqlserver::login{'#{@db_user}':
184+
instance => 'MSSQLSERVER',
185+
login_type => 'SQL_LOGIN',
186+
password => 'Pupp3t1@',
187+
}
188+
sqlserver::user{'#{@db_user}':
189+
database => '#{DB_NAME}',
190+
require => Sqlserver::Login['#{@db_user}'],
191+
}
192+
MANIFEST
193+
apply_manifest_on(host, pp) do |r|
194+
expect(r.stderr).not_to match(/Error/i)
195+
end
196+
197+
puts "validate that the database user '#{@db_user}' is successfully created:"
198+
query = "USE #{DB_NAME}; SELECT * FROM SYS.DATABASE_PRINCIPALS WHERE name = '#{@db_user}';"
199+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 1 })
200+
201+
pp = <<-MANIFEST
202+
sqlserver::config{'MSSQLSERVER':
203+
admin_user => 'sa',
204+
admin_pass => 'Pupp3t1@',
205+
}
206+
sqlserver::user{'#{@db_user}':
207+
ensure => 'absent',
208+
database => '#{DB_NAME}',
209+
}
210+
MANIFEST
211+
apply_manifest_on(host, pp) do |r|
212+
expect(r.stderr).not_to match(/Error/i)
213+
end
214+
puts "validate that the database user '#{@db_user}' should be deleted:"
215+
query = "USE #{DB_NAME}; SELECT * FROM SYS.DATABASE_PRINCIPALS WHERE name = '#{@db_user}';"
216+
run_sql_query(host, { :query => query, :server => hostname, :expected_row_count => 0 })
217+
end
218+
end
219+
end

0 commit comments

Comments
 (0)