Skip to content

Commit 07df29f

Browse files
committed
Merge pull request #149 from phongdly/MODULES-2496/Tests_for_sqlserver--database
(MODULES-2496) Create Automated Tests for sqlserver::database
2 parents 32c635b + 422749a commit 07df29f

File tree

1 file changed

+287
-0
lines changed

1 file changed

+287
-0
lines changed
+287
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
require 'spec_helper_acceptance'
2+
require 'securerandom'
3+
4+
host = find_only_one("sql_host")
5+
6+
describe "Test sqlserver::database", :node => host do
7+
8+
def ensure_sqlserver_database(host, pp)
9+
apply_manifest_on(host, pp) do |r|
10+
expect(r.stderr).not_to match(/Error/i)
11+
end
12+
end
13+
14+
#Return options for run_sql_query
15+
def run_sql_query_opts (query, expected_row_count)
16+
run_sql_query_opt = {
17+
:query => query,
18+
:sql_admin_user => 'sa',
19+
:sql_admin_pass => 'Pupp3t1@',
20+
:expected_row_count => expected_row_count,
21+
}
22+
end
23+
24+
context "Start testing...", {:testrail => ['89019', '89076', '89077', '89078', '89079', '89080', '89081']} do
25+
26+
before(:each) do
27+
@db_name = ("DB" + SecureRandom.hex(4)).upcase
28+
@table_name = 'Tables_' + SecureRandom.hex(3)
29+
end
30+
31+
after(:each) do
32+
33+
# delete created database:
34+
35+
pp = <<-MANIFEST
36+
sqlserver::config{'MSSQLSERVER':
37+
admin_user => 'sa',
38+
admin_pass => 'Pupp3t1@',
39+
}
40+
sqlserver::database{'#{@db_name}':
41+
ensure => 'absent',
42+
}
43+
MANIFEST
44+
#comment out the below line because of ticket MODULES-2554.
45+
#ensure_sqlserver_database(host, pp)
46+
end
47+
48+
it "Test Case C89019: Create a database" do
49+
pp = <<-MANIFEST
50+
sqlserver::config{'MSSQLSERVER':
51+
admin_user => 'sa',
52+
admin_pass => 'Pupp3t1@',
53+
}
54+
sqlserver::database{'#{@db_name}':
55+
}
56+
sqlserver_tsql{'testsqlserver_tsql':
57+
instance => 'MSSQLSERVER',
58+
database => '#{@db_name}',
59+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
60+
require => Sqlserver::Database['#{@db_name}'],
61+
}
62+
MANIFEST
63+
ensure_sqlserver_database(host, pp)
64+
65+
puts "Validate the Database '#{@db_name}' and table '#{@table_name}' are successfully created:"
66+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
67+
run_sql_query(host, run_sql_query_opts(query, 1))
68+
end
69+
70+
it "Test Case C89076: Create database with optional collation_name" do
71+
pp = <<-MANIFEST
72+
sqlserver::config{'MSSQLSERVER':
73+
admin_user => 'sa',
74+
admin_pass => 'Pupp3t1@',
75+
}
76+
sqlserver::database{'#{@db_name}':
77+
collation_name => 'SQL_Estonian_CP1257_CS_AS',
78+
}
79+
sqlserver_tsql{'testsqlserver_tsql':
80+
instance => 'MSSQLSERVER',
81+
database => '#{@db_name}',
82+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
83+
require => Sqlserver::Database['#{@db_name}'],
84+
}
85+
MANIFEST
86+
ensure_sqlserver_database(host, pp)
87+
88+
puts "Validate that a table can be created in the database:"
89+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
90+
run_sql_query(host, run_sql_query_opts(query, 1))
91+
92+
puts "validate the Database '#{@db_name}' has correct collation name:"
93+
query = "SELECT name AS Database_Name, collation_name
94+
FROM sys.databases
95+
WHERE name = '#{@db_name}'
96+
AND collation_name = 'SQL_Estonian_CP1257_CS_AS';"
97+
98+
run_sql_query(host, run_sql_query_opts(query, 1))
99+
end
100+
101+
it "Test Case C89077: Create database with optional compatibility" do
102+
pp = <<-MANIFEST
103+
sqlserver::config{'MSSQLSERVER':
104+
admin_user => 'sa',
105+
admin_pass => 'Pupp3t1@',
106+
}
107+
sqlserver::database{'#{@db_name}':
108+
compatibility => 120,
109+
}
110+
sqlserver_tsql{'testsqlserver_tsql':
111+
instance => 'MSSQLSERVER',
112+
database => '#{@db_name}',
113+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
114+
require => Sqlserver::Database['#{@db_name}'],
115+
}
116+
MANIFEST
117+
ensure_sqlserver_database(host, pp)
118+
119+
puts "Validate that a table can be created in the database:"
120+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
121+
run_sql_query(host, run_sql_query_opts(query, 1))
122+
123+
puts "validate the Database '#{@db_name}' has correct compatibility level:"
124+
query = "SELECT name AS Database_Name, compatibility_level
125+
FROM sys.databases
126+
WHERE name = '#{@db_name}'
127+
AND compatibility_level = '120';"
128+
129+
run_sql_query(host, run_sql_query_opts(query, 1))
130+
end
131+
132+
it "Test Case C89078: Create database with optional containment" do
133+
pp = <<-MANIFEST
134+
sqlserver::config{'MSSQLSERVER':
135+
admin_user => 'sa',
136+
admin_pass => 'Pupp3t1@',
137+
}
138+
sqlserver::sp_configure{ 'sp_config4db':
139+
config_name => 'contained database authentication',
140+
value => 1,
141+
reconfigure => true,
142+
instance => 'MSSQLSERVER',
143+
}
144+
sqlserver::database{ '#{@db_name}':
145+
containment => 'PARTIAL',
146+
require => Sqlserver::Sp_configure['sp_config4db']
147+
}
148+
sqlserver_tsql{'testsqlserver_tsql':
149+
instance => 'MSSQLSERVER',
150+
database => '#{@db_name}',
151+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
152+
require => Sqlserver::Database['#{@db_name}'],
153+
}
154+
MANIFEST
155+
ensure_sqlserver_database(host, pp)
156+
157+
puts "Validate that a table can be created in the database:"
158+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
159+
run_sql_query(host, run_sql_query_opts(query, 1))
160+
161+
puts "validate the Database '#{@db_name}' has correct containment:"
162+
query = "SELECT name AS Database_Name, containment_desc
163+
FROM sys.databases
164+
WHERE name = '#{@db_name}'
165+
AND containment_desc = 'PARTIAL';"
166+
167+
run_sql_query(host, run_sql_query_opts(query, 1))
168+
end
169+
170+
it "Test Case C89079: Create database with optional db_chaining" do
171+
pp = <<-MANIFEST
172+
sqlserver::config{'MSSQLSERVER':
173+
admin_user => 'sa',
174+
admin_pass => 'Pupp3t1@',
175+
}
176+
sqlserver::sp_configure{ 'sp_config4db':
177+
config_name => 'contained database authentication',
178+
value => 1,
179+
reconfigure => true,
180+
instance => 'MSSQLSERVER',
181+
}
182+
sqlserver::database{ '#{@db_name}':
183+
containment => 'PARTIAL',
184+
db_chaining => 'ON',
185+
require => Sqlserver::Sp_configure['sp_config4db']
186+
}
187+
sqlserver_tsql{'testsqlserver_tsql':
188+
instance => 'MSSQLSERVER',
189+
database => '#{@db_name}',
190+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
191+
require => Sqlserver::Database['#{@db_name}'],
192+
}
193+
MANIFEST
194+
ensure_sqlserver_database(host, pp)
195+
196+
puts "Validate that a table can be created in the database:"
197+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
198+
run_sql_query(host, run_sql_query_opts(query, 1))
199+
200+
puts "validate the Database '#{@db_name}' has correct db_chaing setting:"
201+
query = "SELECT name AS Database_Name, is_db_chaining_on
202+
FROM sys.databases
203+
WHERE name = '#{@db_name}'
204+
AND is_db_chaining_on = '1';"
205+
206+
run_sql_query(host, run_sql_query_opts(query, 1))
207+
end
208+
209+
it "Test Case C89080: Create database with optional default_fulltext_language" do
210+
pp = <<-MANIFEST
211+
sqlserver::config{'MSSQLSERVER':
212+
admin_user => 'sa',
213+
admin_pass => 'Pupp3t1@',
214+
}
215+
sqlserver::sp_configure{ 'sp_config4db':
216+
config_name => 'contained database authentication',
217+
value => 1,
218+
reconfigure => true,
219+
instance => 'MSSQLSERVER',
220+
}
221+
sqlserver::database{ '#{@db_name}':
222+
containment => 'PARTIAL',
223+
default_fulltext_language => 'Japanese',
224+
require => Sqlserver::Sp_configure['sp_config4db']
225+
}
226+
sqlserver_tsql{'testsqlserver_tsql':
227+
instance => 'MSSQLSERVER',
228+
database => '#{@db_name}',
229+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
230+
require => Sqlserver::Database['#{@db_name}'],
231+
}
232+
MANIFEST
233+
ensure_sqlserver_database(host, pp)
234+
235+
puts "Validate that a table can be created in the database:"
236+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
237+
run_sql_query(host, run_sql_query_opts(query, 1))
238+
239+
puts "validate the Database '#{@db_name}' has correct default_fulltext_language_name setting:"
240+
query = "SELECT name AS Database_Name, default_fulltext_language_name
241+
FROM sys.databases
242+
WHERE name = '#{@db_name}'
243+
AND default_fulltext_language_name = 'Japanese';"
244+
245+
run_sql_query(host, run_sql_query_opts(query, 1))
246+
end
247+
248+
it "Test Case C89081: Create database with optional default_language" do
249+
pp = <<-MANIFEST
250+
sqlserver::config{'MSSQLSERVER':
251+
admin_user => 'sa',
252+
admin_pass => 'Pupp3t1@',
253+
}
254+
sqlserver::sp_configure{ 'sp_config4db':
255+
config_name => 'contained database authentication',
256+
value => 1,
257+
reconfigure => true,
258+
instance => 'MSSQLSERVER',
259+
}
260+
sqlserver::database{ '#{@db_name}':
261+
containment => 'PARTIAL',
262+
default_language => 'Traditional Chinese',
263+
require => Sqlserver::Sp_configure['sp_config4db']
264+
}
265+
sqlserver_tsql{'testsqlserver_tsql':
266+
instance => 'MSSQLSERVER',
267+
database => '#{@db_name}',
268+
command => "CREATE TABLE #{@table_name} (id INT, name VARCHAR(20), email VARCHAR(20));",
269+
require => Sqlserver::Database['#{@db_name}'],
270+
}
271+
MANIFEST
272+
ensure_sqlserver_database(host, pp)
273+
274+
puts "Validate that a table can be created in the database:"
275+
query = "USE #{@db_name}; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '#{@table_name}';"
276+
run_sql_query(host, run_sql_query_opts(query, 1))
277+
278+
puts "validate the Database '#{@db_name}' has correct default_language setting:"
279+
query = "SELECT name AS Database_Name, default_language_name
280+
FROM sys.databases
281+
WHERE name = '#{@db_name}'
282+
AND default_language_lcid = '1028';"
283+
284+
run_sql_query(host, run_sql_query_opts(query, 1))
285+
end
286+
end
287+
end

0 commit comments

Comments
 (0)