masking 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +9 -4
  3. data/.github/workflows/acceptance_test_mariadb.yml +57 -1
  4. data/.github/workflows/acceptance_test_mysql.yml +1 -1
  5. data/.rubocop.yml +7 -1
  6. data/.rubocop_todo.yml +105 -0
  7. data/.ruby-version +1 -1
  8. data/CHANGELOG.md +10 -0
  9. data/Dockerfile +3 -1
  10. data/Gemfile +20 -0
  11. data/Gemfile.lock +67 -51
  12. data/README.md +18 -8
  13. data/acceptance/expected_query_result.txt +36 -30
  14. data/acceptance/import_dumpfile.sql +3 -1
  15. data/acceptance/masking.yml +2 -0
  16. data/acceptance/run_test.sh +1 -1
  17. data/docker-compose/mariadb1010.yml +17 -0
  18. data/docker-compose/mariadb1011.yml +17 -0
  19. data/docker-compose/mariadb105.yml +17 -0
  20. data/docker-compose/mariadb106.yml +17 -0
  21. data/docker-compose/mariadb107.yml +17 -0
  22. data/docker-compose/mariadb108.yml +17 -0
  23. data/docker-compose/mariadb109.yml +17 -0
  24. data/lib/masking/cli/error_message.rb +1 -1
  25. data/lib/masking/config/target_columns/column.rb +19 -5
  26. data/lib/masking/config/target_columns/method/string_binary_distinctor.rb +3 -3
  27. data/lib/masking/config/target_columns/method/type/base.rb +25 -0
  28. data/lib/masking/config/target_columns/method/type/binary.rb +19 -0
  29. data/lib/masking/config/target_columns/method/type/boolean.rb +27 -0
  30. data/lib/masking/config/target_columns/method/type/date.rb +28 -0
  31. data/lib/masking/config/target_columns/method/type/extension/ignore_null.rb +24 -0
  32. data/lib/masking/config/target_columns/method/type/float.rb +19 -0
  33. data/lib/masking/config/target_columns/method/type/integer.rb +19 -0
  34. data/lib/masking/config/target_columns/method/{null.rb → type/null.rb} +5 -5
  35. data/lib/masking/config/target_columns/method/type/string.rb +37 -0
  36. data/lib/masking/config/target_columns/method/type/time.rb +26 -0
  37. data/lib/masking/config/target_columns/method.rb +14 -10
  38. data/lib/masking/insert_statement/sql_builder.rb +2 -2
  39. data/lib/masking/insert_statement.rb +1 -1
  40. data/lib/masking/sql_dump_line.rb +1 -0
  41. data/lib/masking/version.rb +1 -1
  42. data/masking.gemspec +1 -18
  43. metadata +24 -181
  44. data/lib/masking/config/target_columns/method/binary.rb +0 -23
  45. data/lib/masking/config/target_columns/method/boolean.rb +0 -29
  46. data/lib/masking/config/target_columns/method/date.rb +0 -30
  47. data/lib/masking/config/target_columns/method/float.rb +0 -23
  48. data/lib/masking/config/target_columns/method/integer.rb +0 -23
  49. data/lib/masking/config/target_columns/method/string.rb +0 -33
  50. data/lib/masking/config/target_columns/method/time.rb +0 -28
metadata CHANGED
@@ -1,183 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: masking
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chikahiro Tokoro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-25 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake-notes
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: ruby-prof
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: mdl
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: codecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: pry
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: pry-byebug
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: tapp
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
11
+ date: 2023-04-03 00:00:00.000000000 Z
12
+ dependencies: []
181
13
  description: Command line tool for anonymizing database records by parsing a SQL dump
182
14
  file and build new SQL dump file with masking sensitive/credential data.
183
15
  email:
@@ -196,6 +28,7 @@ files:
196
28
  - ".gitignore"
197
29
  - ".mdlrc"
198
30
  - ".rubocop.yml"
31
+ - ".rubocop_todo.yml"
199
32
  - ".ruby-version"
200
33
  - CHANGELOG.md
201
34
  - CODE_OF_CONDUCT.md
@@ -223,9 +56,16 @@ files:
223
56
  - docker-compose/acceptance_test.sh
224
57
  - docker-compose/mariadb100.yml
225
58
  - docker-compose/mariadb101.yml
59
+ - docker-compose/mariadb1010.yml
60
+ - docker-compose/mariadb1011.yml
226
61
  - docker-compose/mariadb102.yml
227
62
  - docker-compose/mariadb103.yml
228
63
  - docker-compose/mariadb104.yml
64
+ - docker-compose/mariadb105.yml
65
+ - docker-compose/mariadb106.yml
66
+ - docker-compose/mariadb107.yml
67
+ - docker-compose/mariadb108.yml
68
+ - docker-compose/mariadb109.yml
229
69
  - docker-compose/mariadb55.yml
230
70
  - docker-compose/mysql55.yml
231
71
  - docker-compose/mysql56.yml
@@ -241,15 +81,17 @@ files:
241
81
  - lib/masking/config/target_columns.rb
242
82
  - lib/masking/config/target_columns/column.rb
243
83
  - lib/masking/config/target_columns/method.rb
244
- - lib/masking/config/target_columns/method/binary.rb
245
- - lib/masking/config/target_columns/method/boolean.rb
246
- - lib/masking/config/target_columns/method/date.rb
247
- - lib/masking/config/target_columns/method/float.rb
248
- - lib/masking/config/target_columns/method/integer.rb
249
- - lib/masking/config/target_columns/method/null.rb
250
- - lib/masking/config/target_columns/method/string.rb
251
84
  - lib/masking/config/target_columns/method/string_binary_distinctor.rb
252
- - lib/masking/config/target_columns/method/time.rb
85
+ - lib/masking/config/target_columns/method/type/base.rb
86
+ - lib/masking/config/target_columns/method/type/binary.rb
87
+ - lib/masking/config/target_columns/method/type/boolean.rb
88
+ - lib/masking/config/target_columns/method/type/date.rb
89
+ - lib/masking/config/target_columns/method/type/extension/ignore_null.rb
90
+ - lib/masking/config/target_columns/method/type/float.rb
91
+ - lib/masking/config/target_columns/method/type/integer.rb
92
+ - lib/masking/config/target_columns/method/type/null.rb
93
+ - lib/masking/config/target_columns/method/type/string.rb
94
+ - lib/masking/config/target_columns/method/type/time.rb
253
95
  - lib/masking/config/target_columns/table.rb
254
96
  - lib/masking/data_mask_processor.rb
255
97
  - lib/masking/data_mask_processor/cache.rb
@@ -265,7 +107,8 @@ files:
265
107
  homepage: https://github.com/kibitan/masking
266
108
  licenses:
267
109
  - MIT
268
- metadata: {}
110
+ metadata:
111
+ rubygems_mfa_required: 'true'
269
112
  post_install_message:
270
113
  rdoc_options: []
271
114
  require_paths:
@@ -281,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
124
  - !ruby/object:Gem::Version
282
125
  version: '0'
283
126
  requirements: []
284
- rubygems_version: 3.3.26
127
+ rubygems_version: 3.4.6
285
128
  signing_key:
286
129
  specification_version: 4
287
130
  summary: Command line tool for anonymizing databese records
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class Binary
8
- def initialize(value)
9
- @binary = value
10
- end
11
-
12
- def call
13
- "_binary '#{binary}'".b
14
- end
15
-
16
- private
17
-
18
- attr_reader :binary
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class Boolean
8
- def initialize(value)
9
- @boolean = value
10
- end
11
-
12
- def call
13
- boolean_format.to_s
14
- end
15
-
16
- private
17
-
18
- attr_reader :boolean
19
-
20
- # NOTE: 11.1.1 Numeric Type Overview, chapter BOOL, BOOLEAN
21
- # https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html
22
- def boolean_format
23
- boolean ? 1 : 0
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'date'
4
-
5
- module Masking
6
- class Config
7
- class TargetColumns
8
- class Method
9
- class Date
10
- def initialize(value)
11
- @date = value.strftime(FORMAT)
12
- end
13
-
14
- def call
15
- "'#{date_format}'"
16
- end
17
-
18
- private
19
-
20
- attr_reader :date
21
- FORMAT = '%Y-%m-%d'
22
-
23
- def date_format
24
- date
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class Float
8
- def initialize(value)
9
- @float = value.to_s
10
- end
11
-
12
- def call
13
- float
14
- end
15
-
16
- private
17
-
18
- attr_reader :float
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class Integer
8
- def initialize(value)
9
- @integer = value.to_s
10
- end
11
-
12
- def call
13
- integer
14
- end
15
-
16
- private
17
-
18
- attr_reader :integer
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class String
8
- def initialize(value)
9
- @string = value
10
- @sequence = 0
11
- end
12
-
13
- def call
14
- ("'" + output + "'").b
15
- end
16
-
17
- private
18
-
19
- SEQUENTIAL_NUMBER_PLACEHOLDER = '%{n}' # rubocop:disable Style/FormatStringToken
20
- attr_reader :string
21
-
22
- def output
23
- string.sub(SEQUENTIAL_NUMBER_PLACEHOLDER, sequence.to_s)
24
- end
25
-
26
- def sequence
27
- @sequence += 1
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Masking
4
- class Config
5
- class TargetColumns
6
- class Method
7
- class Time
8
- def initialize(value)
9
- @time = value.strftime(FORMAT)
10
- end
11
-
12
- def call
13
- "'#{time_format}'"
14
- end
15
-
16
- private
17
-
18
- attr_reader :time
19
- FORMAT = '%Y-%m-%d %H:%M:%S'
20
-
21
- def time_format
22
- time
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end