diff --git a/README.md b/README.md index d2c14ee..e6057b1 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,10 @@ Postgresql database having **composite primary key** ## Changelog +#### 0.8.1 (Aug 19, 2017) +1. Multi-threading support added by [stanislav-tyutin](https://github.com/stanislav-tyutin) using Pull Request. +2. Fixed to work with Ruby 2.4.x, issue with Integer data type + #### 0.8.0 (Oct 31, 2016) 1. Upgraded to rails 5.x diff --git a/data-anonymization.gemspec b/data-anonymization.gemspec index 1fa5ba5..7bf0116 100644 --- a/data-anonymization.gemspec +++ b/data-anonymization.gemspec @@ -25,6 +25,6 @@ Gem::Specification.new do |gem| gem.add_dependency('rgeo', '~> 0.5') gem.add_dependency('rgeo-geojson', '~> 0.4') gem.add_dependency('powerbar', '~> 1.0') - gem.add_dependency('parallel', '~> 1.9') - gem.add_dependency('thor', '~> 0.19') + gem.add_dependency('parallel', '~> 1.12') + gem.add_dependency('thor', '~> 0.20') end diff --git a/examples/blacklist_dsl.rb b/examples/blacklist_dsl.rb index 6c1e72f..bf054e5 100644 --- a/examples/blacklist_dsl.rb +++ b/examples/blacklist_dsl.rb @@ -1,4 +1,4 @@ -system "bundle exec ruby examples/whitelist_dsl.rb" +system 'bundle exec ruby examples/whitelist_dsl.rb' require 'data-anonymization' @@ -18,7 +18,7 @@ anonymize('City').using FieldStrategy::RandomCity.region_US anonymize('State').using FieldStrategy::RandomProvince.region_US anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US - anonymize('Country') {|field| "USA" } + anonymize('Country') {|field| 'USA'} anonymize('Phone').using FieldStrategy::RandomPhoneNumber.new anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') @@ -33,7 +33,7 @@ anonymize('City').using FieldStrategy::RandomCity.region_US anonymize('State').using FieldStrategy::RandomProvince.region_US anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US - anonymize('Country') {|field| "USA" } + anonymize('Country') {|field| 'USA'} anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') end diff --git a/examples/mongodb_blacklist_dsl.rb b/examples/mongodb_blacklist_dsl.rb index da4cb35..f23123b 100644 --- a/examples/mongodb_blacklist_dsl.rb +++ b/examples/mongodb_blacklist_dsl.rb @@ -4,20 +4,20 @@ DataAnon::Utils::Logging.logger.level = Logger::INFO Mongo::Logger.logger.level = Logger::WARN -Mongo::Client.new("mongodb://localhost/test").database.drop -system "mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json" -system "mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json" +Mongo::Client.new('mongodb://localhost/test').database.drop +system 'mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json' +system 'mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json' database 'test' do strategy DataAnon::Strategy::MongoDB::Blacklist - source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test' + source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test' collection 'users' do anonymize('date_of_birth').using FieldStrategy::TimeDelta.new(5,30) anonymize('user_id').using FieldStrategy::StringTemplate.new('user-#{row_number}') anonymize('email').using FieldStrategy::RandomMailinatorEmail.new - anonymize('password') { |field| "password" } + anonymize('password') { |field| 'password'} anonymize('first_name').using FieldStrategy::RandomFirstName.new anonymize('last_name').using FieldStrategy::RandomLastName.new end diff --git a/examples/mongodb_whitelist_dsl.rb b/examples/mongodb_whitelist_dsl.rb index f927127..e7deb9b 100644 --- a/examples/mongodb_whitelist_dsl.rb +++ b/examples/mongodb_whitelist_dsl.rb @@ -5,22 +5,22 @@ Mongo::Logger.logger.level = Logger::WARN -Mongo::Client.new("mongodb://localhost/test").database.drop -Mongo::Client.new("mongodb://localhost/dest").database.drop -system "mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json" -system "mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json" +Mongo::Client.new('mongodb://localhost/test').database.drop +Mongo::Client.new('mongodb://localhost/dest').database.drop +system 'mongoimport --host=127.0.0.1 -d test --drop -c users --jsonArray ./sample-data/mongo/users.json' +system 'mongoimport --host=127.0.0.1 -d test --drop -c plans --jsonArray ./sample-data/mongo/plans.json' database 'test' do strategy DataAnon::Strategy::MongoDB::Whitelist - source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test' - destination_db :mongodb_uri => "mongodb://localhost/dest", :database => 'dest' + source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test' + destination_db :mongodb_uri => 'mongodb://localhost/dest', :database => 'dest' collection 'users' do whitelist '_id','failed_attempts','updated_at' anonymize('date_of_birth').using FieldStrategy::TimeDelta.new(5,30) anonymize('user_id').using FieldStrategy::StringTemplate.new('user-#{row_number}') anonymize('email').using FieldStrategy::RandomMailinatorEmail.new - anonymize('password') { |field| "password" } + anonymize('password') { |field| 'password'} anonymize('first_name').using FieldStrategy::RandomFirstName.new anonymize('last_name').using FieldStrategy::RandomLastName.new anonymize 'password_reset_answer','password_reset_question' diff --git a/examples/whitelist_dsl.rb b/examples/whitelist_dsl.rb index e0e3886..6b0681b 100644 --- a/examples/whitelist_dsl.rb +++ b/examples/whitelist_dsl.rb @@ -1,4 +1,4 @@ -system "rake empty_dest" # clean destination database on every call +system 'rake empty_dest' # clean destination database on every call require 'data-anonymization' @@ -15,7 +15,7 @@ primary_key 'GenreId' whitelist 'GenreId' anonymize 'Name' do |field| - field.value + " test" + field.value + ' test' end end @@ -39,7 +39,7 @@ anonymize('City').using FieldStrategy::RandomCity.region_US anonymize('State').using FieldStrategy::RandomProvince.region_US anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US - anonymize('Country') {|field| "USA" } + anonymize('Country') {|field| 'USA'} anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') end @@ -56,7 +56,7 @@ anonymize('City').using FieldStrategy::RandomCity.region_US anonymize('State').using FieldStrategy::RandomProvince.region_US anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US - anonymize('Country') {|field| "USA" } + anonymize('Country') {|field| 'USA'} anonymize('Phone').using FieldStrategy::RandomPhoneNumber.new anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') diff --git a/examples/whitelist_dsl_threads.rb b/examples/whitelist_dsl_threads.rb new file mode 100644 index 0000000..ac76b55 --- /dev/null +++ b/examples/whitelist_dsl_threads.rb @@ -0,0 +1,66 @@ +system 'rake empty_dest' # clean destination database on every call + +require 'data-anonymization' + +DataAnon::Utils::Logging.logger.level = Logger::INFO + +database 'Chinook' do + strategy DataAnon::Strategy::Whitelist + source_db :adapter => 'sqlite3', :database => 'sample-data/chinook.sqlite' + destination_db :adapter => 'sqlite3', :database => 'sample-data/chinook-empty.sqlite' + + default_field_strategies :string => FieldStrategy::StringTemplate.new('Sunit #{row_number} Parekh') + + table 'Genre' do + primary_key 'GenreId' + whitelist 'GenreId' + anonymize 'Name' do |field| + field.value + ' test' + end + end + + table 'MediaType' do + primary_key 'MediaTypeId' + anonymize('MediaTypeId') { |field| field.value } # same as whitelist + anonymize('Name').using FieldStrategy::StringTemplate.new('Media Type #{row_number}') + + end + + table 'Customer' do + primary_key 'CustomerId' + thread_num 5 # thread_num + + whitelist 'CustomerId', 'SupportRepId', 'Company' + anonymize('Phone').using FieldStrategy::RandomPhoneNumber.new + anonymize('FirstName').using FieldStrategy::RandomFirstName.new + anonymize('LastName').using FieldStrategy::RandomLastName.new + anonymize('Address').using FieldStrategy::RandomAddress.region_US + anonymize('City').using FieldStrategy::RandomCity.region_US + anonymize('State').using FieldStrategy::RandomProvince.region_US + anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US + anonymize('Country') {|field| 'USA'} + anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new + anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') + end + + table 'Employee' do + thread_num 5 # thread_num + + whitelist 'EmployeeId', 'ReportsTo', 'Title' + anonymize('BirthDate').using FieldStrategy::DateTimeDelta.new(1, 1) + anonymize('FirstName').using FieldStrategy::RandomFirstName.new + anonymize('LastName').using FieldStrategy::RandomLastName.new + anonymize('HireDate').using FieldStrategy::DateTimeDelta.new(2, 0) + anonymize('Address').using FieldStrategy::RandomAddress.region_US + anonymize('City').using FieldStrategy::RandomCity.region_US + anonymize('State').using FieldStrategy::RandomProvince.region_US + anonymize('PostalCode').using FieldStrategy::RandomZipcode.region_US + anonymize('Country') {|field| 'USA'} + anonymize('Phone').using FieldStrategy::RandomPhoneNumber.new + anonymize('Fax').using FieldStrategy::RandomPhoneNumber.new + anonymize('Email').using FieldStrategy::StringTemplate.new('test+#{row_number}@gmail.com') + end + + + +end diff --git a/lib/core/field.rb b/lib/core/field.rb index 6f1a709..c907ddd 100644 --- a/lib/core/field.rb +++ b/lib/core/field.rb @@ -3,7 +3,7 @@ module Core class Field - def initialize name, value, row_number, ar_record, table_name = "unknown" + def initialize name, value, row_number, ar_record, table_name = 'unknown' @name = name @value = value @row_number = row_number diff --git a/lib/core/table_errors.rb b/lib/core/table_errors.rb index d383387..3caee73 100644 --- a/lib/core/table_errors.rb +++ b/lib/core/table_errors.rb @@ -11,7 +11,7 @@ def initialize table_name def log_error record, exception @errors << { :record => record, :exception => exception} - raise "Reached limit of error for a table" if @errors.length > 100 + raise 'Reached limit of error for a table' if @errors.length > 100 end def errors diff --git a/lib/data-anonymization.rb b/lib/data-anonymization.rb index 1c82eb4..2be4205 100644 --- a/lib/data-anonymization.rb +++ b/lib/data-anonymization.rb @@ -1,28 +1,28 @@ -require "version" +require 'version' -require "utils/logging" -require "utils/random_int" -require "utils/random_float" -require "utils/random_string" -require "utils/random_string_chars_only" -require "utils/geojson_parser" -require "utils/progress_bar" -require "utils/parallel_progress_bar" -require "utils/resource" -require "utils/template_helper" -require "parallel/table" -require "core/database" -require "core/fields_missing_strategy" -require "thor/helpers/rdbms_dsl_generator" -require "core/field" -require "core/table_errors" -require "strategy/strategies" -require "utils/database" -require "core/dsl" +require 'utils/logging' +require 'utils/random_int' +require 'utils/random_float' +require 'utils/random_string' +require 'utils/random_string_chars_only' +require 'utils/geojson_parser' +require 'utils/progress_bar' +require 'utils/parallel_progress_bar' +require 'utils/resource' +require 'utils/template_helper' +require 'parallel/table' +require 'core/database' +require 'core/fields_missing_strategy' +require 'thor/helpers/rdbms_dsl_generator' +require 'core/field' +require 'core/table_errors' +require 'strategy/strategies' +require 'utils/database' +require 'core/dsl' begin require 'mongo' - require "thor/helpers/mongodb_dsl_generator" + require 'thor/helpers/mongodb_dsl_generator' rescue LoadError - "Ignoring the mongodb specific libraries if monog driver is not specified in gem" + 'Ignoring the mongodb specific libraries if monog driver is not specified in gem' end diff --git a/lib/strategy/field/default_anon.rb b/lib/strategy/field/default_anon.rb index 6feb01e..185901c 100644 --- a/lib/strategy/field/default_anon.rb +++ b/lib/strategy/field/default_anon.rb @@ -5,6 +5,7 @@ module Field class DefaultAnon DEFAULT_STRATEGIES = {:string => FieldStrategy::RandomString.new, + :integer => FieldStrategy::RandomIntegerDelta.new(5), :fixnum => FieldStrategy::RandomIntegerDelta.new(5), :bignum => FieldStrategy::RandomIntegerDelta.new(5000), :float => FieldStrategy::RandomFloatDelta.new(5.0), diff --git a/lib/strategy/strategies.rb b/lib/strategy/strategies.rb index d8217e8..f1d673a 100644 --- a/lib/strategy/strategies.rb +++ b/lib/strategy/strategies.rb @@ -9,5 +9,5 @@ require 'strategy/mongodb/whitelist' require 'strategy/mongodb/blacklist' rescue LoadError - "Ignoring the mongodb specific libraries if monog driver is not specified in gem" + 'Ignoring the mongodb specific libraries if monog driver is not specified in gem' end diff --git a/lib/utils/template_helper.rb b/lib/utils/template_helper.rb index af03631..f04ee86 100644 --- a/lib/utils/template_helper.rb +++ b/lib/utils/template_helper.rb @@ -5,9 +5,11 @@ class TemplateHelper def self.source_connection_specs_rdbms config_hash config_hash.keys.reject{|key| config_hash[key].nil? }.collect { |key| - if ((config_hash[key].class.to_s.downcase == "string")) + if ((config_hash[key].class.to_s.downcase == 'string')) ":#{key} => '#{config_hash[key]}'" - elsif ((config_hash[key].class.to_s.downcase == "fixnum")) + elsif ((config_hash[key].class.to_s.downcase == 'integer')) + ":#{key} => #{config_hash[key]}" + elsif ((config_hash[key].class.to_s.downcase == 'fixnum')) ":#{key} => #{config_hash[key]}" end }.join ', ' diff --git a/lib/version.rb b/lib/version.rb index 753ac0c..cde7be2 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -1,3 +1,3 @@ module DataAnonymization - VERSION = '0.8.0' + VERSION = '0.8.1' end diff --git a/spec/acceptance/mongodb_blacklist_spec.rb b/spec/acceptance/mongodb_blacklist_spec.rb index f8e6e0e..304180b 100644 --- a/spec/acceptance/mongodb_blacklist_spec.rb +++ b/spec/acceptance/mongodb_blacklist_spec.rb @@ -1,56 +1,56 @@ -require "spec_helper" +require 'spec_helper' require 'mongo' -describe "End 2 End MongoDB Blacklist Acceptance Test" do +describe 'End 2 End MongoDB Blacklist Acceptance Test' do before(:each) do - Mongo::Client.new("mongodb://localhost/test").database().drop() + Mongo::Client.new('mongodb://localhost/test').database().drop() users = [ { - "_id" => 1, - "USER_ID" => "sunitparekh", - "date_of_birth" => Time.new(2012, 7, 14, 13, 1, 0), - "email" => "parekh-sunit@mailinator.com", - "password" => "TfqIK8Pd8GlbMDFZCX4l/5EtnOkfLCeynOL85tJQuxum&382knaflk@@", - "failed_attempts" => 0, - "first_name" => "Sunit", - "last_name" => "Parekh", - "password_reset_answer" => "manza", - "password_reset_question" => "My new car modal?", - "updated_at" => Time.new(2012, 8, 15, 13, 1, 0), - "alternate_emails" => ["abc@test.com","abc2@test.com"] + '_id' => 1, + 'USER_ID' => 'sunitparekh', + 'date_of_birth' => Time.new(2012, 7, 14, 13, 1, 0), + 'email' => 'parekh-sunit@mailinator.com', + 'password' => 'TfqIK8Pd8GlbMDFZCX4l/5EtnOkfLCeynOL85tJQuxum&382knaflk@@', + 'failed_attempts' => 0, + 'first_name' => 'Sunit', + 'last_name' => 'Parekh', + 'password_reset_answer' => 'manza', + 'password_reset_question' => 'My new car modal?', + 'updated_at' => Time.new(2012, 8, 15, 13, 1, 0), + 'alternate_emails' => ['abc@test.com', 'abc2@test.com'] }, { - "_id" => 2, - "USER_ID" => "anandagrawal", - "date_of_birth" => Time.new(2011, 8, 11, 13, 1, 0), - "email" => "anand-agrawal@mailinator.com", - "password" => "Tz548O0RWusldVAWkwqfzO3jK/X4l/5EtnOkfLCeynOL85tJQuxum", - "failed_attempts" => 0, - "first_name" => "Anand", - "last_name" => "Agrawal", - "password_reset_answer" => "android", - "password_reset_question" => "My phone?", - "updated_at" => Time.new(2012, 2, 11, 13, 1, 0), - "alternate_emails" => ["abc@test.com","abc2@test.com"] + '_id' => 2, + 'USER_ID' => 'anandagrawal', + 'date_of_birth' => Time.new(2011, 8, 11, 13, 1, 0), + 'email' => 'anand-agrawal@mailinator.com', + 'password' => 'Tz548O0RWusldVAWkwqfzO3jK/X4l/5EtnOkfLCeynOL85tJQuxum', + 'failed_attempts' => 0, + 'first_name' => 'Anand', + 'last_name' => 'Agrawal', + 'password_reset_answer' => 'android', + 'password_reset_question' => 'My phone?', + 'updated_at' => Time.new(2012, 2, 11, 13, 1, 0), + 'alternate_emails' => ['abc@test.com', 'abc2@test.com'] } ] - users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users') + users_coll = Mongo::Client.new('mongodb://localhost/test').database().collection('users') users.each { |p| users_coll.insert_one p } end - it "should anonymize plans collection" do + it 'should anonymize plans collection' do database 'test' do strategy DataAnon::Strategy::MongoDB::Blacklist - source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test' + source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test' collection 'users' do anonymize('date_of_birth').using FieldStrategy::TimeDelta.new(5,30) anonymize('USER_ID').using FieldStrategy::StringTemplate.new('user-#{row_number}') anonymize('email').using FieldStrategy::RandomMailinatorEmail.new - anonymize('password') { |field| "password" } + anonymize('password') { |field| 'password'} anonymize('first_name').using FieldStrategy::RandomFirstName.new anonymize('last_name').using FieldStrategy::RandomLastName.new anonymize('alternate_emails').using FieldStrategy::AnonymizeArray.new(FieldStrategy::RandomMailinatorEmail.new) @@ -58,20 +58,20 @@ end - users_coll = Mongo::Client.new("mongodb://localhost/test").database().collection('users') + users_coll = Mongo::Client.new('mongodb://localhost/test').database().collection('users') users_coll.find.count.to_int.should be 2 user = users_coll.find({'_id' => 1}).to_a[0] user['_id'].should == 1 - user['USER_ID'].should == "user-1" + user['USER_ID'].should == 'user-1' user['date_of_birth'].to_i.should_not == Time.new(2012, 7, 14, 13, 1, 0).to_i - user['email'].should_not == "parekh-sunit@mailinator.com" - user['password'].should == "password" + user['email'].should_not == 'parekh-sunit@mailinator.com' + user['password'].should == 'password' user['failed_attempts'].should == 0 - user['first_name'].should_not be "Sunit" - user['last_name'].should_not be "Parekh" - user['password_reset_answer'].should == "manza" - user['password_reset_question'].should == "My new car modal?" + user['first_name'].should_not be 'Sunit' + user['last_name'].should_not be 'Parekh' + user['password_reset_answer'].should == 'manza' + user['password_reset_question'].should == 'My new car modal?' user['updated_at'].to_i.should == Time.new(2012, 8, 15, 13, 1, 0).to_i user['alternate_emails'].length.should == 2 user['alternate_emails'][0].should_not == 'abc@test.com' diff --git a/spec/acceptance/mongodb_whitelist_spec.rb b/spec/acceptance/mongodb_whitelist_spec.rb index 2711486..38b3e71 100644 --- a/spec/acceptance/mongodb_whitelist_spec.rb +++ b/spec/acceptance/mongodb_whitelist_spec.rb @@ -1,65 +1,65 @@ -require "spec_helper" +require 'spec_helper' require 'mongo' -describe "End 2 End MongoDB Whitelist Acceptance Test" do +describe 'End 2 End MongoDB Whitelist Acceptance Test' do before(:each) do - Mongo::Client.new("mongodb://localhost/test").database.drop - Mongo::Client.new("mongodb://localhost/dest").database.drop + Mongo::Client.new('mongodb://localhost/test').database.drop + Mongo::Client.new('mongodb://localhost/dest').database.drop plans = [ { - "_id" => 1, - "name" => "Free", - "nick_names" => ["Name1","Name2"], - "features" => [ + '_id' => 1, + 'name' => 'Free', + 'nick_names' => ['Name1', 'Name2'], + 'features' => [ { - "max_storage" => 21474836480, - "type" => "AmazonS3", - "users" => {"max" => 1, "additional" => false} + 'max_storage' => 21474836480, + 'type' => 'AmazonS3', + 'users' => {'max' => 1, 'additional' => false} }, { - "max_storage" => 21474836480, - "type" => "DropBox", - "users" => {"max" => 1, "additional" => false} + 'max_storage' => 21474836480, + 'type' => 'DropBox', + 'users' => {'max' => 1, 'additional' => false} } ], - "term" => "month", - "public_sharing" => false, - "photo_sharing" => true, - "created_at" => Time.new(2012, 6, 21, 13, 30, 0) + 'term' => 'month', + 'public_sharing' => false, + 'photo_sharing' => true, + 'created_at' => Time.new(2012, 6, 21, 13, 30, 0) }, { - "_id" => 2, - "name" => "Team", - "plan_aliases" => ["Business", "Paid"], - "features" => [ + '_id' => 2, + 'name' => 'Team', + 'plan_aliases' => ['Business', 'Paid'], + 'features' => [ { - "max_storage" => 53687091200, - "type" => "AmazonS3", - "users" => {"max" => 5, "additional" => true} + 'max_storage' => 53687091200, + 'type' => 'AmazonS3', + 'users' => {'max' => 5, 'additional' => true} }, { - "max_storage" => 53687091200, - "type" => "DropBox", - "users" => {"max" => 5, "additional" => true} + 'max_storage' => 53687091200, + 'type' => 'DropBox', + 'users' => {'max' => 5, 'additional' => true} } ], - "term" => "month", - "public_sharing" => true, - "photo_sharing" => true, - "created_at" => Time.new(2012, 8, 11, 13, 1, 0) + 'term' => 'month', + 'public_sharing' => true, + 'photo_sharing' => true, + 'created_at' => Time.new(2012, 8, 11, 13, 1, 0) } ] - plans_coll = Mongo::Client.new("mongodb://localhost/test").database.collection('plans') + plans_coll = Mongo::Client.new('mongodb://localhost/test').database.collection('plans') plans.each { |p| plans_coll.insert_one p } end - it "should anonymize plans collection" do + it 'should anonymize plans collection' do database 'dest' do strategy DataAnon::Strategy::MongoDB::Whitelist - source_db :mongodb_uri => "mongodb://localhost/test", :database => 'test' - destination_db :mongodb_uri => "mongodb://localhost/dest", :database => 'dest' + source_db :mongodb_uri => 'mongodb://localhost/test', :database => 'test' + destination_db :mongodb_uri => 'mongodb://localhost/dest', :database => 'dest' collection 'plans' do whitelist '_id', 'name', 'term', 'created_at' @@ -78,15 +78,15 @@ end - plans_coll = Mongo::Client.new("mongodb://localhost/dest").database.collection('plans') + plans_coll = Mongo::Client.new('mongodb://localhost/dest').database.collection('plans') plans_coll.find.count.to_int.should be 2 plan = plans_coll.find({ '_id' => 1}).to_a[0] plan['_id'].should == 1 - plan['name'].should == "Free" - plan['nick_names'][0].should_not == "Name1" - plan['nick_names'][1].should_not == "Name2" - plan['term'].should == "month" + plan['name'].should == 'Free' + plan['nick_names'][0].should_not == 'Name1' + plan['nick_names'][1].should_not == 'Name2' + plan['term'].should == 'month' plan['created_at'].should == Time.new(2012, 6, 21, 13, 30, 0) plan['plan_aliases'].should be_nil [true,false].should include(plan['public_sharing']) @@ -94,14 +94,14 @@ plan['features'].length.should == 2 feature1 = plan['features'][0] [10737418240, 21474836480, 53687091200].should include(feature1['max_storage']) - feature1['type'].should == "AmazonS3" + feature1['type'].should == 'AmazonS3' feature1['users']['max'].should be_kind_of(Fixnum) [true,false].should include(feature1['users']['additional']) plan = plans_coll.find({ '_id' => 2}).to_a[0] plan['plan_aliases'].length.should == 2 - ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][0]) - ["Free", "Team", "Business", "Paid"].should include(plan['plan_aliases'][1]) + ['Free', 'Team', 'Business', 'Paid'].should include(plan['plan_aliases'][0]) + ['Free', 'Team', 'Business', 'Paid'].should include(plan['plan_aliases'][1]) end end \ No newline at end of file diff --git a/spec/acceptance/rdbms_whitelist_spec.rb b/spec/acceptance/rdbms_whitelist_spec.rb index 5039101..82bd4b7 100644 --- a/spec/acceptance/rdbms_whitelist_spec.rb +++ b/spec/acceptance/rdbms_whitelist_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do diff --git a/spec/acceptance/rdbms_whitelist_with_primary_key_spec.rb b/spec/acceptance/rdbms_whitelist_with_primary_key_spec.rb index bbe5a4b..2babfe3 100644 --- a/spec/acceptance/rdbms_whitelist_with_primary_key_spec.rb +++ b/spec/acceptance/rdbms_whitelist_with_primary_key_spec.rb @@ -1,6 +1,6 @@ -require "spec_helper" +require 'spec_helper' -describe "End 2 End RDBMS Whitelist Acceptance Test using SQLite database" do +describe 'End 2 End RDBMS Whitelist Acceptance Test using SQLite database' do source_connection_spec = {:adapter => 'sqlite3', :database => 'tmp/customer.sqlite'} dest_connection_spec = {:adapter => 'sqlite3', :database => 'tmp/customer-dest.sqlite'} @@ -13,9 +13,9 @@ CustomerSample.create_schema dest_connection_spec end - it "should anonymize customer table record " do + it 'should anonymize customer table record ' do - database "Customer" do + database 'Customer' do strategy DataAnon::Strategy::Whitelist source_db source_connection_spec destination_db dest_connection_spec @@ -37,14 +37,14 @@ DataAnon::Utils::DestinationDatabase.establish_connection dest_connection_spec dest_table = DataAnon::Utils::DestinationTable.create 'customers' - new_rec = dest_table.where("cust_id" => CustomerSample::SAMPLE_DATA[0][:cust_id]).first - new_rec.first_name.should_not be("Sunit") - new_rec.last_name.should_not be("Parekh") + new_rec = dest_table.where('cust_id' => CustomerSample::SAMPLE_DATA[0][:cust_id]).first + new_rec.first_name.should_not be('Sunit') + new_rec.last_name.should_not be('Parekh') new_rec.birth_date.should_not be(Date.new(1977,7,8)) new_rec.address.should == 'F 501 Shanti Nagar' ['Gujrat','Karnataka'].should include(new_rec.state) new_rec.zipcode.should == '411048' - new_rec.phone.should_not be "9923700662" + new_rec.phone.should_not be '9923700662' new_rec.email.should == 'test+1@gmail.com' [true,false].should include(new_rec.terms_n_condition) new_rec.age.should be_between(0,100) diff --git a/spec/core/fields_missing_strategy_spec.rb b/spec/core/fields_missing_strategy_spec.rb index f5d3d37..a9f1e2d 100644 --- a/spec/core/fields_missing_strategy_spec.rb +++ b/spec/core/fields_missing_strategy_spec.rb @@ -1,26 +1,26 @@ -require "spec_helper" +require 'spec_helper' describe DataAnon::Core::FieldsMissingStrategy do FMS = DataAnon::Core::FieldsMissingStrategy - it "should be able to add field for new table that doesn't exist" do - users = FMS.new("users") - users.missing("confirm_email") - users.fields_missing_strategy.should == ["confirm_email"] + it 'should be able to add field for new table that doesnot exist' do + users = FMS.new('users') + users.missing('confirm_email') + users.fields_missing_strategy.should == ['confirm_email'] end - it "should be able to take care for same field appearing multiple time" do - users = FMS.new("users") - users.missing("confirm_email") - users.missing("confirm_email") - users.fields_missing_strategy.should == ["confirm_email"] + it 'should be able to take care for same field appearing multiple time' do + users = FMS.new('users') + users.missing('confirm_email') + users.missing('confirm_email') + users.fields_missing_strategy.should == ['confirm_email'] end - it "should be able to add multiple fields for table" do - users = FMS.new("users") - users.missing("confirm_email") - users.missing("password_reset") - users.fields_missing_strategy.should == ["confirm_email","password_reset"] + it 'should be able to add multiple fields for table' do + users = FMS.new('users') + users.missing('confirm_email') + users.missing('password_reset') + users.fields_missing_strategy.should == %w(confirm_email password_reset) end end \ No newline at end of file diff --git a/spec/strategy/field/contact/random_address_spec.rb b/spec/strategy/field/contact/random_address_spec.rb index 0cba04f..69646f3 100644 --- a/spec/strategy/field/contact/random_address_spec.rb +++ b/spec/strategy/field/contact/random_address_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe DataAnon::Strategy::Field::RandomAddress do @@ -7,6 +7,6 @@ describe 'anonymized address should be different from original address' do let(:anonymized_address) {RandomAddress.region_US.anonymize(field)} - it {anonymized_address.should_not eq("1 Infinite Loop")} + it {anonymized_address.should_not eq('1 Infinite Loop')} end end \ No newline at end of file diff --git a/spec/strategy/field/default_anon_spec.rb b/spec/strategy/field/default_anon_spec.rb index dd2c141..35b2335 100644 --- a/spec/strategy/field/default_anon_spec.rb +++ b/spec/strategy/field/default_anon_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe FieldStrategy::DefaultAnon do diff --git a/spec/strategy/field/random_boolean_spec.rb b/spec/strategy/field/random_boolean_spec.rb index 5a4a811..48b10c9 100644 --- a/spec/strategy/field/random_boolean_spec.rb +++ b/spec/strategy/field/random_boolean_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe FieldStrategy::RandomBoolean do diff --git a/spec/strategy/field/whitelist_spec.rb b/spec/strategy/field/whitelist_spec.rb index fb3c15e..9b0d714 100644 --- a/spec/strategy/field/whitelist_spec.rb +++ b/spec/strategy/field/whitelist_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe FieldStrategy::Whitelist do diff --git a/spec/strategy/mongodb/anonymize_field_spec.rb b/spec/strategy/mongodb/anonymize_field_spec.rb index 6397545..a751d03 100644 --- a/spec/strategy/mongodb/anonymize_field_spec.rb +++ b/spec/strategy/mongodb/anonymize_field_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe DataAnon::Strategy::MongoDB::AnonymizeField do @@ -6,30 +6,30 @@ it 'should do callback recursive in case of sub document' do sub_document = {'key' => 'value'} field_strategy = {'key' => FieldStrategy::LoremIpsum.new} - anonymization_strategy = double("AnonymizationStrategy") - anonymization_strategy.should_receive(:anonymize_document).with(sub_document,1,field_strategy).and_return({'key' => "anonymized_value"}) + anonymization_strategy = double('AnonymizationStrategy') + anonymization_strategy.should_receive(:anonymize_document).with(sub_document,1,field_strategy).and_return({'key' => 'anonymized_value'}) field = DataAnon::Core::Field.new('sub_document_field', sub_document,1,nil) anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field, field_strategy,anonymization_strategy) anonymized_value = anonymize_field.anonymize - anonymized_value['key'].should == "anonymized_value" + anonymized_value['key'].should == 'anonymized_value' end it 'should do callback recursive multiple time in case of array of sub document' do sub_documents = [{'key' => 'value1'},{'key' => 'value2'}] field_strategy = {'key' => FieldStrategy::LoremIpsum.new} - anonymization_strategy = double("AnonymizationStrategy") - anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value1'},1,field_strategy).and_return({'key' => "anonymized_value1"}) - anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value2'},1,field_strategy).and_return({'key' => "anonymized_value2"}) + anonymization_strategy = double('AnonymizationStrategy') + anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value1'},1,field_strategy).and_return({'key' => 'anonymized_value1'}) + anonymization_strategy.should_receive(:anonymize_document).with({'key' => 'value2'},1,field_strategy).and_return({'key' => 'anonymized_value2'}) field = DataAnon::Core::Field.new('sub_document_field', sub_documents,1,nil) anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field, field_strategy,anonymization_strategy) anonymized_value = anonymize_field.anonymize anonymized_value.length.should == 2 - anonymized_value[0]['key'].should == "anonymized_value1" - anonymized_value[1]['key'].should == "anonymized_value2" + anonymized_value[0]['key'].should == 'anonymized_value1' + anonymized_value[1]['key'].should == 'anonymized_value2' end it 'should anonymize array field data type' do - anonymization_strategy = double("AnonymizationStrategy") + anonymization_strategy = double('AnonymizationStrategy') anonymization_strategy.should_not_receive(:anonymize_document) field = DataAnon::Core::Field.new('tags',['tag1','tag2'],1,nil) anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field,FieldStrategy::SelectFromList.new(['tag4','tag5','tag6','tag7','tag8']),anonymization_strategy) @@ -40,7 +40,7 @@ end it 'should anonymize field and return anonymized value using passed strategy' do - anonymization_strategy = double("AnonymizationStrategy") + anonymization_strategy = double('AnonymizationStrategy') anonymization_strategy.should_not_receive(:anonymize_document) field = DataAnon::Core::Field.new('boolean_field',false,1,nil) anonymize_field = DataAnon::Strategy::MongoDB::AnonymizeField.new(field,FieldStrategy::RandomBoolean.new,anonymization_strategy) diff --git a/spec/utils/template_helper_spec.rb b/spec/utils/template_helper_spec.rb index a2ed044..1d93a30 100644 --- a/spec/utils/template_helper_spec.rb +++ b/spec/utils/template_helper_spec.rb @@ -1,14 +1,14 @@ -require "spec_helper" +require 'spec_helper' -describe "Template Helper" do +describe 'Template Helper' do - it "should return a correctly formatted string based on input connection hash for source" do - connection_hash = {:adapter => "test_adapter", :port => 5000} + it 'should return a correctly formatted string based on input connection hash for source' do + connection_hash = {adapter: 'test_adapter', port: 5000} DataAnon::Utils::TemplateHelper.source_connection_specs_rdbms(connection_hash).should eq(":adapter => 'test_adapter', :port => 5000") end - it "should return a correctly formatted string based on input connection hash for destination" do - connection_hash = {:adapter => "test_adapter", :port => 5000} + it 'should return a correctly formatted string based on input connection hash for destination' do + connection_hash = {adapter: 'test_adapter', port: 5000} DataAnon::Utils::TemplateHelper.destination_connection_specs_rdbms(connection_hash).should eq(":adapter => '', :port => ''") end end \ No newline at end of file