attr_redactor 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +19 -0
- data/attr_redactor.gemspec +1 -1
- data/lib/attr_redactor/version.rb +1 -1
- data/test/attr_redactor_test.rb +43 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8f5402fd6e0a62adeed50b6326b8c5a890cfee8
|
4
|
+
data.tar.gz: e2023832b6878e36199642220921e6270107e056
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a48ee64c229713ef201046b9d50ee1b2e6e7caa0508acfb1a37810dd230423758d6b5c5751d956a183d90bef70e8c74ee8295817df9fe8cfcbe52fd7fbb6f367
|
7
|
+
data.tar.gz: b4e5f13e0925b34f1a4dfef7a32b0eee28eebdefa6771efcacb41a8233e858d4ede3143c799555677479be0d67fcf60bdfff98c94631405e9934e2b77a0663ba
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# attr_redactor #
|
2
2
|
|
3
|
+
##0.3.0 ##
|
4
|
+
* Changed: Version bump hash_redactor for string values for redact (@chrisjensen)
|
5
|
+
|
6
|
+
##0.2.1 ##
|
7
|
+
* Added: Explicit tests and documentation for using proc/lambda/method for redact (@chrisjensen)
|
8
|
+
|
3
9
|
##0.2.0 ##
|
4
10
|
* Fixed: Updated hash_redactor dependency for failure on encrypting nil (@chrisjensen)
|
5
11
|
|
data/README.md
CHANGED
@@ -90,6 +90,25 @@ To ensure ActiveRecord saves changed data, you should always update the hash ent
|
|
90
90
|
user.user_data[:email] # 'personal@email.com'
|
91
91
|
```
|
92
92
|
|
93
|
+
### Using a dynamic redact hash
|
94
|
+
The value of redact can be a symbol, lambda or proc. If it's a symbol, that method will be called on the object itself. This allows you to create custom redact hashes on a per record basis.
|
95
|
+
|
96
|
+
```
|
97
|
+
class User < ActiveRecord::Base
|
98
|
+
belongs_to :company
|
99
|
+
attr_redactor :user_data, :redact => :redact_hash
|
100
|
+
|
101
|
+
def redact_hash
|
102
|
+
company.redact_settings
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
user = User.new user_data: { ssn: '123-45-6789', email: 'personal@email.com' }
|
107
|
+
|
108
|
+
# What get's redacted in user_data depends on the company settings for that user
|
109
|
+
```
|
110
|
+
|
111
|
+
|
93
112
|
### attr_redacted with database persistence
|
94
113
|
|
95
114
|
By default, `attr_redacted` stores the redacted data in `:redacted_<attribute>`.
|
data/attr_redactor.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.required_ruby_version = '>= 2.0.0'
|
30
30
|
|
31
|
-
s.add_dependency('hash_redactor', ['~> 0.
|
31
|
+
s.add_dependency('hash_redactor', ['~> 0.4.0'])
|
32
32
|
# support for testing with specific active record version
|
33
33
|
activerecord_version = if ENV.key?('ACTIVERECORD')
|
34
34
|
"~> #{ENV['ACTIVERECORD']}"
|
data/test/attr_redactor_test.rb
CHANGED
@@ -63,6 +63,16 @@ class AlternativeClass
|
|
63
63
|
attr_redactor :secret
|
64
64
|
end
|
65
65
|
|
66
|
+
class Post
|
67
|
+
extend AttrRedactor
|
68
|
+
|
69
|
+
attr_redactor :post_info, :redact => :redact_hash,
|
70
|
+
encryption_key: 'encryption_key is super long and unguessable',
|
71
|
+
digest_salt: 'pink himalayan'
|
72
|
+
|
73
|
+
attr_accessor :redact_hash
|
74
|
+
end
|
75
|
+
|
66
76
|
class SubClass < AlternativeClass
|
67
77
|
attr_redactor :testing
|
68
78
|
end
|
@@ -80,8 +90,6 @@ class AttrRedactorTest < Minitest::Test
|
|
80
90
|
@iv = SecureRandom.random_bytes(12)
|
81
91
|
end
|
82
92
|
|
83
|
-
i_suck_and_my_tests_are_order_dependent!
|
84
|
-
|
85
93
|
def data_to_redact
|
86
94
|
{
|
87
95
|
:ssn => 'my secret ssn',
|
@@ -275,4 +283,37 @@ class AttrRedactorTest < Minitest::Test
|
|
275
283
|
@user.data = data_to_redact
|
276
284
|
assert_equal unredacted_data, @user.data
|
277
285
|
end
|
286
|
+
|
287
|
+
def test_redact_hash_from_function
|
288
|
+
post_data = { :followers => 'macy, george', :critics => 'Barbados Glum',
|
289
|
+
:bio => 'A strange, quiet man' }
|
290
|
+
|
291
|
+
redact_hash1 = {
|
292
|
+
:followers => :remove,
|
293
|
+
:critics => :encrypt,
|
294
|
+
:bio => :digest
|
295
|
+
}
|
296
|
+
|
297
|
+
redact_hash2 = {
|
298
|
+
:followers => :keep,
|
299
|
+
:critics => :digest,
|
300
|
+
:bio => :encrypt
|
301
|
+
}
|
302
|
+
|
303
|
+
post = Post.new
|
304
|
+
post.redact_hash = redact_hash1
|
305
|
+
post.post_info = post_data
|
306
|
+
|
307
|
+
post2 = Post.new
|
308
|
+
post2.redact_hash = redact_hash2
|
309
|
+
post2.post_info = post_data
|
310
|
+
|
311
|
+
refute post.redacted_post_info.has_key? :followers
|
312
|
+
assert post.redacted_post_info.has_key? :encrypted_critics
|
313
|
+
assert post.redacted_post_info.has_key? :bio_digest
|
314
|
+
|
315
|
+
assert post2.redacted_post_info.has_key? :followers
|
316
|
+
assert post2.redacted_post_info.has_key? :critics_digest
|
317
|
+
assert post2.redacted_post_info.has_key? :encrypted_bio
|
318
|
+
end
|
278
319
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attr_redactor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Jensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hash_redactor
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|