data-anonymization 0.8.0 → 0.8.5

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.
Files changed (42) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +4 -3
  5. data/README.md +24 -8
  6. data/commands.txt +4 -0
  7. data/data-anonymization.gemspec +7 -7
  8. data/examples/blacklist_dsl.rb +3 -3
  9. data/examples/mongodb_blacklist_dsl.rb +5 -5
  10. data/examples/mongodb_whitelist_dsl.rb +7 -7
  11. data/examples/whitelist_dsl.rb +4 -4
  12. data/examples/whitelist_dsl_threads.rb +66 -0
  13. data/lib/core/field.rb +1 -1
  14. data/lib/core/table_errors.rb +1 -1
  15. data/lib/data-anonymization.rb +22 -22
  16. data/lib/strategy/base.rb +41 -1
  17. data/lib/strategy/blacklist.rb +3 -2
  18. data/lib/strategy/field/datetime/anonymize_time.rb +3 -3
  19. data/lib/strategy/field/default_anon.rb +1 -0
  20. data/lib/strategy/field/number/random_big_decimal_delta.rb +1 -1
  21. data/lib/strategy/field/string/random_url.rb +1 -1
  22. data/lib/strategy/field/string/select_from_database.rb +14 -7
  23. data/lib/strategy/strategies.rb +1 -1
  24. data/lib/thor/helpers/mongodb_dsl_generator.rb +2 -3
  25. data/lib/utils/database.rb +1 -1
  26. data/lib/utils/random_int.rb +2 -2
  27. data/lib/utils/template_helper.rb +4 -2
  28. data/lib/version.rb +1 -1
  29. data/spec/acceptance/mongodb_blacklist_spec.rb +39 -39
  30. data/spec/acceptance/mongodb_whitelist_spec.rb +45 -45
  31. data/spec/acceptance/rdbms_whitelist_spec.rb +1 -1
  32. data/spec/acceptance/rdbms_whitelist_with_primary_key_spec.rb +8 -8
  33. data/spec/core/fields_missing_strategy_spec.rb +15 -15
  34. data/spec/strategy/field/contact/random_address_spec.rb +2 -2
  35. data/spec/strategy/field/default_anon_spec.rb +3 -3
  36. data/spec/strategy/field/number/random_big_decimal_delta_spec.rb +1 -1
  37. data/spec/strategy/field/random_boolean_spec.rb +1 -1
  38. data/spec/strategy/field/whitelist_spec.rb +1 -1
  39. data/spec/strategy/mongodb/anonymize_field_spec.rb +11 -11
  40. data/spec/utils/database_spec.rb +4 -4
  41. data/spec/utils/template_helper_spec.rb +6 -6
  42. metadata +19 -18
@@ -3,15 +3,16 @@ module DataAnon
3
3
  class Blacklist < DataAnon::Strategy::Base
4
4
 
5
5
  def process_record index, record
6
+ updates = {}
6
7
  @fields.each do |field, strategy|
7
8
  database_field_name = record.attributes.select { |k,v| k == field }.keys[0]
8
9
  field_value = record.attributes[database_field_name]
9
10
  unless field_value.nil? || is_primary_key?(database_field_name)
10
11
  field = DataAnon::Core::Field.new(database_field_name, field_value, index, record, @name)
11
- record[database_field_name] = strategy.anonymize(field)
12
+ updates[database_field_name] = strategy.anonymize(field)
12
13
  end
13
14
  end
14
- record.save!
15
+ record.update_columns(updates) if updates.any?
15
16
  end
16
17
 
17
18
  end
@@ -58,8 +58,8 @@ module DataAnon
58
58
  month = @anonymize_month? DataAnon::Utils::RandomInt.generate(1,12) : original_time.month
59
59
  days_in_month = Time.new(year,month,1,1,1,1).end_of_month.day
60
60
  day = @anonymize_day? DataAnon::Utils::RandomInt.generate(1,days_in_month) : original_time.day
61
- hour = @anonymize_hour? DataAnon::Utils::RandomInt.generate(1,24) : original_time.hour
62
- min = @anonymize_min? DataAnon::Utils::RandomInt.generate(1,60) : original_time.min
61
+ hour = @anonymize_hour? DataAnon::Utils::RandomInt.generate(0,23) : original_time.hour
62
+ min = @anonymize_min? DataAnon::Utils::RandomInt.generate(0,59) : original_time.min
63
63
  sec = original_time.sec
64
64
 
65
65
  create_object(year, month, day, hour, min, sec)
@@ -74,4 +74,4 @@ module DataAnon
74
74
  end
75
75
  end
76
76
  end
77
- end
77
+ end
@@ -5,6 +5,7 @@ module DataAnon
5
5
  class DefaultAnon
6
6
 
7
7
  DEFAULT_STRATEGIES = {:string => FieldStrategy::RandomString.new,
8
+ :integer => FieldStrategy::RandomIntegerDelta.new(5),
8
9
  :fixnum => FieldStrategy::RandomIntegerDelta.new(5),
9
10
  :bignum => FieldStrategy::RandomIntegerDelta.new(5000),
10
11
  :float => FieldStrategy::RandomFloatDelta.new(5.0),
@@ -16,7 +16,7 @@ module DataAnon
16
16
  end
17
17
 
18
18
  def anonymize field
19
- return BigDecimal.new("#{field.value + DataAnon::Utils::RandomFloat.generate(-@delta, +@delta)}")
19
+ return BigDecimal("#{field.value + DataAnon::Utils::RandomFloat.generate(-@delta, +@delta)}")
20
20
  end
21
21
 
22
22
  end
@@ -5,7 +5,7 @@ module DataAnon
5
5
  # Generates a randomized URL while maintaining the structure of the original url
6
6
  #
7
7
  # !!!ruby
8
- # anonymize('fb_profile').using FieldStrategy::RandomURL.new
8
+ # anonymize('fb_profile').using FieldStrategy::RandomUrl.new
9
9
 
10
10
  class RandomUrl
11
11
 
@@ -12,16 +12,23 @@ module DataAnon
12
12
  include Utils::Logging
13
13
 
14
14
  def initialize table_name, field_name, connection_spec
15
- DataAnon::Utils::SourceDatabase.establish_connection connection_spec
16
- source = Utils::SourceTable.create table_name, []
17
- @values = source.select(field_name).distinct.collect { |record| record[field_name]}
18
- logger.debug "For field strategy #{table_name}:#{field_name} using values #{@values} "
19
-
15
+ @table_name = table_name
16
+ @field_name = field_name
17
+ @connection_spec = connection_spec
20
18
  end
21
19
 
22
- end
23
-
20
+ def anonymize field
21
+ @values ||= begin
22
+ DataAnon::Utils::SourceDatabase.establish_connection @connection_spec
23
+ source = Utils::SourceTable.create @table_name, []
24
+ values = source.select(@field_name).distinct.collect { |record| record[@field_name]}
25
+ logger.debug "For field strategy #{@table_name}:#{@field_name} using values #{values} "
26
+ values
27
+ end
24
28
 
29
+ super
30
+ end
31
+ end
25
32
  end
26
33
  end
27
34
  end
@@ -9,5 +9,5 @@ begin
9
9
  require 'strategy/mongodb/whitelist'
10
10
  require 'strategy/mongodb/blacklist'
11
11
  rescue LoadError
12
- "Ignoring the mongodb specific libraries if monog driver is not specified in gem"
12
+ 'Ignoring the mongodb specific libraries if monog driver is not specified in gem'
13
13
  end
@@ -18,13 +18,13 @@ module DataAnon
18
18
 
19
19
  def generate
20
20
 
21
- db = Mongo::Connection.from_uri(@mongodb_uri)[@configuration_hash[:database]]
21
+ db = Mongo::Client.new(@mongodb_uri, :database => @configuration_hash[:database])
22
22
  collections = db.collections
23
23
  collections.each do |collection|
24
24
  unless collection.name.start_with?('system.')
25
25
  depth = 2
26
26
  @output << "\tcollection '#{collection.name}' do"
27
- document = collection.find_one
27
+ document = collection.find({}).first
28
28
  process_document(depth, document)
29
29
  @output << "\tend\n"
30
30
  end
@@ -63,4 +63,3 @@ module DataAnon
63
63
  end
64
64
  end
65
65
  end
66
-
@@ -25,7 +25,7 @@ module DataAnon
25
25
 
26
26
  def self.create_table database, table_name, primary_keys = []
27
27
  klass_name = table_name.to_s.downcase.capitalize
28
- return database.const_get klass_name if database.const_defined? klass_name
28
+ return database.const_get(klass_name, false) if database.const_defined?(klass_name, false)
29
29
  database.const_set(klass_name, Class.new(database) do
30
30
  self.table_name = table_name
31
31
  self.primary_keys = primary_keys if primary_keys.length > 1
@@ -4,8 +4,8 @@ module DataAnon
4
4
 
5
5
  def self.generate min, max
6
6
  return 0 if (min == 0 && max == 0)
7
- Random.new.rand min...max
7
+ Random.new.rand min..max
8
8
  end
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -5,9 +5,11 @@ module DataAnon
5
5
  def self.source_connection_specs_rdbms config_hash
6
6
 
7
7
  config_hash.keys.reject{|key| config_hash[key].nil? }.collect { |key|
8
- if ((config_hash[key].class.to_s.downcase == "string"))
8
+ if ((config_hash[key].class.to_s.downcase == 'string'))
9
9
  ":#{key} => '#{config_hash[key]}'"
10
- elsif ((config_hash[key].class.to_s.downcase == "fixnum"))
10
+ elsif ((config_hash[key].class.to_s.downcase == 'integer'))
11
+ ":#{key} => #{config_hash[key]}"
12
+ elsif ((config_hash[key].class.to_s.downcase == 'fixnum'))
11
13
  ":#{key} => #{config_hash[key]}"
12
14
  end
13
15
  }.join ', '
@@ -1,3 +1,3 @@
1
1
  module DataAnonymization
2
- VERSION = '0.8.0'
2
+ VERSION = '0.8.5'
3
3
  end
@@ -1,56 +1,56 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
  require 'mongo'
3
3
 
4
- describe "End 2 End MongoDB Blacklist Acceptance Test" do
4
+ describe 'End 2 End MongoDB Blacklist Acceptance Test' do
5
5
 
6
6
  before(:each) do
7
- Mongo::Client.new("mongodb://localhost/test").database().drop()
7
+ Mongo::Client.new('mongodb://localhost/test').database().drop()
8
8
  users = [
9
9
  {
10
- "_id" => 1,
11
- "USER_ID" => "sunitparekh",
12
- "date_of_birth" => Time.new(2012, 7, 14, 13, 1, 0),
13
- "email" => "parekh-sunit@mailinator.com",
14
- "password" => "TfqIK8Pd8GlbMDFZCX4l/5EtnOkfLCeynOL85tJQuxum&382knaflk@@",
15
- "failed_attempts" => 0,
16
- "first_name" => "Sunit",
17
- "last_name" => "Parekh",
18
- "password_reset_answer" => "manza",
19
- "password_reset_question" => "My new car modal?",
20
- "updated_at" => Time.new(2012, 8, 15, 13, 1, 0),
21
- "alternate_emails" => ["abc@test.com","abc2@test.com"]
10
+ '_id' => 1,
11
+ 'USER_ID' => 'sunitparekh',
12
+ 'date_of_birth' => Time.new(2012, 7, 14, 13, 1, 0),
13
+ 'email' => 'parekh-sunit@mailinator.com',
14
+ 'password' => 'TfqIK8Pd8GlbMDFZCX4l/5EtnOkfLCeynOL85tJQuxum&382knaflk@@',
15
+ 'failed_attempts' => 0,
16
+ 'first_name' => 'Sunit',
17
+ 'last_name' => 'Parekh',
18
+ 'password_reset_answer' => 'manza',
19
+ 'password_reset_question' => 'My new car modal?',
20
+ 'updated_at' => Time.new(2012, 8, 15, 13, 1, 0),
21
+ 'alternate_emails' => ['abc@test.com', 'abc2@test.com']
22
22
 
23
23
  },
24
24
  {
25
- "_id" => 2,
26
- "USER_ID" => "anandagrawal",
27
- "date_of_birth" => Time.new(2011, 8, 11, 13, 1, 0),
28
- "email" => "anand-agrawal@mailinator.com",
29
- "password" => "Tz548O0RWusldVAWkwqfzO3jK/X4l/5EtnOkfLCeynOL85tJQuxum",
30
- "failed_attempts" => 0,
31
- "first_name" => "Anand",
32
- "last_name" => "Agrawal",
33
- "password_reset_answer" => "android",
34
- "password_reset_question" => "My phone?",
35
- "updated_at" => Time.new(2012, 2, 11, 13, 1, 0),
36
- "alternate_emails" => ["abc@test.com","abc2@test.com"]
25
+ '_id' => 2,
26
+ 'USER_ID' => 'anandagrawal',
27
+ 'date_of_birth' => Time.new(2011, 8, 11, 13, 1, 0),
28
+ 'email' => 'anand-agrawal@mailinator.com',
29
+ 'password' => 'Tz548O0RWusldVAWkwqfzO3jK/X4l/5EtnOkfLCeynOL85tJQuxum',
30
+ 'failed_attempts' => 0,
31
+ 'first_name' => 'Anand',
32
+ 'last_name' => 'Agrawal',
33
+ 'password_reset_answer' => 'android',
34
+ 'password_reset_question' => 'My phone?',
35
+ 'updated_at' => Time.new(2012, 2, 11, 13, 1, 0),
36
+ 'alternate_emails' => ['abc@test.com', 'abc2@test.com']
37
37
  }
38
38
  ]
39
- users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users')
39
+ users_coll = Mongo::Client.new('mongodb://localhost/test').database().collection('users')
40
40
  users.each { |p| users_coll.insert_one p }
41
41
  end
42
42
 
43
- it "should anonymize plans collection" do
43
+ it 'should anonymize plans collection' do
44
44
 
45
45
  database 'test' do
46
46
  strategy DataAnon::Strategy::MongoDB::Blacklist
47
- source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test'
47
+ source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test'
48
48
 
49
49
  collection 'users' do
50
50
  anonymize('date_of_birth').using FieldStrategy::TimeDelta.new(5,30)
51
51
  anonymize('USER_ID').using FieldStrategy::StringTemplate.new('user-#{row_number}')
52
52
  anonymize('email').using FieldStrategy::RandomMailinatorEmail.new
53
- anonymize('password') { |field| "password" }
53
+ anonymize('password') { |field| 'password'}
54
54
  anonymize('first_name').using FieldStrategy::RandomFirstName.new
55
55
  anonymize('last_name').using FieldStrategy::RandomLastName.new
56
56
  anonymize('alternate_emails').using FieldStrategy::AnonymizeArray.new(FieldStrategy::RandomMailinatorEmail.new)
@@ -58,20 +58,20 @@ describe "End 2 End MongoDB Blacklist Acceptance Test" do
58
58
 
59
59
  end
60
60
 
61
- users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users')
61
+ users_coll = Mongo::Client.new('mongodb://localhost/test').database().collection('users')
62
62
  users_coll.find.count.to_int.should be 2
63
63
  user = users_coll.find({'_id' => 1}).to_a[0]
64
64
 
65
65
  user['_id'].should == 1
66
- user['USER_ID'].should == "user-1"
66
+ user['USER_ID'].should == 'user-1'
67
67
  user['date_of_birth'].to_i.should_not == Time.new(2012, 7, 14, 13, 1, 0).to_i
68
- user['email'].should_not == "parekh-sunit@mailinator.com"
69
- user['password'].should == "password"
68
+ user['email'].should_not == 'parekh-sunit@mailinator.com'
69
+ user['password'].should == 'password'
70
70
  user['failed_attempts'].should == 0
71
- user['first_name'].should_not be "Sunit"
72
- user['last_name'].should_not be "Parekh"
73
- user['password_reset_answer'].should == "manza"
74
- user['password_reset_question'].should == "My new car modal?"
71
+ user['first_name'].should_not be 'Sunit'
72
+ user['last_name'].should_not be 'Parekh'
73
+ user['password_reset_answer'].should == 'manza'
74
+ user['password_reset_question'].should == 'My new car modal?'
75
75
  user['updated_at'].to_i.should == Time.new(2012, 8, 15, 13, 1, 0).to_i
76
76
  user['alternate_emails'].length.should == 2
77
77
  user['alternate_emails'][0].should_not == 'abc@test.com'
@@ -1,65 +1,65 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
  require 'mongo'
3
3
 
4
- describe "End 2 End MongoDB Whitelist Acceptance Test" do
4
+ describe 'End 2 End MongoDB Whitelist Acceptance Test' do
5
5
 
6
6
  before(:each) do
7
- Mongo::Client.new("mongodb://localhost/test").database.drop
8
- Mongo::Client.new("mongodb://localhost/dest").database.drop
7
+ Mongo::Client.new('mongodb://localhost/test').database.drop
8
+ Mongo::Client.new('mongodb://localhost/dest').database.drop
9
9
  plans = [
10
10
  {
11
- "_id" => 1,
12
- "name" => "Free",
13
- "nick_names" => ["Name1","Name2"],
14
- "features" => [
11
+ '_id' => 1,
12
+ 'name' => 'Free',
13
+ 'nick_names' => ['Name1', 'Name2'],
14
+ 'features' => [
15
15
  {
16
- "max_storage" => 21474836480,
17
- "type" => "AmazonS3",
18
- "users" => {"max" => 1, "additional" => false}
16
+ 'max_storage' => 21474836480,
17
+ 'type' => 'AmazonS3',
18
+ 'users' => {'max' => 1, 'additional' => false}
19
19
  },
20
20
  {
21
- "max_storage" => 21474836480,
22
- "type" => "DropBox",
23
- "users" => {"max" => 1, "additional" => false}
21
+ 'max_storage' => 21474836480,
22
+ 'type' => 'DropBox',
23
+ 'users' => {'max' => 1, 'additional' => false}
24
24
  }
25
25
  ],
26
- "term" => "month",
27
- "public_sharing" => false,
28
- "photo_sharing" => true,
29
- "created_at" => Time.new(2012, 6, 21, 13, 30, 0)
26
+ 'term' => 'month',
27
+ 'public_sharing' => false,
28
+ 'photo_sharing' => true,
29
+ 'created_at' => Time.new(2012, 6, 21, 13, 30, 0)
30
30
  },
31
31
  {
32
- "_id" => 2,
33
- "name" => "Team",
34
- "plan_aliases" => ["Business", "Paid"],
35
- "features" => [
32
+ '_id' => 2,
33
+ 'name' => 'Team',
34
+ 'plan_aliases' => ['Business', 'Paid'],
35
+ 'features' => [
36
36
  {
37
- "max_storage" => 53687091200,
38
- "type" => "AmazonS3",
39
- "users" => {"max" => 5, "additional" => true}
37
+ 'max_storage' => 53687091200,
38
+ 'type' => 'AmazonS3',
39
+ 'users' => {'max' => 5, 'additional' => true}
40
40
  },
41
41
  {
42
- "max_storage" => 53687091200,
43
- "type" => "DropBox",
44
- "users" => {"max" => 5, "additional" => true}
42
+ 'max_storage' => 53687091200,
43
+ 'type' => 'DropBox',
44
+ 'users' => {'max' => 5, 'additional' => true}
45
45
  }
46
46
  ],
47
- "term" => "month",
48
- "public_sharing" => true,
49
- "photo_sharing" => true,
50
- "created_at" => Time.new(2012, 8, 11, 13, 1, 0)
47
+ 'term' => 'month',
48
+ 'public_sharing' => true,
49
+ 'photo_sharing' => true,
50
+ 'created_at' => Time.new(2012, 8, 11, 13, 1, 0)
51
51
  }
52
52
  ]
53
- plans_coll = Mongo::Client.new("mongodb://localhost/test").database.collection('plans')
53
+ plans_coll = Mongo::Client.new('mongodb://localhost/test').database.collection('plans')
54
54
  plans.each { |p| plans_coll.insert_one p }
55
55
  end
56
56
 
57
- it "should anonymize plans collection" do
57
+ it 'should anonymize plans collection' do
58
58
 
59
59
  database 'dest' do
60
60
  strategy DataAnon::Strategy::MongoDB::Whitelist
61
- source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test'
62
- destination_db :mongodb_uri => "mongodb://localhost/dest", :database => 'dest'
61
+ source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test'
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'
@@ -78,15 +78,15 @@ describe "End 2 End MongoDB Whitelist Acceptance Test" do
78
78
 
79
79
  end
80
80
 
81
- plans_coll = Mongo::Client.new("mongodb://localhost/dest").database.collection('plans')
81
+ plans_coll = Mongo::Client.new('mongodb://localhost/dest').database.collection('plans')
82
82
  plans_coll.find.count.to_int.should be 2
83
83
  plan = plans_coll.find({ '_id' => 1}).to_a[0]
84
84
 
85
85
  plan['_id'].should == 1
86
- plan['name'].should == "Free"
87
- plan['nick_names'][0].should_not == "Name1"
88
- plan['nick_names'][1].should_not == "Name2"
89
- plan['term'].should == "month"
86
+ plan['name'].should == 'Free'
87
+ plan['nick_names'][0].should_not == 'Name1'
88
+ plan['nick_names'][1].should_not == 'Name2'
89
+ plan['term'].should == 'month'
90
90
  plan['created_at'].should == Time.new(2012, 6, 21, 13, 30, 0)
91
91
  plan['plan_aliases'].should be_nil
92
92
  [true,false].should include(plan['public_sharing'])
@@ -94,14 +94,14 @@ describe "End 2 End MongoDB Whitelist Acceptance Test" do
94
94
  plan['features'].length.should == 2
95
95
  feature1 = plan['features'][0]
96
96
  [10737418240, 21474836480, 53687091200].should include(feature1['max_storage'])
97
- feature1['type'].should == "AmazonS3"
98
- feature1['users']['max'].should be_kind_of(Fixnum)
97
+ feature1['type'].should == 'AmazonS3'
98
+ feature1['users']['max'].should be_kind_of(Integer)
99
99
  [true,false].should include(feature1['users']['additional'])
100
100
 
101
101
 
102
102
  plan = plans_coll.find({ '_id' => 2}).to_a[0]
103
103
  plan['plan_aliases'].length.should == 2
104
- ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][0])
105
- ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][1])
104
+ ['Free', 'Team', 'Business', 'Paid'].should include(plan['plan_aliases'][0])
105
+ ['Free', 'Team', 'Business', 'Paid'].should include(plan['plan_aliases'][1])
106
106
  end
107
107
  end
@@ -1,4 +1,4 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do
4
4
 
@@ -1,6 +1,6 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do
3
+ describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do
4
4
 
5
5
  source_connection_spec = {:adapter => 'sqlite3', :database => 'tmp/customer.sqlite'}
6
6
  dest_connection_spec = {:adapter => 'sqlite3', :database => 'tmp/customer-dest.sqlite'}
@@ -13,9 +13,9 @@ describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do
13
13
  CustomerSample.create_schema dest_connection_spec
14
14
  end
15
15
 
16
- it "should anonymize customer table record " do
16
+ it 'should anonymize customer table record ' do
17
17
 
18
- database "Customer" do
18
+ database 'Customer' do
19
19
  strategy DataAnon::Strategy::Whitelist
20
20
  source_db source_connection_spec
21
21
  destination_db dest_connection_spec
@@ -37,14 +37,14 @@ 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[0][:cust_id]).first
41
- new_rec.first_name.should_not be("Sunit")
42
- new_rec.last_name.should_not be("Parekh")
40
+ new_rec = dest_table.where('cust_id' => CustomerSample::SAMPLE_DATA[0][:cust_id]).first
41
+ new_rec.first_name.should_not be('Sunit')
42
+ new_rec.last_name.should_not be('Parekh')
43
43
  new_rec.birth_date.should_not be(Date.new(1977,7,8))
44
44
  new_rec.address.should == 'F 501 Shanti Nagar'
45
45
  ['Gujrat','Karnataka'].should include(new_rec.state)
46
46
  new_rec.zipcode.should == '411048'
47
- new_rec.phone.should_not be "9923700662"
47
+ new_rec.phone.should_not be '9923700662'
48
48
  new_rec.email.should == 'test+1@gmail.com'
49
49
  [true,false].should include(new_rec.terms_n_condition)
50
50
  new_rec.age.should be_between(0,100)