db_obfuscation 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +83 -0
- data/LICENSE +21 -0
- data/README.md +121 -0
- data/TODO +15 -0
- data/bin/console +25 -0
- data/bin/db_obfuscation +121 -0
- data/bin/obfuscation_test +54 -0
- data/cli/db_dump.rb +29 -0
- data/cli/migrator.rb +26 -0
- data/cli/seeder.rb +52 -0
- data/db_obfuscation.gemspec +25 -0
- data/features/bin/dump.feature +21 -0
- data/features/bin/obfuscation.feature +12 -0
- data/features/bin/test_database_tasks.feature +16 -0
- data/features/support.rb +1 -0
- data/lib/db_obfuscation.rb +50 -0
- data/lib/db_obfuscation/batch_formulator.rb +26 -0
- data/lib/db_obfuscation/config.rb +43 -0
- data/lib/db_obfuscation/database.rb +8 -0
- data/lib/db_obfuscation/environment.rb +14 -0
- data/lib/db_obfuscation/filtering.rb +56 -0
- data/lib/db_obfuscation/filtering/column.rb +40 -0
- data/lib/db_obfuscation/filtering/truncation.rb +18 -0
- data/lib/db_obfuscation/obfuscation_strategy.rb +22 -0
- data/lib/db_obfuscation/obfuscator.rb +65 -0
- data/lib/db_obfuscation/query_builder.rb +62 -0
- data/lib/db_obfuscation/truncation.rb +39 -0
- data/lib/db_obfuscation/util/trigger.rb +83 -0
- data/lib/db_obfuscation/version.rb +4 -0
- data/spec/cli/db_dump_spec.rb +33 -0
- data/spec/cli/migrator_spec.rb +59 -0
- data/spec/cli/seeder_spec.rb +33 -0
- data/spec/config/database.yml +5 -0
- data/spec/config/table_strategies/table_1.yml +3 -0
- data/spec/config/table_strategies/table_2.yml +4 -0
- data/spec/config/table_strategies/truncation_table_1.yml +3 -0
- data/spec/config/table_strategies/whitelisted_table_1.yml +3 -0
- data/spec/config/truncation_patterns.yml +2 -0
- data/spec/config/whitelisted_tables.yml +1 -0
- data/spec/db_obfuscation/batch_formulator_spec.rb +36 -0
- data/spec/db_obfuscation/config_spec.rb +60 -0
- data/spec/db_obfuscation/database_spec.rb +10 -0
- data/spec/db_obfuscation/filtering/column_spec.rb +82 -0
- data/spec/db_obfuscation/filtering/truncation_spec.rb +41 -0
- data/spec/db_obfuscation/filtering_spec.rb +39 -0
- data/spec/db_obfuscation/obfuscation_strategy_spec.rb +43 -0
- data/spec/db_obfuscation/obfuscator_spec.rb +150 -0
- data/spec/db_obfuscation/query_builder_spec.rb +259 -0
- data/spec/db_obfuscation/truncation_spec.rb +31 -0
- data/spec/db_obfuscation/util/trigger_spec.rb +126 -0
- data/spec/integration/obfuscation_spec.rb +69 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/test_db_setup/migrations/1_add_table_1.rb +18 -0
- data/spec/test_db_setup/migrations/2_add_table_2.rb +19 -0
- data/spec/test_db_setup/migrations/3_add_truncation_table_1.rb +14 -0
- data/spec/test_db_setup/migrations/4_add_whitelisted_table_1.rb +14 -0
- data/spec/test_db_setup/migrations/5_add_table_without_any_user_defined_obfuscation_strategies.rb +18 -0
- data/spec/test_db_setup/migrations/6_add_table_without_any_obfuscatable_columns.rb +15 -0
- data/spec/test_db_setup/migrations/7_add_audit_truncation_table.rb +13 -0
- data/spec/test_db_setup/seeds/audit_truncation_table.yml +7 -0
- data/spec/test_db_setup/seeds/table_1.yml +13 -0
- data/spec/test_db_setup/seeds/table_2.yml +15 -0
- data/spec/test_db_setup/seeds/table_without_any_obfuscatable_columns.yml +7 -0
- data/spec/test_db_setup/seeds/table_without_any_user_defined_obfuscation_strategies.yml +13 -0
- data/spec/test_db_setup/seeds/truncation_table_1.yml +9 -0
- data/spec/test_db_setup/seeds/whitelisted_table_1.yml +9 -0
- metadata +159 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'db_obfuscation/truncation'
|
3
|
+
|
4
|
+
module DbObfuscation
|
5
|
+
describe Truncation do
|
6
|
+
describe '.truncate' do
|
7
|
+
around(:each) do |example|
|
8
|
+
DB.transaction(rollback: :always) do
|
9
|
+
example.run
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'truncates tables that match the user specified truncation patterns' do
|
14
|
+
expect(DB[:truncation_table_1].all.count).to be > 0
|
15
|
+
expect(DB[:audit_truncation_table].all.count).to be > 0
|
16
|
+
described_class.truncate
|
17
|
+
|
18
|
+
expect(DB[:truncation_table_1].all.count).to eq 0
|
19
|
+
expect(DB[:audit_truncation_table].all.count).to eq 0
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.tables' do
|
25
|
+
it 'returns the list of truncation tables' do
|
26
|
+
expect(described_class.tables).to match_array [:truncation_table_1,
|
27
|
+
:audit_truncation_table]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'db_obfuscation/util/trigger'
|
3
|
+
|
4
|
+
def create_trigger_function
|
5
|
+
DbObfuscation::DB.run <<-sql
|
6
|
+
create or replace function fake_function() returns trigger
|
7
|
+
as $$ begin end $$ language plpgsql;
|
8
|
+
sql
|
9
|
+
end
|
10
|
+
|
11
|
+
def drop_trigger_function
|
12
|
+
DbObfuscation::DB.run <<-sql
|
13
|
+
drop function fake_function()
|
14
|
+
sql
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_trigger(table_name)
|
18
|
+
create_trigger_function
|
19
|
+
|
20
|
+
<<-sql
|
21
|
+
CREATE TRIGGER audit_#{table_name}
|
22
|
+
AFTER UPDATE ON #{table_name}
|
23
|
+
FOR EACH ROW
|
24
|
+
EXECUTE PROCEDURE fake_function();
|
25
|
+
sql
|
26
|
+
end
|
27
|
+
|
28
|
+
def drop_trigger(table_name)
|
29
|
+
DbObfuscation::DB.run <<-sql
|
30
|
+
DROP TRIGGER audit_#{table_name}
|
31
|
+
ON #{table_name}
|
32
|
+
sql
|
33
|
+
|
34
|
+
drop_trigger_function
|
35
|
+
end
|
36
|
+
|
37
|
+
def trigger_status
|
38
|
+
<<-sql
|
39
|
+
SELECT triggers.tgenabled as status,
|
40
|
+
tables.relname as table_name
|
41
|
+
FROM pg_trigger triggers, pg_class tables
|
42
|
+
WHERE triggers.tgrelid = tables.oid
|
43
|
+
AND tables.relname !~ '^pg_'
|
44
|
+
AND triggers.tgname LIKE 'audit_%'
|
45
|
+
sql
|
46
|
+
end
|
47
|
+
|
48
|
+
module DbObfuscation::Util
|
49
|
+
describe Trigger do
|
50
|
+
around(:each) do |example|
|
51
|
+
DbObfuscation::DB.run(create_trigger('table_1')) rescue nil
|
52
|
+
DbObfuscation::DB.run(create_trigger('table_2')) rescue nil
|
53
|
+
|
54
|
+
example.run
|
55
|
+
|
56
|
+
DbObfuscation::DB.run(drop_trigger('table_1')) rescue nil
|
57
|
+
DbObfuscation::DB.run(drop_trigger('table_2')) rescue nil
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'returns tables with triggers' do
|
61
|
+
tables_with_triggers = ['table_1', 'table_2']
|
62
|
+
expect(described_class.tables).to match_array(
|
63
|
+
tables_with_triggers
|
64
|
+
)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'drops all the triggers in the database' do
|
68
|
+
described_class.drop(:all)
|
69
|
+
expect(described_class.tables).to eq([])
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'drops triggers for given table' do
|
73
|
+
described_class.drop('table_1')
|
74
|
+
expect(described_class.tables).to eq(['table_2'])
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'disable trigger for given table' do
|
78
|
+
status = [
|
79
|
+
{ status: 'D', table_name: 'table_1' },
|
80
|
+
{ status: 'O', table_name: 'table_2' },
|
81
|
+
]
|
82
|
+
described_class.disable('table_1')
|
83
|
+
expect(DbObfuscation::DB[trigger_status].all).to match_array(status)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'disables triggers for all the tables' do
|
87
|
+
status = [
|
88
|
+
{ status: 'D', table_name: 'table_1' },
|
89
|
+
{ status: 'D', table_name: 'table_2' },
|
90
|
+
]
|
91
|
+
described_class.disable(:all)
|
92
|
+
expect(DbObfuscation::DB[trigger_status].all).to match_array(status)
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'enables trigger for given table' do
|
96
|
+
status = [
|
97
|
+
{ status: 'O', table_name: 'table_1' },
|
98
|
+
{ status: 'D', table_name: 'table_2' },
|
99
|
+
]
|
100
|
+
described_class.disable(:all)
|
101
|
+
described_class.enable('table_1')
|
102
|
+
expect(DbObfuscation::DB[trigger_status].all).to match_array(status)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'enables all the triggers' do
|
106
|
+
status = [
|
107
|
+
{ status: 'O', table_name: 'table_1' },
|
108
|
+
{ status: 'O', table_name: 'table_2' },
|
109
|
+
]
|
110
|
+
described_class.disable(:all)
|
111
|
+
described_class.enable(:all)
|
112
|
+
expect(DbObfuscation::DB[trigger_status].all).to match_array(status)
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '.trigger?' do
|
116
|
+
it 'returns true if table has a trigger' do
|
117
|
+
expect(described_class.exists?('table_1')).to eq true
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'returns false if table does not have a trigger' do
|
121
|
+
expect(described_class.exists?('whitelisted_table_1')).
|
122
|
+
to eq false
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'db_obfuscation'
|
3
|
+
require 'db_obfuscation/truncation'
|
4
|
+
|
5
|
+
describe 'DbObfuscation' do
|
6
|
+
around(:each) do |example|
|
7
|
+
DbObfuscation::DB.transaction(rollback: :always) do
|
8
|
+
example.run
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'replaces existing data columns with fake data' do
|
13
|
+
record = DbObfuscation::DB[:table_1].first
|
14
|
+
original_value = record[:field_1]
|
15
|
+
expect(original_value).to eq 'original_field_1_1'
|
16
|
+
|
17
|
+
DbObfuscation.obfuscate(100)
|
18
|
+
|
19
|
+
record = DbObfuscation::DB[:table_1].where(id: record[:id]).first
|
20
|
+
obfuscated_value = record[:field_1]
|
21
|
+
expect(obfuscated_value).to_not eq 'original_field_1_1'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'obfuscates date field when included in the config file' do
|
25
|
+
record = DbObfuscation::DB[:table_1].first
|
26
|
+
original_date = record[:date_field]
|
27
|
+
expect(original_date.to_s).to eq '2001-01-01'
|
28
|
+
|
29
|
+
DbObfuscation.obfuscate(100)
|
30
|
+
|
31
|
+
record = DbObfuscation::DB[:table_1].where(id: record[:id]).first
|
32
|
+
obfuscated_date = record[:date_field]
|
33
|
+
expect(obfuscated_date.to_s).to_not eq '2001-01-01'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'does not obfuscate whitelisted column for a table' do
|
37
|
+
record = DbObfuscation::DB[:table_2].first
|
38
|
+
original_value = record[:field_2]
|
39
|
+
expect(original_value).to eq 'original_field_2_1'
|
40
|
+
|
41
|
+
DbObfuscation.obfuscate(100)
|
42
|
+
|
43
|
+
record = DbObfuscation::DB[:table_2].where(id: record[:id]).first
|
44
|
+
obfuscated_value = record[:field_2]
|
45
|
+
expect(obfuscated_value).to eq 'original_field_2_1'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'does not obfuscate the whitelisted tables' do
|
49
|
+
record = DbObfuscation::DB[:whitelisted_table_1].first
|
50
|
+
original_value = record[:field_1]
|
51
|
+
expect(original_value).to eq 'whitelisted_field_1_1'
|
52
|
+
|
53
|
+
DbObfuscation.obfuscate(100)
|
54
|
+
|
55
|
+
record = DbObfuscation::DB[:whitelisted_table_1].where(id: record[:id]).first
|
56
|
+
obfuscated_value = record[:field_1]
|
57
|
+
expect(obfuscated_value).to eq 'whitelisted_field_1_1'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'truncates the truncation table list' do
|
61
|
+
original_data_count = DbObfuscation::DB[:truncation_table_1].count
|
62
|
+
expect(original_data_count).to be > 0
|
63
|
+
|
64
|
+
DbObfuscation::Truncation.truncate
|
65
|
+
|
66
|
+
new_data_count = DbObfuscation::DB[:truncation_table_1].count
|
67
|
+
expect(new_data_count).to eq 0
|
68
|
+
end
|
69
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:table_1) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
String :field_1
|
6
|
+
String :field_2
|
7
|
+
Date :date_field
|
8
|
+
DateTime :created_at
|
9
|
+
DateTime :updated_at
|
10
|
+
TrueClass :boolean_field
|
11
|
+
Bignum :integer_field
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
down do
|
16
|
+
drop_table(:table_1)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:table_2) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
String :field_1
|
6
|
+
String :field_2
|
7
|
+
Date :date_field
|
8
|
+
DateTime :created_at
|
9
|
+
DateTime :updated_at
|
10
|
+
TrueClass :boolean_field
|
11
|
+
Bignum :integer_field
|
12
|
+
foreign_key :table_1_id, :table_1, type: Bignum, key: :id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
down do
|
17
|
+
drop_table(:table_2)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:truncation_table_1) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
String :field_1
|
6
|
+
String :field_2
|
7
|
+
foreign_key :table_1_id, :table_1, type: Bignum, key: :id
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
down do
|
12
|
+
drop_table(:truncation_table_1)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:whitelisted_table_1) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
String :field_1
|
6
|
+
String :field_2
|
7
|
+
foreign_key :table_1_id, :table_1, type: Bignum, key: :id
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
down do
|
12
|
+
drop_table(:whitelisted_table_1)
|
13
|
+
end
|
14
|
+
end
|
data/spec/test_db_setup/migrations/5_add_table_without_any_user_defined_obfuscation_strategies.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:table_without_any_user_defined_obfuscation_strategies) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
String :field_1
|
6
|
+
String :field_2
|
7
|
+
Date :date_field
|
8
|
+
DateTime :created_at
|
9
|
+
DateTime :updated_at
|
10
|
+
TrueClass :boolean_field
|
11
|
+
Bignum :integer_field
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
down do
|
16
|
+
drop_table(:table_without_any_user_defined_obfuscation_strategies)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table(:table_without_any_obfuscatable_columns) do
|
4
|
+
primary_key :id, type: Bignum
|
5
|
+
DateTime :created_at
|
6
|
+
DateTime :updated_at
|
7
|
+
TrueClass :boolean_field
|
8
|
+
Bignum :integer_field
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
down do
|
13
|
+
drop_table(:table_without_any_obfuscatable_columns)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
row1:
|
2
|
+
field_1: 'original_field_1_1'
|
3
|
+
field_2: 'original_field_2_1'
|
4
|
+
date_field: '1/1/2001'
|
5
|
+
boolean_field: true
|
6
|
+
integer_field: 21
|
7
|
+
|
8
|
+
row2:
|
9
|
+
field_1: 'original_field_1_2'
|
10
|
+
field_2: 'original_field_2_2'
|
11
|
+
date_field: '1/2/2001'
|
12
|
+
boolean_field: false
|
13
|
+
integer_field: 22
|
@@ -0,0 +1,15 @@
|
|
1
|
+
row1:
|
2
|
+
field_1: 'original_field_1_1'
|
3
|
+
field_2: 'original_field_2_1'
|
4
|
+
date_field: '1/1/2001'
|
5
|
+
boolean_field: true
|
6
|
+
integer_field: 21
|
7
|
+
table_1_id: 1
|
8
|
+
|
9
|
+
row2:
|
10
|
+
field_1: 'original_field_1_2'
|
11
|
+
field_2: 'original_field_2_2'
|
12
|
+
date_field: '1/2/2001'
|
13
|
+
boolean_field: false
|
14
|
+
integer_field: 22
|
15
|
+
table_1_id: 2
|
@@ -0,0 +1,13 @@
|
|
1
|
+
row1:
|
2
|
+
field_1: 'original_field_1_1'
|
3
|
+
field_2: 'original_field_2_1'
|
4
|
+
date_field: '1/1/2001'
|
5
|
+
boolean_field: true
|
6
|
+
integer_field: 21
|
7
|
+
|
8
|
+
row2:
|
9
|
+
field_1: 'original_field_1_2'
|
10
|
+
field_2: 'original_field_2_2'
|
11
|
+
date_field: '1/2/2001'
|
12
|
+
boolean_field: false
|
13
|
+
integer_field: 22
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: db_obfuscation
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Case Commons, LLC
|
8
|
+
- Rajat Agrawal
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-07-21 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: |2
|
15
|
+
db_obfuscation is a gem that helps to prepare a production size obfuscated database. This obfuscated database can be used for internal testing purposes like user acceptance testing, QA/Regression testing. db_obfuscation takes a production database and updates data in every row in each table with fake data. db_obfuscation ensures that associations between different tables are still maintained.
|
16
|
+
email:
|
17
|
+
- casebook-dev@googlegroups.com
|
18
|
+
- agrawal.rajat.89@gmail.com
|
19
|
+
executables:
|
20
|
+
- db_obfuscation
|
21
|
+
extensions: []
|
22
|
+
extra_rdoc_files: []
|
23
|
+
files:
|
24
|
+
- ".gitignore"
|
25
|
+
- Gemfile
|
26
|
+
- Gemfile.lock
|
27
|
+
- LICENSE
|
28
|
+
- README.md
|
29
|
+
- TODO
|
30
|
+
- bin/console
|
31
|
+
- bin/db_obfuscation
|
32
|
+
- bin/obfuscation_test
|
33
|
+
- cli/db_dump.rb
|
34
|
+
- cli/migrator.rb
|
35
|
+
- cli/seeder.rb
|
36
|
+
- db_obfuscation.gemspec
|
37
|
+
- features/bin/dump.feature
|
38
|
+
- features/bin/obfuscation.feature
|
39
|
+
- features/bin/test_database_tasks.feature
|
40
|
+
- features/support.rb
|
41
|
+
- lib/db_obfuscation.rb
|
42
|
+
- lib/db_obfuscation/batch_formulator.rb
|
43
|
+
- lib/db_obfuscation/config.rb
|
44
|
+
- lib/db_obfuscation/database.rb
|
45
|
+
- lib/db_obfuscation/environment.rb
|
46
|
+
- lib/db_obfuscation/filtering.rb
|
47
|
+
- lib/db_obfuscation/filtering/column.rb
|
48
|
+
- lib/db_obfuscation/filtering/truncation.rb
|
49
|
+
- lib/db_obfuscation/obfuscation_strategy.rb
|
50
|
+
- lib/db_obfuscation/obfuscator.rb
|
51
|
+
- lib/db_obfuscation/query_builder.rb
|
52
|
+
- lib/db_obfuscation/truncation.rb
|
53
|
+
- lib/db_obfuscation/util/trigger.rb
|
54
|
+
- lib/db_obfuscation/version.rb
|
55
|
+
- spec/cli/db_dump_spec.rb
|
56
|
+
- spec/cli/migrator_spec.rb
|
57
|
+
- spec/cli/seeder_spec.rb
|
58
|
+
- spec/config/database.yml
|
59
|
+
- spec/config/table_strategies/table_1.yml
|
60
|
+
- spec/config/table_strategies/table_2.yml
|
61
|
+
- spec/config/table_strategies/truncation_table_1.yml
|
62
|
+
- spec/config/table_strategies/whitelisted_table_1.yml
|
63
|
+
- spec/config/truncation_patterns.yml
|
64
|
+
- spec/config/whitelisted_tables.yml
|
65
|
+
- spec/db_obfuscation/batch_formulator_spec.rb
|
66
|
+
- spec/db_obfuscation/config_spec.rb
|
67
|
+
- spec/db_obfuscation/database_spec.rb
|
68
|
+
- spec/db_obfuscation/filtering/column_spec.rb
|
69
|
+
- spec/db_obfuscation/filtering/truncation_spec.rb
|
70
|
+
- spec/db_obfuscation/filtering_spec.rb
|
71
|
+
- spec/db_obfuscation/obfuscation_strategy_spec.rb
|
72
|
+
- spec/db_obfuscation/obfuscator_spec.rb
|
73
|
+
- spec/db_obfuscation/query_builder_spec.rb
|
74
|
+
- spec/db_obfuscation/truncation_spec.rb
|
75
|
+
- spec/db_obfuscation/util/trigger_spec.rb
|
76
|
+
- spec/integration/obfuscation_spec.rb
|
77
|
+
- spec/spec_helper.rb
|
78
|
+
- spec/test_db_setup/migrations/1_add_table_1.rb
|
79
|
+
- spec/test_db_setup/migrations/2_add_table_2.rb
|
80
|
+
- spec/test_db_setup/migrations/3_add_truncation_table_1.rb
|
81
|
+
- spec/test_db_setup/migrations/4_add_whitelisted_table_1.rb
|
82
|
+
- spec/test_db_setup/migrations/5_add_table_without_any_user_defined_obfuscation_strategies.rb
|
83
|
+
- spec/test_db_setup/migrations/6_add_table_without_any_obfuscatable_columns.rb
|
84
|
+
- spec/test_db_setup/migrations/7_add_audit_truncation_table.rb
|
85
|
+
- spec/test_db_setup/seeds/audit_truncation_table.yml
|
86
|
+
- spec/test_db_setup/seeds/table_1.yml
|
87
|
+
- spec/test_db_setup/seeds/table_2.yml
|
88
|
+
- spec/test_db_setup/seeds/table_without_any_obfuscatable_columns.yml
|
89
|
+
- spec/test_db_setup/seeds/table_without_any_user_defined_obfuscation_strategies.yml
|
90
|
+
- spec/test_db_setup/seeds/truncation_table_1.yml
|
91
|
+
- spec/test_db_setup/seeds/whitelisted_table_1.yml
|
92
|
+
homepage: https://github.com/CaseCommonsDevOps/db_obfuscation
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.4.2
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: A gem to obfuscate a production database with fake values for testing with
|
116
|
+
a production size database
|
117
|
+
test_files:
|
118
|
+
- features/bin/dump.feature
|
119
|
+
- features/bin/obfuscation.feature
|
120
|
+
- features/bin/test_database_tasks.feature
|
121
|
+
- features/support.rb
|
122
|
+
- spec/cli/db_dump_spec.rb
|
123
|
+
- spec/cli/migrator_spec.rb
|
124
|
+
- spec/cli/seeder_spec.rb
|
125
|
+
- spec/config/database.yml
|
126
|
+
- spec/config/table_strategies/table_1.yml
|
127
|
+
- spec/config/table_strategies/table_2.yml
|
128
|
+
- spec/config/table_strategies/truncation_table_1.yml
|
129
|
+
- spec/config/table_strategies/whitelisted_table_1.yml
|
130
|
+
- spec/config/truncation_patterns.yml
|
131
|
+
- spec/config/whitelisted_tables.yml
|
132
|
+
- spec/db_obfuscation/batch_formulator_spec.rb
|
133
|
+
- spec/db_obfuscation/config_spec.rb
|
134
|
+
- spec/db_obfuscation/database_spec.rb
|
135
|
+
- spec/db_obfuscation/filtering/column_spec.rb
|
136
|
+
- spec/db_obfuscation/filtering/truncation_spec.rb
|
137
|
+
- spec/db_obfuscation/filtering_spec.rb
|
138
|
+
- spec/db_obfuscation/obfuscation_strategy_spec.rb
|
139
|
+
- spec/db_obfuscation/obfuscator_spec.rb
|
140
|
+
- spec/db_obfuscation/query_builder_spec.rb
|
141
|
+
- spec/db_obfuscation/truncation_spec.rb
|
142
|
+
- spec/db_obfuscation/util/trigger_spec.rb
|
143
|
+
- spec/integration/obfuscation_spec.rb
|
144
|
+
- spec/spec_helper.rb
|
145
|
+
- spec/test_db_setup/migrations/1_add_table_1.rb
|
146
|
+
- spec/test_db_setup/migrations/2_add_table_2.rb
|
147
|
+
- spec/test_db_setup/migrations/3_add_truncation_table_1.rb
|
148
|
+
- spec/test_db_setup/migrations/4_add_whitelisted_table_1.rb
|
149
|
+
- spec/test_db_setup/migrations/5_add_table_without_any_user_defined_obfuscation_strategies.rb
|
150
|
+
- spec/test_db_setup/migrations/6_add_table_without_any_obfuscatable_columns.rb
|
151
|
+
- spec/test_db_setup/migrations/7_add_audit_truncation_table.rb
|
152
|
+
- spec/test_db_setup/seeds/audit_truncation_table.yml
|
153
|
+
- spec/test_db_setup/seeds/table_1.yml
|
154
|
+
- spec/test_db_setup/seeds/table_2.yml
|
155
|
+
- spec/test_db_setup/seeds/table_without_any_obfuscatable_columns.yml
|
156
|
+
- spec/test_db_setup/seeds/table_without_any_user_defined_obfuscation_strategies.yml
|
157
|
+
- spec/test_db_setup/seeds/truncation_table_1.yml
|
158
|
+
- spec/test_db_setup/seeds/whitelisted_table_1.yml
|
159
|
+
has_rdoc:
|