data-anonymization 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afcaf064c0b8135149e5fb8e559ab95df8088516
4
- data.tar.gz: 795dbba88fead534acdcb87b4cf18fd4bdf12ad8
3
+ metadata.gz: e3354956cfd68076ea4bc342f611a9934f2b7385
4
+ data.tar.gz: ac064ad09012df2877aa29bd726c9e074749c7ec
5
5
  SHA512:
6
- metadata.gz: 85daa8177667c232eae29f3ad9a9f021a5d679898679967a5d435d4b3e3b7eb9bf0a6e84cd5441b43d823005a9dc0c295adfa3b9ca9387e1593ff01f4dc950d2
7
- data.tar.gz: 2ce7411e57e5427e9fbcd211b37a60acc3669d38a2405364e51aeb27f5ff2d43c027df5e55291e8be39f81ad4543045c318a5d20422c0444780d912da9595c1d
6
+ metadata.gz: 11b75a2a68c5ec5f80049378a6a23c3b25a7f9368e7063febc5d88107e80dcc165498038e55f8d4b651fcbfd0e30489918be751f7a647f37a535cd8dd40cc2d6
7
+ data.tar.gz: 65edc1aeaf200ed7ef0774801a690806f2256a60c43aa838ac8717e3f9e8466292cf22a339dac975ee88ae32efea541991c761dec6adc5be88bbbee5ae352a83
@@ -1 +1 @@
1
- ruby-2.1.5
1
+ ruby-2.2.2
@@ -6,4 +6,5 @@ rvm:
6
6
  - 1.9.3
7
7
  - 2.0.0
8
8
  - 2.1.5
9
+ - 2.2.2
9
10
  - ruby-head
data/Gemfile CHANGED
@@ -9,7 +9,6 @@ group :development, :test do
9
9
  gem 'pry'
10
10
  gem 'sqlite3'
11
11
  gem 'mongo'
12
- gem 'bson_ext'
13
12
  gem 'coveralls', require: false
14
13
  end
15
14
 
data/README.md CHANGED
@@ -70,13 +70,18 @@ Postgresql database having **composite primary key**
70
70
 
71
71
  ## Changelog
72
72
 
73
+ #### 0.7.2 (Sep 26, 2015)
74
+ 1. Upgraded MongoDB to latest gem version 2.1.0 and tested with MongoDB 3.x version.
75
+ 2. Upgraded gems to latest version
76
+ 3. Adding limit functionality - Merge pull request #27 from yanismydj/master
77
+
73
78
  #### 0.7.1 (Jun 13, 2015)
74
79
  1. Fixed issues with empty array data for MongoDB
75
80
  2. Added feature to skip and continue records during anaonymisation, this is useful to apply different strategies for different types of records.
76
81
 
77
82
 
78
83
  #### 0.7.0 (Mar 9, 2015)
79
- 1. Removed downcase from field name since it was causing issues with upper case field names. So now for databsae where case matters field name case should be maintained.
84
+ 1. Removed downcase from field name since it was causing issues with upper case field names. So now for databsae where case matters field name case should be maintained.
80
85
  2. Upgraded gems to latest version
81
86
 
82
87
 
@@ -204,8 +209,9 @@ Read more about [blacklist and whitelist here](http://sunitspace.blogspot.in/201
204
209
  2. Change [default field strategies](#default-field-strategies) to avoid using same strategy again and again in your DSL.
205
210
  3. To run anonymization in parallel at Table level, provided no FK constraint on tables use DataAnon::Parallel::Table strategy
206
211
  4. For large table to load them in batches from table set 'batch_size' and it will use RoR's batch mode processing. Checkout [example](https://github.com/sunitparekh/data-anonymization/blob/master/examples/whitelist_dsl.rb) on how to use batch processing.
207
- 5. Make sure to give proper case for fields and table names.
208
- 6. Use skip and continue to apply different strategies for records.
212
+ 5. Make sure to give proper case for fields and table names.
213
+ 6. Use skip and continue to apply different strategies for records.
214
+ 7. Use 'limit' to limit the number of rows that will be imported in whitelist
209
215
 
210
216
  ## DSL Generation
211
217
 
@@ -268,7 +274,7 @@ The options available are :
268
274
  2. database(-d) : The name of the database to generate the whitelist script for
269
275
  3. username(-u) : Username for DB authentication
270
276
  4. password(-w) : Password for DB authentication
271
- 5. port(-p) : The port the database service is running on.
277
+ 5. port(-p) : The port the database service is running on.
272
278
  6. whitelist patterns(-r): A regex expression which can be used to match records in the database to list as whitelisted fields in the generated script.
273
279
 
274
280
  The host and database options are mandatory. The others are optional.
@@ -282,7 +288,7 @@ datanon generate_mongo_dsl -h 123.456.7.8 -d production_db
282
288
 
283
289
  ```
284
290
 
285
- The **mongo** gem is required in order to install the mongo db drivers. The script generates a file named **mongodb_whitelist_generated.rb** in the same location as the project.
291
+ The **mongo** gem is required in order to install the mongo db drivers. The script generates a file named **mongodb_whitelist_generated.rb** in the same location as the project.
286
292
 
287
293
 
288
294
 
@@ -575,7 +581,7 @@ DataAnon::Utils::Logging.logger.level = Logger::INFO
575
581
 
576
582
  ## Skip and Continue records
577
583
 
578
- *Skip* is used to skip records during anonymization when condition returns true. This records are ignored,
584
+ *Skip* is used to skip records during anonymization when condition returns true. This records are ignored,
579
585
  in blacklist it remains as it is in database and in case of whitelist this records will not be copied to destination database.
580
586
 
581
587
  ```ruby
@@ -587,11 +593,11 @@ table 'customers' do
587
593
  anonymize 'terms_n_condition', 'age'
588
594
  end
589
595
  ```
590
-
591
-
592
- *Continue* is exactly opposite of Skip and it continue with anonymization only if given condition returns true.
596
+
597
+
598
+ *Continue* is exactly opposite of Skip and it continue with anonymization only if given condition returns true.
593
599
  In case of blacklist records are anonymized for matching conditions and for whitelist records are anonymized and copied
594
- to new database for matching conditions.
600
+ to new database for matching conditions.
595
601
 
596
602
  ```ruby
597
603
  table 'customers' do
@@ -623,5 +629,3 @@ end
623
629
  - [Dan Abel](http://www.linkedin.com/pub/dan-abel/0/61b/9b0) for introducing me to Blacklist and Whitelist approach for data anonymization.
624
630
  - [Chirga Doshi](https://twitter.com/chiragsdoshi) for encouraging me to get this done.
625
631
  - [Aditya Karle](https://twitter.com/adityakarle) for the Logo. (Coming Soon...)
626
-
627
-
@@ -1,11 +1,13 @@
1
1
  require 'data-anonymization'
2
-
3
2
  require 'mongo'
4
- Mongo::Connection.from_uri("mongodb://localhost/test").drop_database('test')
5
- system "mongoimport -d test --drop -c users --jsonArray ./sample-data/mongo/users.json"
6
- system "mongoimport -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json"
7
3
 
8
4
  DataAnon::Utils::Logging.logger.level = Logger::INFO
5
+ Mongo::Logger.logger.level = Logger::WARN
6
+
7
+ Mongo::Client.new("mongodb://localhost/test").database.drop
8
+ system "mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json"
9
+ system "mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json"
10
+
9
11
 
10
12
  database 'test' do
11
13
  strategy DataAnon::Strategy::MongoDB::Blacklist
@@ -21,7 +23,7 @@ database 'test' do
21
23
  end
22
24
 
23
25
  collection 'plans' do
24
- anonymize('plan_aliases').using FieldStrategy::AnonymizeArray.new(FieldStrategy::SelectFromList.new(["Free","Team","Business","Paid"]))
26
+ anonymize('plan_aliases').using FieldStrategy::AnonymizeArray.new(FieldStrategy::SelectFromList.new(%w(Free Team Business Paid)))
25
27
  anonymize 'public_sharing','photo_sharing'
26
28
 
27
29
  document 'features' do
@@ -1,12 +1,14 @@
1
1
  require 'data-anonymization'
2
-
3
2
  require 'mongo'
4
- Mongo::Connection.from_uri("mongodb://localhost/test").drop_database('test')
5
- Mongo::Connection.from_uri("mongodb://localhost/dest").drop_database('dest')
6
- system "mongoimport -d test --drop -c users --jsonArray ./sample-data/mongo/users.json"
7
- system "mongoimport -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json"
8
3
 
9
4
  DataAnon::Utils::Logging.logger.level = Logger::INFO
5
+ Mongo::Logger.logger.level = Logger::WARN
6
+
7
+
8
+ Mongo::Client.new("mongodb://localhost/test").database.drop
9
+ Mongo::Client.new("mongodb://localhost/dest").database.drop
10
+ system "mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json"
11
+ system "mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json"
10
12
 
11
13
  database 'test' do
12
14
  strategy DataAnon::Strategy::MongoDB::Whitelist
@@ -26,7 +28,7 @@ database 'test' do
26
28
 
27
29
  collection 'plans' do
28
30
  whitelist '_id', 'name','term', 'created_at'
29
- anonymize('plan_aliases').using FieldStrategy::AnonymizeArray.new(FieldStrategy::SelectFromList.new(["Free","Team","Business","Paid"]))
31
+ anonymize('plan_aliases').using FieldStrategy::AnonymizeArray.new(FieldStrategy::SelectFromList.new(%w(Free Team Business Paid)))
30
32
  anonymize 'public_sharing','photo_sharing'
31
33
 
32
34
  collection 'features' do
@@ -29,6 +29,7 @@ database 'Chinook' do
29
29
  table 'Customer' do
30
30
  primary_key 'CustomerId'
31
31
  batch_size 5 # batch_size works only if the primary_key is defined for the table
32
+ limit 10 # will only take last 10 records
32
33
 
33
34
  whitelist 'CustomerId', 'SupportRepId', 'Company'
34
35
  anonymize('Phone').using FieldStrategy::RandomPhoneNumber.new
@@ -64,4 +65,3 @@ database 'Chinook' do
64
65
 
65
66
 
66
67
  end
67
-
@@ -33,6 +33,10 @@ module DataAnon
33
33
  @batch_size = size
34
34
  end
35
35
 
36
+ def limit limit
37
+ @limit = limit
38
+ end
39
+
36
40
  def whitelist *fields
37
41
  fields.each { |f| @fields[f] = DataAnon::Strategy::Field::Whitelist.new }
38
42
  end
@@ -98,7 +102,8 @@ module DataAnon
98
102
 
99
103
  def process_table progress
100
104
  index = 0
101
- source_table.all.each do |record|
105
+
106
+ source_table_limited.each do |record|
102
107
  index += 1
103
108
  begin
104
109
  process_record_if index, record
@@ -112,7 +117,8 @@ module DataAnon
112
117
  def process_table_in_batches progress
113
118
  logger.info "Processing table #{@name} records in batch size of #{@batch_size}"
114
119
  index = 0
115
- source_table.find_each(:batch_size => @batch_size) do |record|
120
+
121
+ source_table_limited.find_each(:batch_size => @batch_size) do |record|
116
122
  index += 1
117
123
  begin
118
124
  process_record_if index, record
@@ -123,6 +129,16 @@ module DataAnon
123
129
  end
124
130
  end
125
131
 
132
+ def source_table_limited
133
+ @source_table_limited ||= begin
134
+ if @limit.present?
135
+ source_table.all.limit(@limit).order(created_at: :desc)
136
+ else
137
+ source_table.all
138
+ end
139
+ end
140
+ end
141
+
126
142
  def process_record_if index, record
127
143
  return if @skip_block && @skip_block.call(index, record)
128
144
  return if @continue_block && !@continue_block.call(index, record)
@@ -141,4 +157,4 @@ module DataAnon
141
157
 
142
158
  end
143
159
  end
144
- end
160
+ end
@@ -8,7 +8,8 @@ module DataAnon
8
8
  end
9
9
 
10
10
  def process_record index, document
11
- source_collection.save anonymize_document(document, index, @fields)
11
+ anonymized_document = anonymize_document(document, index, @fields)
12
+ source_collection.find({'_id' => anonymized_document['_id']}).update_one(anonymized_document)
12
13
  end
13
14
 
14
15
  def anonymize_document document, index, field_strategies = {}
@@ -23,7 +23,7 @@ module DataAnon
23
23
 
24
24
  def mongo_collection(database)
25
25
  options = database[:options] || {}
26
- Mongo::Connection.from_uri(database[:mongodb_uri], options)[database[:database]][@name]
26
+ Mongo::Client.new(database[:mongodb_uri], options).database.collection(@name)
27
27
  end
28
28
 
29
29
  def dest_collection
@@ -39,7 +39,7 @@ module DataAnon
39
39
  alias :dest_table :dest_collection
40
40
 
41
41
  def process_record index, document
42
- dest_collection.insert anonymize_document(document, index, @fields)
42
+ dest_collection.insert_one anonymize_document(document, index, @fields)
43
43
  end
44
44
 
45
45
  def anonymize_document document, index, field_strategies = {}
@@ -1,3 +1,3 @@
1
1
  module DataAnonymization
2
- VERSION = '0.7.1'
2
+ VERSION = '0.7.2'
3
3
  end
@@ -4,7 +4,7 @@ require 'mongo'
4
4
  describe "End 2 End MongoDB Blacklist Acceptance Test" do
5
5
 
6
6
  before(:each) do
7
- Mongo::Connection.from_uri("mongodb://localhost/test").drop_database('test')
7
+ Mongo::Client.new("mongodb://localhost/test").database().drop()
8
8
  users = [
9
9
  {
10
10
  "_id" => 1,
@@ -36,8 +36,8 @@ describe "End 2 End MongoDB Blacklist Acceptance Test" do
36
36
  "alternate_emails" => ["abc@test.com","abc2@test.com"]
37
37
  }
38
38
  ]
39
- users_coll = Mongo::Connection.from_uri("mongodb://localhost/dest")['test']['users']
40
- users.each { |p| users_coll.save p }
39
+ users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users')
40
+ users.each { |p| users_coll.insert_one p }
41
41
  end
42
42
 
43
43
  it "should anonymize plans collection" do
@@ -58,9 +58,9 @@ describe "End 2 End MongoDB Blacklist Acceptance Test" do
58
58
 
59
59
  end
60
60
 
61
- users_coll = Mongo::Connection.from_uri("mongodb://localhost/test")['test']['users']
62
- users_coll.count.should be 2
63
- user = users_coll.find_one({'_id' => 1})
61
+ users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users')
62
+ users_coll.find.count.to_int.should be 2
63
+ user = users_coll.find({'_id' => 1}).to_a[0]
64
64
 
65
65
  user['_id'].should == 1
66
66
  user['USER_ID'].should == "user-1"
@@ -4,8 +4,8 @@ require 'mongo'
4
4
  describe "End 2 End MongoDB Whitelist Acceptance Test" do
5
5
 
6
6
  before(:each) do
7
- Mongo::Connection.from_uri("mongodb://localhost/test").drop_database('test')
8
- Mongo::Connection.from_uri("mongodb://localhost/dest").drop_database('dest')
7
+ Mongo::Client.new("mongodb://localhost/test").database.drop
8
+ Mongo::Client.new("mongodb://localhost/dest").database.drop
9
9
  plans = [
10
10
  {
11
11
  "_id" => 1,
@@ -50,20 +50,20 @@ describe "End 2 End MongoDB Whitelist Acceptance Test" do
50
50
  "created_at" => Time.new(2012, 8, 11, 13, 1, 0)
51
51
  }
52
52
  ]
53
- plans_coll = Mongo::Connection.from_uri("mongodb://localhost/dest")['test']['plans']
54
- plans.each { |p| plans_coll.save p }
53
+ plans_coll = Mongo::Client.new("mongodb://localhost/test").database.collection('plans')
54
+ plans.each { |p| plans_coll.insert_one p }
55
55
  end
56
56
 
57
57
  it "should anonymize plans collection" do
58
58
 
59
- database 'test' do
59
+ database 'dest' do
60
60
  strategy DataAnon::Strategy::MongoDB::Whitelist
61
61
  source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test'
62
62
  destination_db :mongodb_uri => "mongodb://localhost/dest", :database => 'dest'
63
63
 
64
64
  collection 'plans' do
65
65
  whitelist '_id', 'name', 'term', 'created_at'
66
- anonymize('plan_aliases').using FieldStrategy::SelectFromList.new(["Free", "Team", "Business", "Paid"])
66
+ anonymize('plan_aliases').using FieldStrategy::SelectFromList.new(%w(Free Team Business Paid))
67
67
  anonymize 'public_sharing', 'photo_sharing'
68
68
 
69
69
  collection 'features' do
@@ -78,9 +78,9 @@ describe "End 2 End MongoDB Whitelist Acceptance Test" do
78
78
 
79
79
  end
80
80
 
81
- plans_coll = Mongo::Connection.from_uri("mongodb://localhost/dest")['dest']['plans']
82
- plans_coll.count.should be 2
83
- plan = plans_coll.find_one({ '_id' => 1})
81
+ plans_coll = Mongo::Client.new("mongodb://localhost/dest").database.collection('plans')
82
+ plans_coll.find.count.to_int.should be 2
83
+ plan = plans_coll.find({ '_id' => 1}).to_a[0]
84
84
 
85
85
  plan['_id'].should == 1
86
86
  plan['name'].should == "Free"
@@ -99,7 +99,7 @@ describe "End 2 End MongoDB Whitelist Acceptance Test" do
99
99
  [true,false].should include(feature1['users']['additional'])
100
100
 
101
101
 
102
- plan = plans_coll.find_one({ '_id' => 2})
102
+ plan = plans_coll.find({ '_id' => 2}).to_a[0]
103
103
  plan['plan_aliases'].length.should == 2
104
104
  ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][0])
105
105
  ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][1])
@@ -6,7 +6,7 @@ describe 'End 2 End RDBMS Blacklist Acceptance Test using SQLite database' do
6
6
  before(:each) do
7
7
  CustomerSample.clean
8
8
  CustomerSample.create_schema connection_spec
9
- CustomerSample.insert_record connection_spec, CustomerSample::SAMPLE_DATA
9
+ CustomerSample.insert_record connection_spec, CustomerSample::SAMPLE_DATA[0]
10
10
  end
11
11
 
12
12
  it 'should anonymize customer table record ' do
@@ -24,7 +24,7 @@ describe 'End 2 End RDBMS Blacklist Acceptance Test using SQLite database' do
24
24
 
25
25
  DataAnon::Utils::SourceDatabase.establish_connection connection_spec
26
26
  source = DataAnon::Utils::SourceTable.create 'customers', ['cust_id']
27
- new_rec = source.find(CustomerSample::SAMPLE_DATA[:cust_id])
27
+ new_rec = source.find(CustomerSample::SAMPLE_DATA[0][:cust_id])
28
28
  new_rec['email'].should == 'test+1@gmail.com'
29
29
 
30
30
  end
@@ -45,7 +45,7 @@ describe 'End 2 End RDBMS Blacklist Acceptance Test using SQLite database' do
45
45
 
46
46
  DataAnon::Utils::SourceDatabase.establish_connection connection_spec
47
47
  source = DataAnon::Utils::SourceTable.create 'customers', ['cust_id']
48
- new_rec = source.find(CustomerSample::SAMPLE_DATA[:cust_id])
48
+ new_rec = source.find(CustomerSample::SAMPLE_DATA[0][:cust_id])
49
49
  new_rec['email'].should_not == 'test+1@gmail.com'
50
50
 
51
51
  end
@@ -66,10 +66,10 @@ describe 'End 2 End RDBMS Blacklist Acceptance Test using SQLite database' do
66
66
 
67
67
  DataAnon::Utils::SourceDatabase.establish_connection connection_spec
68
68
  source = DataAnon::Utils::SourceTable.create 'customers', ['cust_id']
69
- new_rec = source.find(CustomerSample::SAMPLE_DATA[:cust_id])
69
+ new_rec = source.find(CustomerSample::SAMPLE_DATA[0][:cust_id])
70
70
  new_rec['email'].should == 'test+1@gmail.com'
71
71
 
72
72
 
73
73
 
74
74
  end
75
- end
75
+ end
@@ -8,7 +8,7 @@ describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do
8
8
  before(:each) do
9
9
  CustomerSample.clean
10
10
  CustomerSample.create_schema source_connection_spec
11
- CustomerSample.insert_record source_connection_spec, CustomerSample::SAMPLE_DATA
11
+ CustomerSample.insert_records source_connection_spec, CustomerSample::SAMPLE_DATA
12
12
 
13
13
  CustomerSample.create_schema dest_connection_spec
14
14
  end
@@ -35,7 +35,8 @@ describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do
35
35
 
36
36
  DataAnon::Utils::DestinationDatabase.establish_connection dest_connection_spec
37
37
  dest_table = DataAnon::Utils::DestinationTable.create 'customers'
38
- new_rec = dest_table.where('cust_id' => CustomerSample::SAMPLE_DATA[:cust_id]).first
38
+ dest_table.count.should == 2
39
+ new_rec = dest_table.where('cust_id' => CustomerSample::SAMPLE_DATA[0][:cust_id]).first
39
40
  new_rec.first_name.should_not be('Sunit')
40
41
  new_rec.last_name.should_not be('Parekh')
41
42
  new_rec.birth_date.should_not be(Date.new(1977,7,8))
@@ -52,4 +53,24 @@ describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do
52
53
  new_rec.updated_at.should == Time.new(2010,5,5)
53
54
  end
54
55
 
56
+ describe 'limiting' do
57
+ it 'returns only last record' do
58
+ database 'Customer' do
59
+ strategy DataAnon::Strategy::Whitelist
60
+ source_db source_connection_spec
61
+ destination_db dest_connection_spec
62
+
63
+ table 'customers' do
64
+ limit 1
65
+ whitelist 'cust_id', 'first_name', 'created_at','updated_at'
66
+ end
67
+ end
68
+
69
+ DataAnon::Utils::DestinationDatabase.establish_connection dest_connection_spec
70
+ dest_table = DataAnon::Utils::DestinationTable.create 'customers'
71
+ dest_table.count.should == 1
72
+ new_rec = dest_table.first
73
+ new_rec.first_name.should eq('Rohit')
74
+ end
75
+ end
55
76
  end
@@ -8,7 +8,7 @@ describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do
8
8
  before(:each) do
9
9
  CustomerSample.clean
10
10
  CustomerSample.create_schema source_connection_spec
11
- CustomerSample.insert_record source_connection_spec, CustomerSample::SAMPLE_DATA
11
+ CustomerSample.insert_record source_connection_spec, CustomerSample::SAMPLE_DATA[0]
12
12
 
13
13
  CustomerSample.create_schema dest_connection_spec
14
14
  end
@@ -37,7 +37,7 @@ describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do
37
37
 
38
38
  DataAnon::Utils::DestinationDatabase.establish_connection dest_connection_spec
39
39
  dest_table = DataAnon::Utils::DestinationTable.create 'customers'
40
- new_rec = dest_table.where("cust_id" => CustomerSample::SAMPLE_DATA[:cust_id]).first
40
+ new_rec = dest_table.where("cust_id" => CustomerSample::SAMPLE_DATA[0][:cust_id]).first
41
41
  new_rec.first_name.should_not be("Sunit")
42
42
  new_rec.last_name.should_not be("Parekh")
43
43
  new_rec.birth_date.should_not be(Date.new(1977,7,8))
@@ -52,4 +52,4 @@ describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do
52
52
  new_rec.longitude.should be_between( -84.044636, -64.044636)
53
53
 
54
54
  end
55
- end
55
+ end
@@ -11,6 +11,7 @@ ENV['show_progress'] = 'false'
11
11
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
12
 
13
13
  DataAnon::Utils::Logging.logger.level = Logger::WARN
14
+ Mongo::Logger.logger.level = Logger::WARN
14
15
 
15
16
  RSpec.configure do |config|
16
17
  config.expect_with :rspec do |c|
@@ -20,7 +20,7 @@ class CustomerSample
20
20
  t.float :latitude
21
21
  t.float :longitude
22
22
 
23
- t.timestamps null: true
23
+ t.timestamps null: false
24
24
  end
25
25
  end
26
26
  end
@@ -36,14 +36,26 @@ class CustomerSample
36
36
  CreateCustomer.migrate :up
37
37
  end
38
38
 
39
- SAMPLE_DATA = {:cust_id => 100, :first_name => "Sunit", :last_name => "Parekh",
40
- :birth_date => Date.new(1977,7,8), :address => "F 501 Shanti Nagar",
41
- :state => "Maharastra", :zipcode => "411048", :phone => "9923700662",
42
- :email => "parekh.sunit@gmail.com", :terms_n_condition => true,
43
- :age => 34, :longitude => -74.044636, :latitude => +40.689060,
44
- :created_at => Time.new(2010,10,10), :updated_at => Time.new(2010,5,5)}
39
+ SAMPLE_DATA = [
40
+ {
41
+ :cust_id => 100, :first_name => "Sunit", :last_name => "Parekh",
42
+ :birth_date => Date.new(1977,7,8), :address => "F 501 Shanti Nagar",
43
+ :state => "Maharastra", :zipcode => "411048", :phone => "9923700662",
44
+ :email => "parekh.sunit@gmail.com", :terms_n_condition => true,
45
+ :age => 34, :longitude => -74.044636, :latitude => +40.689060,
46
+ :created_at => Time.new(2010,10,10), :updated_at => Time.new(2010,5,5)
47
+ },
48
+ {
49
+ :cust_id => 101, :first_name => "Rohit", :last_name => "Parekh",
50
+ :birth_date => Date.new(1977,7,8), :address => "F 501 Shanti Nagar",
51
+ :state => "Maharastra", :zipcode => "411048", :phone => "9923700662",
52
+ :email => "parekh.sunit@gmail.com", :terms_n_condition => true,
53
+ :age => 34, :longitude => -74.044636, :latitude => +40.689060,
54
+ :created_at => Time.now, :updated_at => Time.now
55
+ }
56
+ ]
45
57
 
46
- def self.insert_record connection_spec, data_hash = SAMPLE_DATA
58
+ def self.insert_record connection_spec, data_hash = SAMPLE_DATA[0]
47
59
  DataAnon::Utils::TempDatabase.establish_connection connection_spec
48
60
  source = DataAnon::Utils::BaseTable.create_table DataAnon::Utils::TempDatabase, 'customers', 'cust_id'
49
61
  cust = source.new data_hash
@@ -51,4 +63,13 @@ class CustomerSample
51
63
  cust.save!
52
64
  end
53
65
 
54
- end
66
+ def self.insert_records connection_spec, data_hash = SAMPLE_DATA
67
+ DataAnon::Utils::TempDatabase.establish_connection connection_spec
68
+ source = DataAnon::Utils::BaseTable.create_table DataAnon::Utils::TempDatabase, 'customers', 'cust_id'
69
+ data_hash.each do |data_row|
70
+ cust = source.new data_row
71
+ cust.cust_id = data_row[:cust_id]
72
+ cust.save!
73
+ end
74
+ end
75
+ 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.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sunit Parekh
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-06-13 00:00:00.000000000 Z
13
+ date: 2015-10-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -311,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
311
  version: '0'
312
312
  requirements: []
313
313
  rubyforge_project:
314
- rubygems_version: 2.4.3
314
+ rubygems_version: 2.4.8
315
315
  signing_key:
316
316
  specification_version: 4
317
317
  summary: Tool to create anonymized production data dump to use for PREF and other