data-anonymization 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/.gitignore +2 -1
  2. data/.rvmrc +1 -1
  3. data/.travis.yml +2 -0
  4. data/Gemfile +2 -0
  5. data/README.md +295 -258
  6. data/bin/datanon +57 -0
  7. data/data-anonymization.gemspec +2 -1
  8. data/examples/blacklist_dsl.rb +42 -0
  9. data/examples/mongodb_blacklist_dsl.rb +38 -0
  10. data/examples/mongodb_whitelist_dsl.rb +44 -0
  11. data/examples/whitelist_dsl.rb +63 -0
  12. data/lib/core/database.rb +21 -3
  13. data/lib/core/field.rb +5 -2
  14. data/lib/core/fields_missing_strategy.rb +30 -0
  15. data/lib/core/table_errors.rb +32 -0
  16. data/lib/data-anonymization.rb +11 -0
  17. data/lib/parallel/table.rb +8 -1
  18. data/lib/strategy/base.rb +35 -14
  19. data/lib/strategy/blacklist.rb +1 -1
  20. data/lib/strategy/field/anonymize_array.rb +28 -0
  21. data/lib/strategy/field/contact/random_address.rb +12 -0
  22. data/lib/strategy/field/contact/random_city.rb +12 -0
  23. data/lib/strategy/field/contact/random_phone_number.rb +4 -0
  24. data/lib/strategy/field/contact/random_province.rb +12 -0
  25. data/lib/strategy/field/contact/random_zipcode.rb +12 -0
  26. data/lib/strategy/field/datetime/anonymize_date.rb +15 -0
  27. data/lib/strategy/field/datetime/anonymize_datetime.rb +19 -0
  28. data/lib/strategy/field/datetime/anonymize_time.rb +19 -0
  29. data/lib/strategy/field/datetime/date_delta.rb +10 -0
  30. data/lib/strategy/field/datetime/date_time_delta.rb +9 -0
  31. data/lib/strategy/field/datetime/time_delta.rb +8 -0
  32. data/lib/strategy/field/default_anon.rb +4 -1
  33. data/lib/strategy/field/email/gmail_template.rb +8 -0
  34. data/lib/strategy/field/email/random_email.rb +7 -0
  35. data/lib/strategy/field/email/random_mailinator_email.rb +5 -0
  36. data/lib/strategy/field/fields.rb +4 -0
  37. data/lib/strategy/field/name/random_first_name.rb +10 -0
  38. data/lib/strategy/field/name/random_full_name.rb +10 -2
  39. data/lib/strategy/field/name/random_last_name.rb +9 -0
  40. data/lib/strategy/field/name/random_user_name.rb +5 -0
  41. data/lib/strategy/field/number/random_big_decimal_delta.rb +6 -0
  42. data/lib/strategy/field/number/random_float.rb +4 -0
  43. data/lib/strategy/field/number/random_float_delta.rb +6 -0
  44. data/lib/strategy/field/number/random_integer.rb +4 -0
  45. data/lib/strategy/field/number/random_integer_delta.rb +6 -0
  46. data/lib/strategy/field/string/formatted_string_numbers.rb +10 -6
  47. data/lib/strategy/field/string/lorem_ipsum.rb +9 -0
  48. data/lib/strategy/field/string/random_formatted_string.rb +39 -0
  49. data/lib/strategy/field/string/random_string.rb +6 -0
  50. data/lib/strategy/field/string/random_url.rb +7 -1
  51. data/lib/strategy/field/string/select_from_database.rb +7 -5
  52. data/lib/strategy/field/string/select_from_file.rb +7 -0
  53. data/lib/strategy/field/string/select_from_list.rb +8 -0
  54. data/lib/strategy/field/string/string_template.rb +11 -0
  55. data/lib/strategy/mongodb/anonymize_field.rb +44 -0
  56. data/lib/strategy/mongodb/blacklist.rb +29 -0
  57. data/lib/strategy/mongodb/whitelist.rb +62 -0
  58. data/lib/strategy/strategies.rb +10 -1
  59. data/lib/strategy/whitelist.rb +7 -2
  60. data/lib/thor/helpers/mongodb_dsl_generator.rb +66 -0
  61. data/lib/thor/helpers/rdbms_dsl_generator.rb +36 -0
  62. data/lib/thor/templates/mongodb_whitelist_template.erb +15 -0
  63. data/lib/thor/templates/whitelist_template.erb +21 -0
  64. data/lib/utils/database.rb +4 -0
  65. data/lib/utils/parallel_progress_bar.rb +24 -0
  66. data/lib/utils/progress_bar.rb +34 -22
  67. data/lib/utils/random_string.rb +3 -2
  68. data/lib/utils/random_string_chars_only.rb +3 -5
  69. data/lib/utils/template_helper.rb +44 -0
  70. data/lib/version.rb +1 -1
  71. data/spec/acceptance/mongodb_blacklist_spec.rb +75 -0
  72. data/spec/acceptance/mongodb_whitelist_spec.rb +107 -0
  73. data/spec/core/fields_missing_strategy_spec.rb +26 -0
  74. data/spec/strategy/field/name/random_first_name_spec.rb +1 -1
  75. data/spec/strategy/field/name/random_full_name_spec.rb +12 -7
  76. data/spec/strategy/field/name/random_last_name_spec.rb +1 -1
  77. data/spec/strategy/field/string/random_formatted_string_spec.rb +39 -0
  78. data/spec/strategy/field/string/select_from_file_spec.rb +21 -0
  79. data/spec/strategy/mongodb/anonymize_field_spec.rb +52 -0
  80. data/spec/utils/random_float_spec.rb +12 -0
  81. data/spec/utils/random_string_char_only_spec.rb +12 -0
  82. data/spec/utils/template_helper_spec.rb +14 -0
  83. metadata +56 -6
  84. data/blacklist_dsl.rb +0 -17
  85. data/blacklist_nosql_dsl.rb +0 -36
  86. data/whitelist_dsl.rb +0 -42
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+
3
+ describe DataAnon::Core::FieldsMissingStrategy do
4
+
5
+ FMS = DataAnon::Core::FieldsMissingStrategy
6
+
7
+ it "should be able to add field for new table that doesn't exist" do
8
+ users = FMS.new("users")
9
+ users.missing("confirm_email")
10
+ users.fields_missing_strategy.should == ["confirm_email"]
11
+ end
12
+
13
+ it "should be able to take care for same field appearing multiple time" do
14
+ users = FMS.new("users")
15
+ users.missing("confirm_email")
16
+ users.missing("confirm_email")
17
+ users.fields_missing_strategy.should == ["confirm_email"]
18
+ end
19
+
20
+ it "should be able to add multiple fields for table" do
21
+ users = FMS.new("users")
22
+ users.missing("confirm_email")
23
+ users.missing("password_reset")
24
+ users.fields_missing_strategy.should == ["confirm_email","password_reset"]
25
+ end
26
+ end
@@ -6,7 +6,7 @@ describe FieldStrategy::RandomFirstName do
6
6
  let(:field) {DataAnon::Core::Field.new('firstname','fakeFirstName',1,nil)}
7
7
 
8
8
  describe 'anonymized name must not be the same as provided name' do
9
- let(:anonymized_value) {RandomFirstName.new().anonymize(field.value)}
9
+ let(:anonymized_value) {RandomFirstName.new().anonymize(field)}
10
10
 
11
11
  it {anonymized_value.should_not equal field.value}
12
12
  end
@@ -3,21 +3,26 @@ require "spec_helper"
3
3
  describe FieldStrategy::RandomFullName do
4
4
 
5
5
  RandomFullName = FieldStrategy::RandomFullName
6
- let(:field) {DataAnon::Core::Field.new('name','Fake User',1,nil)}
7
6
 
8
- describe 'anonymized name should be the same as original' do
7
+ describe 'anonymized name with just single name' do
8
+ let(:field) {DataAnon::Core::Field.new('name','Fake',1,nil)}
9
+ let(:anonymized_value) {RandomFullName.new().anonymize(field)}
9
10
 
10
- let(:anonymized_name) {RandomFullName.new().anonymize(field)}
11
+ it {anonymized_value.should_not equal field.value}
12
+ end
11
13
 
12
- it {anonymized_name.should_not equal field.value}
14
+ describe 'anonymized name should be the same as original' do
15
+ let(:field) {DataAnon::Core::Field.new('name','Fake User',1,nil)}
16
+ let(:anonymized_value) {RandomFullName.new().anonymize(field)}
17
+
18
+ it {anonymized_value.should_not equal field.value}
13
19
  end
14
20
 
15
21
  describe 'anonymized name should have same number of words as original' do
16
-
17
22
  let(:field) {DataAnon::Core::Field.new('name','Fake User Longer Name Test',1,nil)}
18
- let(:anonymized_name) {RandomFullName.new().anonymize(field)}
23
+ let(:anonymized_value) {RandomFullName.new().anonymize(field)}
19
24
 
20
- it {anonymized_name.split(' ').size.should equal field.value.split(' ').size}
25
+ it {anonymized_value.split(' ').size.should equal 5}
21
26
  end
22
27
 
23
28
  end
@@ -6,7 +6,7 @@ describe FieldStrategy::RandomLastName do
6
6
  let(:field) {DataAnon::Core::Field.new('lastname','fakeLastName',1,nil)}
7
7
 
8
8
  describe 'anonymized name must not be the same as provided name' do
9
- let(:anonymized_value) {RandomLastName.new().anonymize(field.value)}
9
+ let(:anonymized_value) {RandomLastName.new().anonymize(field)}
10
10
 
11
11
  it {anonymized_value.should_not equal field.value}
12
12
  end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe FieldStrategy::RandomFormattedString do
4
+
5
+ RandomFormattedString = FieldStrategy::RandomFormattedString
6
+
7
+ describe 'anonymized credit card number preserving the format' do
8
+ let(:field) {DataAnon::Core::Field.new('credit_card_number',"1111-2222-3333-4444",1,nil)}
9
+ let(:anonymized_value) {RandomFormattedString.new.anonymize(field)}
10
+
11
+ it {anonymized_value.should_not equal field.value}
12
+ it { anonymized_value.should match /^\d{4}-\d{4}-\d{4}-\d{4}$/}
13
+ end
14
+
15
+ describe 'anonymized email preserving the format' do
16
+ let(:field) {DataAnon::Core::Field.new('email',"parekh1.sunit@gmail.com",1,nil)}
17
+ let(:anonymized_value) {RandomFormattedString.new.anonymize(field)}
18
+
19
+ it {anonymized_value.should_not equal field.value}
20
+ it { anonymized_value.should match /^[a-z]{6}\d\.[a-z]{5}@[a-z]{5}\.[a-z]{3}$/}
21
+ end
22
+
23
+ describe 'anonymized string preserving the string case & format' do
24
+ let(:field) {DataAnon::Core::Field.new('email',"parekh1.SUNIT@gmail.com",1,nil)}
25
+ let(:anonymized_value) {RandomFormattedString.new.anonymize(field)}
26
+
27
+ it {anonymized_value.should_not equal field.value}
28
+ it { anonymized_value.should match /^[a-z]{6}\d\.[A-Z]{5}@[a-z]{5}\.[a-z]{3}$/}
29
+ end
30
+
31
+ describe 'anonymized phone# preserving the format' do
32
+ let(:field) {DataAnon::Core::Field.new('home_phone',"(020)3423-8013",1,nil)}
33
+ let(:anonymized_value) {RandomFormattedString.new.anonymize(field)}
34
+
35
+ it {anonymized_value.should_not equal field.value}
36
+ it { anonymized_value.should match /^\(\d{3}\)\d{4}-\d{4}$/}
37
+ end
38
+
39
+ end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe FieldStrategy::SelectFromFile do
4
+
5
+ SelectFromFile = FieldStrategy::SelectFromFile
6
+
7
+ describe 'anonymized name must not be the same as provided name' do
8
+ let(:field) {DataAnon::Core::Field.new('firstname','fakeFirstName',1,nil)}
9
+ let(:anonymized_value) {SelectFromFile.new(DataAnon::Utils::Resource.file('first_names.txt')).anonymize(field)}
10
+
11
+ it {anonymized_value.should_not equal field.value}
12
+ end
13
+
14
+ describe 'anonymized multiple values' do
15
+ let(:field) {DataAnon::Core::Field.new('firstname',['value1','value2'],1,nil)}
16
+ let(:anonymized_values) {SelectFromFile.new(DataAnon::Utils::Resource.file('first_names.txt')).anonymize(field)}
17
+
18
+ it {anonymized_values.length.should equal 2}
19
+ end
20
+
21
+ end
@@ -0,0 +1,52 @@
1
+ require "spec_helper"
2
+
3
+ describe DataAnon::Strategy::MongoDB::AnonymizeField do
4
+
5
+
6
+ it 'should do callback recursive in case of sub document' do
7
+ sub_document = {'key' => 'value'}
8
+ field_strategy = {'key' => FieldStrategy::LoremIpsum.new}
9
+ anonymization_strategy = mock("AnonymizationStrategy")
10
+ anonymization_strategy.should_receive(:anonymize_document).with(sub_document,1,field_strategy).and_return({'key' => "anonymized_value"})
11
+ field = DataAnon::Core::Field.new('sub_document_field', sub_document,1,nil)
12
+ anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field, field_strategy,anonymization_strategy)
13
+ anonymized_value = anonymize_field.anonymize
14
+ anonymized_value['key'].should == "anonymized_value"
15
+ end
16
+
17
+ it 'should do callback recursive multiple time in case of array of sub document' do
18
+ sub_documents = [{'key' => 'value1'},{'key' => 'value2'}]
19
+ field_strategy = {'key' => FieldStrategy::LoremIpsum.new}
20
+ anonymization_strategy = mock("AnonymizationStrategy")
21
+ anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value1'},1,field_strategy).and_return({'key' => "anonymized_value1"})
22
+ anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value2'},1,field_strategy).and_return({'key' => "anonymized_value2"})
23
+ field = DataAnon::Core::Field.new('sub_document_field', sub_documents,1,nil)
24
+ anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field, field_strategy,anonymization_strategy)
25
+ anonymized_value = anonymize_field.anonymize
26
+ anonymized_value.length.should == 2
27
+ anonymized_value[0]['key'].should == "anonymized_value1"
28
+ anonymized_value[1]['key'].should == "anonymized_value2"
29
+ end
30
+
31
+ it 'should anonymize array field data type' do
32
+ anonymization_strategy = mock("AnonymizationStrategy")
33
+ anonymization_strategy.should_not_receive(:anonymize_document)
34
+ field = DataAnon::Core::Field.new('tags',['tag1','tag2'],1,nil)
35
+ anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field,FieldStrategy::SelectFromList.new(['tag4','tag5','tag6','tag7','tag8']),anonymization_strategy)
36
+ anonymized_value = anonymize_field.anonymize
37
+ anonymized_value.length == 2
38
+ ['tag4','tag5','tag6','tag7','tag8'].should include(anonymized_value[0])
39
+ ['tag4','tag5','tag6','tag7','tag8'].should include(anonymized_value[1])
40
+ end
41
+
42
+ it 'should anonymize field and return anonymized value using passed strategy' do
43
+ anonymization_strategy = mock("AnonymizationStrategy")
44
+ anonymization_strategy.should_not_receive(:anonymize_document)
45
+ field = DataAnon::Core::Field.new('boolean_field',false,1,nil)
46
+ anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field,FieldStrategy::RandomBoolean.new,anonymization_strategy)
47
+ anonymized_value = anonymize_field.anonymize
48
+ [true, false].should include(anonymized_value)
49
+ end
50
+
51
+
52
+ end
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+
3
+ describe "Number Utils" do
4
+
5
+ describe 'should return same length value using default text' do
6
+
7
+ let(:random_float) { DataAnon::Utils::RandomFloat.generate(5,10) }
8
+
9
+ it { random_float.should be_between(5,10) }
10
+ it { random_float.should be_a_kind_of Float }
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+
3
+ describe "String Utils" do
4
+
5
+ it "should generate random string of given length" do
6
+ DataAnon::Utils::RandomStringCharsOnly.generate(10).length.should equal 10
7
+ end
8
+
9
+ it "should generate random string only with characters" do
10
+ DataAnon::Utils::RandomStringCharsOnly.generate(10).should match /^[a-zA-Z]{10}$/
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe "Template Helper" do
4
+
5
+ it "should return a correctly formatted string based on input connection hash for source" do
6
+ connection_hash = {:adapter => "test_adapter", :port => 5000}
7
+ DataAnon::Utils::TemplateHelper.source_connection_specs_rdbms(connection_hash).should eq(":adapter => 'test_adapter', :port => 5000")
8
+ end
9
+
10
+ it "should return a correctly formatted string based on input connection hash for destination" do
11
+ connection_hash = {:adapter => "test_adapter", :port => 5000}
12
+ DataAnon::Utils::TemplateHelper.destination_connection_specs_rdbms(connection_hash).should eq(":adapter => '<enter_value>', :port => '<enter_value>'")
13
+ end
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data-anonymization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-09-04 00:00:00.000000000 Z
14
+ date: 2012-09-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
@@ -125,12 +125,29 @@ dependencies:
125
125
  - - ~>
126
126
  - !ruby/object:Gem::Version
127
127
  version: 0.5.18
128
+ - !ruby/object:Gem::Dependency
129
+ name: thor
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ~>
134
+ - !ruby/object:Gem::Version
135
+ version: 0.16.0
136
+ type: :runtime
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ~>
142
+ - !ruby/object:Gem::Version
143
+ version: 0.16.0
128
144
  description: Data anonymization tool for RDBMS databases
129
145
  email:
130
146
  - parekh.sunit@gmail.com
131
147
  - anand.agrawal84@gmail.com
132
148
  - satyamag@gmail.com
133
- executables: []
149
+ executables:
150
+ - datanon
134
151
  extensions: []
135
152
  extra_rdoc_files: []
136
153
  files:
@@ -143,16 +160,22 @@ files:
143
160
  - LICENSE.txt
144
161
  - README.md
145
162
  - Rakefile
146
- - blacklist_dsl.rb
147
- - blacklist_nosql_dsl.rb
163
+ - bin/datanon
148
164
  - data-anonymization.gemspec
165
+ - examples/blacklist_dsl.rb
166
+ - examples/mongodb_blacklist_dsl.rb
167
+ - examples/mongodb_whitelist_dsl.rb
168
+ - examples/whitelist_dsl.rb
149
169
  - lib/core/database.rb
150
170
  - lib/core/dsl.rb
151
171
  - lib/core/field.rb
172
+ - lib/core/fields_missing_strategy.rb
173
+ - lib/core/table_errors.rb
152
174
  - lib/data-anonymization.rb
153
175
  - lib/parallel/table.rb
154
176
  - lib/strategy/base.rb
155
177
  - lib/strategy/blacklist.rb
178
+ - lib/strategy/field/anonymize_array.rb
156
179
  - lib/strategy/field/anonymous.rb
157
180
  - lib/strategy/field/contact/geojson_base.rb
158
181
  - lib/strategy/field/contact/random_address.rb
@@ -183,6 +206,7 @@ files:
183
206
  - lib/strategy/field/random_boolean.rb
184
207
  - lib/strategy/field/string/formatted_string_numbers.rb
185
208
  - lib/strategy/field/string/lorem_ipsum.rb
209
+ - lib/strategy/field/string/random_formatted_string.rb
186
210
  - lib/strategy/field/string/random_string.rb
187
211
  - lib/strategy/field/string/random_url.rb
188
212
  - lib/strategy/field/string/select_from_database.rb
@@ -190,25 +214,37 @@ files:
190
214
  - lib/strategy/field/string/select_from_list.rb
191
215
  - lib/strategy/field/string/string_template.rb
192
216
  - lib/strategy/field/whitelist.rb
217
+ - lib/strategy/mongodb/anonymize_field.rb
218
+ - lib/strategy/mongodb/blacklist.rb
219
+ - lib/strategy/mongodb/whitelist.rb
193
220
  - lib/strategy/strategies.rb
194
221
  - lib/strategy/whitelist.rb
195
222
  - lib/tasks/rake_tasks.rb
223
+ - lib/thor/helpers/mongodb_dsl_generator.rb
224
+ - lib/thor/helpers/rdbms_dsl_generator.rb
225
+ - lib/thor/templates/mongodb_whitelist_template.erb
226
+ - lib/thor/templates/whitelist_template.erb
196
227
  - lib/utils/database.rb
197
228
  - lib/utils/geojson_parser.rb
198
229
  - lib/utils/logging.rb
230
+ - lib/utils/parallel_progress_bar.rb
199
231
  - lib/utils/progress_bar.rb
200
232
  - lib/utils/random_float.rb
201
233
  - lib/utils/random_int.rb
202
234
  - lib/utils/random_string.rb
203
235
  - lib/utils/random_string_chars_only.rb
204
236
  - lib/utils/resource.rb
237
+ - lib/utils/template_helper.rb
205
238
  - lib/version.rb
206
239
  - resources/UK_addresses.geojson
207
240
  - resources/US_addresses.geojson
208
241
  - resources/first_names.txt
209
242
  - resources/last_names.txt
243
+ - spec/acceptance/mongodb_blacklist_spec.rb
244
+ - spec/acceptance/mongodb_whitelist_spec.rb
210
245
  - spec/acceptance/rdbms_blacklist_spec.rb
211
246
  - spec/acceptance/rdbms_whitelist_spec.rb
247
+ - spec/core/fields_missing_strategy_spec.rb
212
248
  - spec/resource/sample.geojson
213
249
  - spec/spec_helper.rb
214
250
  - spec/strategy/field/contact/random_address_spec.rb
@@ -238,18 +274,23 @@ files:
238
274
  - spec/strategy/field/random_boolean_spec.rb
239
275
  - spec/strategy/field/string/formatted_string_numbers_spec.rb
240
276
  - spec/strategy/field/string/lorem_ipsum_spec.rb
277
+ - spec/strategy/field/string/random_formatted_string_spec.rb
241
278
  - spec/strategy/field/string/random_string_spec.rb
242
279
  - spec/strategy/field/string/random_url_spec.rb
243
280
  - spec/strategy/field/string/select_from_database_spec.rb
281
+ - spec/strategy/field/string/select_from_file_spec.rb
244
282
  - spec/strategy/field/string/select_from_list_spec.rb
245
283
  - spec/strategy/field/string/string_template_spec.rb
246
284
  - spec/strategy/field/whitelist_spec.rb
285
+ - spec/strategy/mongodb/anonymize_field_spec.rb
247
286
  - spec/support/customer_sample.rb
248
287
  - spec/utils/database_spec.rb
249
288
  - spec/utils/geojson_parser_spec.rb
289
+ - spec/utils/random_float_spec.rb
250
290
  - spec/utils/random_int_spec.rb
291
+ - spec/utils/random_string_char_only_spec.rb
251
292
  - spec/utils/random_string_spec.rb
252
- - whitelist_dsl.rb
293
+ - spec/utils/template_helper_spec.rb
253
294
  homepage: http://sunitparekh.github.com/data-anonymization
254
295
  licenses: []
255
296
  post_install_message:
@@ -276,8 +317,11 @@ specification_version: 3
276
317
  summary: Tool to create anonymized production data dump to use for PREF and other
277
318
  TEST environments.
278
319
  test_files:
320
+ - spec/acceptance/mongodb_blacklist_spec.rb
321
+ - spec/acceptance/mongodb_whitelist_spec.rb
279
322
  - spec/acceptance/rdbms_blacklist_spec.rb
280
323
  - spec/acceptance/rdbms_whitelist_spec.rb
324
+ - spec/core/fields_missing_strategy_spec.rb
281
325
  - spec/resource/sample.geojson
282
326
  - spec/spec_helper.rb
283
327
  - spec/strategy/field/contact/random_address_spec.rb
@@ -307,14 +351,20 @@ test_files:
307
351
  - spec/strategy/field/random_boolean_spec.rb
308
352
  - spec/strategy/field/string/formatted_string_numbers_spec.rb
309
353
  - spec/strategy/field/string/lorem_ipsum_spec.rb
354
+ - spec/strategy/field/string/random_formatted_string_spec.rb
310
355
  - spec/strategy/field/string/random_string_spec.rb
311
356
  - spec/strategy/field/string/random_url_spec.rb
312
357
  - spec/strategy/field/string/select_from_database_spec.rb
358
+ - spec/strategy/field/string/select_from_file_spec.rb
313
359
  - spec/strategy/field/string/select_from_list_spec.rb
314
360
  - spec/strategy/field/string/string_template_spec.rb
315
361
  - spec/strategy/field/whitelist_spec.rb
362
+ - spec/strategy/mongodb/anonymize_field_spec.rb
316
363
  - spec/support/customer_sample.rb
317
364
  - spec/utils/database_spec.rb
318
365
  - spec/utils/geojson_parser_spec.rb
366
+ - spec/utils/random_float_spec.rb
319
367
  - spec/utils/random_int_spec.rb
368
+ - spec/utils/random_string_char_only_spec.rb
320
369
  - spec/utils/random_string_spec.rb
370
+ - spec/utils/template_helper_spec.rb
data/blacklist_dsl.rb DELETED
@@ -1,17 +0,0 @@
1
- system "bundle exec ruby whitelist_dsl.rb"
2
-
3
- require 'data-anonymization'
4
-
5
- DataAnon::Utils::Logging.logger.level = Logger::INFO
6
-
7
- database 'Chinook' do
8
- strategy DataAnon::Strategy::Blacklist
9
- source_db :adapter => 'sqlite3', :database => 'sample-data/chinook-empty.sqlite'
10
-
11
- table 'MediaType' do
12
- primary_key 'MediaTypeId'
13
- anonymize('Name').using FieldStrategy::StringTemplate.new('Media Type 100#{row_number}')
14
- end
15
-
16
- end
17
-
@@ -1,36 +0,0 @@
1
- require 'data-anonymization'
2
-
3
- FS = DataAnon::Strategy::Field
4
-
5
- DataAnon::Utils::Logging.logger.level = Logger::INFO
6
-
7
- # DSL for NOSQL database, NOT IMPLEMENTED YET
8
-
9
- database 'Chinook' do
10
- strategy DataAnon::Strategy::NoSQL::Blacklist
11
- source_db :adapter => 'sqlite3', :database => 'sample-data/chinook-empty.sqlite'
12
-
13
- document 'User' do
14
- primary_key 'MediaTypeId'
15
- whitelist
16
-
17
- node 'address' do
18
- whitelist 'addrssline1', 'addressline2'
19
- anonymize
20
- anonymize 'pincode'
21
-
22
- node 'contacts' do
23
- anonymize('phone-number').using FS::RandomPhoneNumber.new
24
- end
25
-
26
- anonymize 'contacts/phone-number'
27
-
28
- end
29
-
30
- anonymize 'address/contacts/phone-number'
31
-
32
- anonymize('Name').using FS::StringTemplate.new('Media Type 100#{row_number}')
33
- end
34
-
35
- end
36
-