gratan 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3451238bb0c3d7aa0d0069c56329a421a7250bc0
4
- data.tar.gz: ccd1281b0e7207b22bd92fbaf8179d463b3f6df3
3
+ metadata.gz: 594f050aa91a09ebe859fee36bee875f22461540
4
+ data.tar.gz: 9fd38fa478da13932a4d5d07621e870d8a51f559
5
5
  SHA512:
6
- metadata.gz: 6c3a808d92306537c82650686ed9fe35bace9892ae1b43ef7774ba22dbfc11b56f78c8c6eec09d498d1f89ea9680354a2f6e554d0dec3d81a0d003636fe4623c
7
- data.tar.gz: 80b1e1816218d55a88680eb2627a028b2a21d782784e913875bd43adcd7bc0d65d092144fdcb094b1d7a700385ce3a8e61f39f6f7ee807fdd9275a68a0ec8636
6
+ metadata.gz: 0e924bbca853d1ba2d5c49523aa508f2cd02ba476e6484734eb1fee5f05b5b91db6442c91046b133f3d9aa80ac25a7045c2a118e46a869e639e877c87f41bbae
7
+ data.tar.gz: 0a490b3b1941baa49d2592e6d0acfb54f4a95dbb952f2922c922b123d0a1559855784ef678460533081ab3bf349deec757c6092249d7a72a6d2618f0e8cd8dcd
data/README.md CHANGED
@@ -80,7 +80,7 @@ user "scott", "%" do
80
80
  end
81
81
  end
82
82
 
83
- user "scott", "localhost", expired: '2014/10/10' do
83
+ user "scott", ["localhost", "192.168.%"], expired: '2014/10/10' do
84
84
  on "*.*", with: 'GRANT OPTION' do
85
85
  grant "ALL PRIVILEGES"
86
86
  end
@@ -89,4 +89,4 @@ end
89
89
 
90
90
  ## What does "Gratan" mean?
91
91
 
92
- [![](http://i.gyazo.com/c37d934ba0a61f760603ce4c56401e60.png)](https://www.google.co.jp/search?q=gratin&tbm=isch)
92
+ [![](http://i.gyazo.com/c37d934ba0a61f760603ce4c56401e60.png)](https://www.google.com/search?q=gratin&tbm=isch)
@@ -31,27 +31,30 @@ class Gratan::DSL::Context
31
31
  end
32
32
  end
33
33
 
34
- def user(name, host, options = {}, &block)
34
+ def user(name, host_or_array, options = {}, &block)
35
35
  name = name.to_s
36
- host = host.to_s
37
- options ||= {}
36
+ hosts = [host_or_array].flatten.map {|i| i.to_s }
38
37
 
39
- __validate("User `#{name}@#{host}` is already defined") do
40
- not @result.has_key?([name, host])
41
- end
38
+ hosts.each do |host|
39
+ options ||= {}
40
+
41
+ __validate("User `#{name}@#{host}` is already defined") do
42
+ not @result.has_key?([name, host])
43
+ end
42
44
 
43
- if @options[:enable_expired] and (expired = options.delete(:expired))
44
- expired = Time.parse(expired)
45
+ if @options[:enable_expired] and (expired = options.delete(:expired))
46
+ expired = Time.parse(expired)
45
47
 
46
- if Time.new >= expired
47
- log(:warn, "User `#{name}@#{host}` has expired", :color => :yellow)
48
- return
48
+ if Time.new >= expired
49
+ log(:warn, "User `#{name}@#{host}` has expired", :color => :yellow)
50
+ return
51
+ end
49
52
  end
50
- end
51
53
 
52
- @result[[name, host]] = {
53
- :objects => Gratan::DSL::Context::User.new(name, host, &block).result,
54
- :options => options,
55
- }
54
+ @result[[name, host]] = {
55
+ :objects => Gratan::DSL::Context::User.new(name, host, &block).result,
56
+ :options => options,
57
+ }
58
+ end
56
59
  end
57
60
  end
@@ -1,3 +1,3 @@
1
1
  module Gratan
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
@@ -0,0 +1,145 @@
1
+ describe 'Gratan::Client#apply' do
2
+ context 'when change privs (multi hosts)' do
3
+ before(:each) do
4
+ apply {
5
+ <<-RUBY
6
+ user 'scott', 'localhost', identified: 'tiger', required: 'SSL' do
7
+ on '*.*' do
8
+ grant 'SELECT'
9
+ grant 'INSERT'
10
+ end
11
+
12
+ on 'test.*' do
13
+ grant 'UPDATE'
14
+ grant 'DELETE'
15
+ end
16
+
17
+ on 'mysql.user' do
18
+ grant 'SELECT (user)'
19
+ end
20
+ end
21
+
22
+ user 'scott', '%', identified: 'tiger', required: 'SSL' do
23
+ on '*.*' do
24
+ grant 'SELECT'
25
+ grant 'INSERT'
26
+ end
27
+
28
+ on 'test.*' do
29
+ grant 'UPDATE'
30
+ grant 'DELETE'
31
+ end
32
+
33
+ on 'mysql.user' do
34
+ grant 'SELECT (user)'
35
+ end
36
+ end
37
+ RUBY
38
+ }
39
+ end
40
+
41
+ subject { client }
42
+
43
+ it do
44
+ apply(subject) {
45
+ <<-RUBY
46
+ user 'scott', ['localhost', '%', '127.0.0.1'], required: 'SSL' do
47
+ on '*.*' do
48
+ grant 'SELECT'
49
+ grant 'DELETE'
50
+ end
51
+
52
+ on 'test.*' do
53
+ grant 'UPDATE'
54
+ grant 'INSERT'
55
+ end
56
+ end
57
+ RUBY
58
+ }
59
+
60
+ expect(show_grants).to match_array [
61
+ "GRANT INSERT, UPDATE ON `test`.* TO 'scott'@'%'",
62
+ "GRANT INSERT, UPDATE ON `test`.* TO 'scott'@'127.0.0.1'",
63
+ "GRANT INSERT, UPDATE ON `test`.* TO 'scott'@'localhost'",
64
+ "GRANT SELECT, DELETE ON *.* TO 'scott'@'%' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40' REQUIRE SSL",
65
+ "GRANT SELECT, DELETE ON *.* TO 'scott'@'127.0.0.1' REQUIRE SSL",
66
+ "GRANT SELECT, DELETE ON *.* TO 'scott'@'localhost' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40' REQUIRE SSL",
67
+ ]
68
+ end
69
+ end
70
+
71
+ context 'when no change privs (multi hosts)' do
72
+ before(:each) do
73
+ apply {
74
+ <<-RUBY
75
+ user 'scott', 'localhost', identified: 'tiger', required: 'SSL' do
76
+ on '*.*' do
77
+ grant 'SELECT'
78
+ grant 'INSERT'
79
+ end
80
+
81
+ on 'test.*' do
82
+ grant 'UPDATE'
83
+ grant 'DELETE'
84
+ end
85
+
86
+ on 'mysql.user' do
87
+ grant 'SELECT (user)'
88
+ end
89
+ end
90
+
91
+ user 'scott', '%', identified: 'tiger', required: 'SSL' do
92
+ on '*.*' do
93
+ grant 'SELECT'
94
+ grant 'INSERT'
95
+ end
96
+
97
+ on 'test.*' do
98
+ grant 'UPDATE'
99
+ grant 'DELETE'
100
+ end
101
+
102
+ on 'mysql.user' do
103
+ grant 'SELECT (user)'
104
+ end
105
+ end
106
+ RUBY
107
+ }
108
+ end
109
+
110
+ subject { client }
111
+
112
+ it do
113
+ result = apply(subject) {
114
+ <<-RUBY
115
+ user 'scott', ['localhost', '%'], required: 'SSL' do
116
+ on '*.*' do
117
+ grant 'SELECT'
118
+ grant 'INSERT'
119
+ end
120
+
121
+ on 'test.*' do
122
+ grant 'UPDATE'
123
+ grant 'DELETE'
124
+ end
125
+
126
+ on 'mysql.user' do
127
+ grant 'SELECT (user)'
128
+ end
129
+ end
130
+ RUBY
131
+ }
132
+
133
+ expect(result).to be_falsey
134
+
135
+ expect(show_grants).to match_array [
136
+ "GRANT SELECT (user) ON `mysql`.`user` TO 'scott'@'%'",
137
+ "GRANT SELECT (user) ON `mysql`.`user` TO 'scott'@'localhost'",
138
+ "GRANT SELECT, INSERT ON *.* TO 'scott'@'%' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40' REQUIRE SSL",
139
+ "GRANT SELECT, INSERT ON *.* TO 'scott'@'localhost' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40' REQUIRE SSL",
140
+ "GRANT UPDATE, DELETE ON `test`.* TO 'scott'@'%'",
141
+ "GRANT UPDATE, DELETE ON `test`.* TO 'scott'@'localhost'",
142
+ ]
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,36 @@
1
+ describe 'Gratan::Client#apply' do
2
+ context 'when create user (multi hosts)' do
3
+ subject { client }
4
+
5
+ it do
6
+ apply(subject) {
7
+ <<-RUBY
8
+ user 'scott', ['localhost', '127.0.0.1', '192.168.%'], identified: 'tiger' do
9
+ on '*.*' do
10
+ grant 'SELECT'
11
+ grant 'INSERT'
12
+ grant 'UPDATE'
13
+ grant 'DELETE'
14
+ end
15
+
16
+ on 'test.*' do
17
+ grant 'SELECT'
18
+ grant 'INSERT'
19
+ grant 'UPDATE'
20
+ grant 'DELETE'
21
+ end
22
+ end
23
+ RUBY
24
+ }
25
+
26
+ expect(show_grants).to match_array [
27
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'scott'@'localhost' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40'",
28
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'scott'@'localhost'",
29
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'scott'@'127.0.0.1' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40'",
30
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'scott'@'127.0.0.1'",
31
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'scott'@'192.168.%' IDENTIFIED BY PASSWORD '*F2F68D0BB27A773C1D944270E5FAFED515A3FA40'",
32
+ "GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'scott'@'192.168.%'",
33
+ ]
34
+ end
35
+ end
36
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gratan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -146,10 +146,12 @@ files:
146
146
  - spec/change/change_grants_2_spec.rb
147
147
  - spec/change/change_grants_3_spec.rb
148
148
  - spec/change/change_grants_4_spec.rb
149
+ - spec/change/change_grants_multi_hosts_spec.rb
149
150
  - spec/change/change_grants_regexp_spec.rb
150
151
  - spec/change/change_grants_spec.rb
151
152
  - spec/create/create_user_2_spec.rb
152
153
  - spec/create/create_user_3_spec.rb
154
+ - spec/create/create_user_multi_hosts_spec.rb
153
155
  - spec/create/create_user_regexp_spec.rb
154
156
  - spec/create/create_user_spec.rb
155
157
  - spec/drop/drop_user_2_spec.rb
@@ -187,10 +189,12 @@ test_files:
187
189
  - spec/change/change_grants_2_spec.rb
188
190
  - spec/change/change_grants_3_spec.rb
189
191
  - spec/change/change_grants_4_spec.rb
192
+ - spec/change/change_grants_multi_hosts_spec.rb
190
193
  - spec/change/change_grants_regexp_spec.rb
191
194
  - spec/change/change_grants_spec.rb
192
195
  - spec/create/create_user_2_spec.rb
193
196
  - spec/create/create_user_3_spec.rb
197
+ - spec/create/create_user_multi_hosts_spec.rb
194
198
  - spec/create/create_user_regexp_spec.rb
195
199
  - spec/create/create_user_spec.rb
196
200
  - spec/drop/drop_user_2_spec.rb