|
6 | 6 | context 'validation errors' do
|
7 | 7 | include_context 'manifests' do
|
8 | 8 | let(:title) { 'myTitle' }
|
9 |
| - let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-SELECT' } |
| 9 | + let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-GRANT' } |
10 | 10 | end
|
11 | 11 | context 'login =>' do
|
12 | 12 | let(:params) { {
|
13 |
| - :permission => 'SELECT', |
| 13 | + :permissions=> ['SELECT'], |
14 | 14 | } }
|
15 | 15 | let(:raise_error_check) { 'Login must be between 1 and 128 characters' }
|
16 | 16 | describe 'missing' do
|
|
32 | 32 | } }
|
33 | 33 | let(:raise_error_check) { 'Permission must be between 4 and 128 characters' }
|
34 | 34 | describe 'empty' do
|
35 |
| - let(:additional_params) { {:permission => ''} } |
| 35 | + let(:additional_params) { {:permissions=> ['']} } |
36 | 36 | it_behaves_like 'validation error'
|
37 | 37 | end
|
38 | 38 | describe 'under limit' do
|
39 |
| - let(:additional_params) { {:permission => random_string_of_size(3, false)} } |
| 39 | + let(:additional_params) { {:permissions=> [random_string_of_size(3, false)]} } |
40 | 40 | it_behaves_like 'validation error'
|
41 | 41 | end
|
42 | 42 | describe 'over limit' do
|
43 |
| - let(:additional_params) { {:permission => random_string_of_size(129, false)} } |
| 43 | + let(:additional_params) { {:permissions=> [random_string_of_size(129, false)]} } |
44 | 44 | it_behaves_like 'validation error'
|
45 | 45 | end
|
46 | 46 | end
|
47 | 47 | context 'state =>' do
|
48 | 48 | let(:params) { {
|
49 |
| - :permission => 'SELECT', |
| 49 | + :permissions=> ['SELECT'], |
50 | 50 | :login => 'loggingUser'
|
51 | 51 | } }
|
52 | 52 | describe 'invalid' do
|
|
59 | 59 | context 'successfully' do
|
60 | 60 | include_context 'manifests' do
|
61 | 61 | let(:title) { 'myTitle' }
|
62 |
| - let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-SELECT' } |
| 62 | + let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-GRANT' } |
63 | 63 | let(:params) { {
|
64 | 64 | :login => 'loggingUser',
|
65 |
| - :permission => 'SELECT', |
| 65 | + :permissions=> ['SELECT'], |
66 | 66 | } }
|
67 | 67 | end
|
68 | 68 | %w(revoke grant deny).each do |state|
|
69 | 69 | context "state => '#{state}'" do
|
70 |
| - let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-SELECT" } |
| 70 | + let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-#{state.upcase}" } |
71 | 71 | let(:should_contain_command) { ["#{state.upcase} SELECT TO [loggingUser];", 'USE [master];'] }
|
72 | 72 | describe "lowercase #{state}" do
|
73 | 73 | let(:additional_params) { {:state => state} }
|
|
84 | 84 | context 'permission' do
|
85 | 85 | describe 'upper limit' do
|
86 | 86 | permission =random_string_of_size(128, false)
|
87 |
| - let(:additional_params) { {:permission => permission} } |
88 |
| - let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-#{permission.upcase}" } |
| 87 | + let(:additional_params) { {:permissions => [permission]} } |
| 88 | + let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-GRANT" } |
89 | 89 | let(:should_contain_command) { ['USE [master];'] }
|
90 | 90 | it_behaves_like 'sqlserver_tsql command'
|
91 | 91 | end
|
92 | 92 | describe 'alter' do
|
93 |
| - let(:additional_params) { {:permission => 'ALTER'} } |
| 93 | + let(:additional_params) { {:permissions=> ['ALTER']} } |
94 | 94 | let(:should_contain_command) { ['USE [master];', 'GRANT ALTER TO [loggingUser];'] }
|
95 |
| - let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-ALTER" } |
| 95 | + let(:sqlserver_tsql_title) { "login-permission-MSSQLSERVER-loggingUser-GRANT" } |
96 | 96 | it_behaves_like 'sqlserver_tsql command'
|
97 | 97 | end
|
98 | 98 | end
|
|
111 | 111 | context 'command syntax' do
|
112 | 112 | include_context 'manifests' do
|
113 | 113 | let(:title) { 'myTitle' }
|
114 |
| - let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-SELECT' } |
| 114 | + let(:sqlserver_tsql_title) { 'login-permission-MSSQLSERVER-loggingUser-GRANT' } |
115 | 115 | let(:params) { {
|
116 | 116 | :login => 'loggingUser',
|
117 |
| - :permission => 'SELECT', |
| 117 | + :permissions => ['SELECT'], |
118 | 118 | } }
|
119 | 119 | describe '' do
|
120 | 120 | let(:should_contain_command) { [
|
|
123 | 123 | /DECLARE @perm_state varchar\(250\)/,
|
124 | 124 | /SET @perm_state = ISNULL\(\n\s+\(SELECT perm.state_desc FROM sys\.server_permissions perm\n\s+JOIN sys\./,
|
125 | 125 | /JOIN sys\.server_principals princ ON princ.principal_id = perm\.grantee_principal_id\n\s+WHERE/,
|
126 |
| - /WHERE princ\.type IN \('U','S','G'\)\n\s+ AND princ\.name = 'loggingUser'\n\s+AND perm\.permission_name = 'SELECT'\),\n\s+'REVOKE'\)/, |
127 |
| - /DECLARE @error_msg varchar\(250\);\nSET @error_msg = 'EXPECTED login \[loggingUser\] to have permission \[SELECT\] with GRANT but got ' \+ @perm_state;/, |
| 126 | + /WHERE princ\.type IN \('U','S','G'\)\n\s+ AND princ\.name = 'loggingUser'\n\s+AND perm\.permission_name = @permission\),\n\s+'REVOKE'\)/, |
| 127 | + /SET @error_msg = 'EXPECTED login \[loggingUser\] to have permission \[' \+ @permission \+ '\] with GRANT but got ' \+ @perm_state;/, |
128 | 128 | /IF @perm_state != 'GRANT'\n\s+THROW 51000, @error_msg, 10/
|
129 | 129 | ] }
|
130 | 130 | it_behaves_like 'sqlserver_tsql command'
|
|
0 commit comments