attr_encrypted 1.3.4 → 1.4.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 +7 -0
- data/README.rdoc +1 -1
- data/lib/attr_encrypted/adapters/active_record.rb +19 -2
- data/lib/attr_encrypted/version.rb +2 -2
- data/test/active_record_test.rb +15 -0
- data/test/test_helper.rb +2 -4
- metadata +49 -64
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 8be516fee846217b6cc95a706bc87bbc267f7d71
|
|
4
|
+
data.tar.gz: f72d166a492c0efc4a7fd2a84b863fb3b4ea8d5a
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: ed046ac7c9e40406f871e00e3e95821002605b62022d556b8ac5dcc5a7ce9f06e38925b6a1849e1dfb3ee7a4666ce2a2e15e1130f20f53eb246017fcb362dbd3
|
|
7
|
+
data.tar.gz: c27e6b6c8b4644a8daf02c4fc50f607878dac6a3a86e71181e28f3a78c71da5b7abed88094b61ac6fa9a558a08934d572b5a7169830c93592deabfd79c285512
|
data/README.rdoc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
= attr_encrypted {<img src="https://travis-ci.org/attr-encrypted/attr_encrypted.png" />}[https://travis-ci.org/attr-encrypted/attr_encrypted]
|
|
1
|
+
= attr_encrypted {<img src="https://travis-ci.org/attr-encrypted/attr_encrypted.png" />}[https://travis-ci.org/attr-encrypted/attr_encrypted]
|
|
2
2
|
|
|
3
3
|
Generates attr_accessors that encrypt and decrypt attributes transparently
|
|
4
4
|
|
|
@@ -16,6 +16,7 @@ if defined?(ActiveRecord::Base)
|
|
|
16
16
|
alias_method_chain :reload, :attr_encrypted
|
|
17
17
|
|
|
18
18
|
attr_encrypted_options[:encode] = true
|
|
19
|
+
|
|
19
20
|
class << self
|
|
20
21
|
alias_method :attr_encryptor, :attr_encrypted
|
|
21
22
|
alias_method_chain :method_missing, :attr_encrypted
|
|
@@ -49,14 +50,30 @@ if defined?(ActiveRecord::Base)
|
|
|
49
50
|
# <tt>attr_encrypted</tt> method
|
|
50
51
|
def attr_encrypted(*attrs)
|
|
51
52
|
super
|
|
52
|
-
|
|
53
|
+
options = attrs.extract_options!
|
|
54
|
+
attr = attrs.pop
|
|
55
|
+
options.merge! encrypted_attributes[attr]
|
|
56
|
+
|
|
57
|
+
define_method("#{attr}_changed?") do
|
|
58
|
+
send(attr) != decrypt(attr, send("#{options[:attribute]}_was"))
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
define_method("#{attr}_was") do
|
|
62
|
+
decrypt(attr, send("#{options[:attribute]}_was")) if send("#{attr}_changed?")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
alias_method "#{attr}_before_type_cast", attr
|
|
53
66
|
end
|
|
54
67
|
|
|
55
68
|
def attribute_instance_methods_as_symbols
|
|
56
69
|
# We add accessor methods of the db columns to the list of instance
|
|
57
70
|
# methods returned to let ActiveRecord define the accessor methods
|
|
58
71
|
# for the db columns
|
|
59
|
-
|
|
72
|
+
|
|
73
|
+
# Use with_connection so the connection doesn't stay pinned to the thread.
|
|
74
|
+
connected = ::ActiveRecord::Base.connection_pool.with_connection(&:active?) rescue false
|
|
75
|
+
|
|
76
|
+
if connected && table_exists?
|
|
60
77
|
columns_hash.keys.inject(super) {|instance_methods, column_name| instance_methods.concat [column_name.to_sym, :"#{column_name}="]}
|
|
61
78
|
else
|
|
62
79
|
super
|
data/test/active_record_test.rb
CHANGED
|
@@ -164,6 +164,21 @@ class ActiveRecordTest < Minitest::Test
|
|
|
164
164
|
assert_equal account.key, hash
|
|
165
165
|
end
|
|
166
166
|
|
|
167
|
+
def test_should_create_changed_predicate
|
|
168
|
+
person = Person.create!(:email => 'test@example.com')
|
|
169
|
+
assert !person.email_changed?
|
|
170
|
+
person.email = 'test2@example.com'
|
|
171
|
+
assert person.email_changed?
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def test_should_create_was_predicate
|
|
175
|
+
original_email = 'test@example.com'
|
|
176
|
+
person = Person.create!(:email => original_email)
|
|
177
|
+
assert !person.email_was
|
|
178
|
+
person.email = 'test2@example.com'
|
|
179
|
+
assert_equal person.email_was, original_email
|
|
180
|
+
end
|
|
181
|
+
|
|
167
182
|
if ::ActiveRecord::VERSION::STRING > "4.0"
|
|
168
183
|
def test_should_assign_attributes
|
|
169
184
|
@user = UserWithProtectedAttribute.new :login => 'login', :is_admin => false
|
data/test/test_helper.rb
CHANGED
|
@@ -12,10 +12,6 @@ if RUBY_VERSION >= '1.9.3'
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
require 'minitest'
|
|
16
|
-
require "codeclimate-test-reporter"
|
|
17
|
-
CodeClimate::TestReporter.start
|
|
18
|
-
|
|
19
15
|
require 'minitest/autorun'
|
|
20
16
|
require 'digest/sha2'
|
|
21
17
|
require 'rubygems'
|
|
@@ -31,6 +27,8 @@ require 'attr_encrypted'
|
|
|
31
27
|
|
|
32
28
|
puts "\nTesting with ActiveRecord #{ActiveRecord::VERSION::STRING rescue ENV['ACTIVE_RECORD_VERSION']}"
|
|
33
29
|
|
|
30
|
+
Minitest::Test = Minitest::Unit::TestCase if ActiveRecord::VERSION::STRING >= '4.0.0'
|
|
31
|
+
|
|
34
32
|
DB = Sequel.sqlite
|
|
35
33
|
|
|
36
34
|
# The :after_initialize hook was removed in Sequel 4.0
|
metadata
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: attr_encrypted
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.4.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Sean Huber
|
|
@@ -12,140 +11,137 @@ authors:
|
|
|
12
11
|
autorequire:
|
|
13
12
|
bindir: bin
|
|
14
13
|
cert_chain: []
|
|
15
|
-
date:
|
|
14
|
+
date: 2016-02-23 00:00:00.000000000 Z
|
|
16
15
|
dependencies:
|
|
17
16
|
- !ruby/object:Gem::Dependency
|
|
18
17
|
name: encryptor
|
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
|
20
|
-
none: false
|
|
21
19
|
requirements:
|
|
22
|
-
- -
|
|
20
|
+
- - "~>"
|
|
23
21
|
- !ruby/object:Gem::Version
|
|
24
22
|
version: 1.3.0
|
|
25
23
|
type: :runtime
|
|
26
24
|
prerelease: false
|
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
28
|
-
none: false
|
|
29
26
|
requirements:
|
|
30
|
-
- -
|
|
27
|
+
- - "~>"
|
|
31
28
|
- !ruby/object:Gem::Version
|
|
32
29
|
version: 1.3.0
|
|
33
30
|
- !ruby/object:Gem::Dependency
|
|
34
31
|
name: activerecord
|
|
35
32
|
requirement: !ruby/object:Gem::Requirement
|
|
36
|
-
none: false
|
|
37
33
|
requirements:
|
|
38
|
-
- -
|
|
34
|
+
- - ">="
|
|
39
35
|
- !ruby/object:Gem::Version
|
|
40
36
|
version: 2.0.0
|
|
41
37
|
type: :development
|
|
42
38
|
prerelease: false
|
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
44
|
-
none: false
|
|
45
40
|
requirements:
|
|
46
|
-
- -
|
|
41
|
+
- - ">="
|
|
47
42
|
- !ruby/object:Gem::Version
|
|
48
43
|
version: 2.0.0
|
|
49
44
|
- !ruby/object:Gem::Dependency
|
|
50
45
|
name: minitest
|
|
51
46
|
requirement: !ruby/object:Gem::Requirement
|
|
52
|
-
none: false
|
|
53
47
|
requirements:
|
|
54
|
-
- -
|
|
48
|
+
- - ">="
|
|
55
49
|
- !ruby/object:Gem::Version
|
|
56
50
|
version: '0'
|
|
57
51
|
type: :development
|
|
58
52
|
prerelease: false
|
|
59
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
|
-
none: false
|
|
61
54
|
requirements:
|
|
62
|
-
- -
|
|
55
|
+
- - ">="
|
|
63
56
|
- !ruby/object:Gem::Version
|
|
64
57
|
version: '0'
|
|
65
58
|
- !ruby/object:Gem::Dependency
|
|
66
59
|
name: datamapper
|
|
67
60
|
requirement: !ruby/object:Gem::Requirement
|
|
68
|
-
none: false
|
|
69
61
|
requirements:
|
|
70
|
-
- -
|
|
62
|
+
- - ">="
|
|
71
63
|
- !ruby/object:Gem::Version
|
|
72
64
|
version: '0'
|
|
73
65
|
type: :development
|
|
74
66
|
prerelease: false
|
|
75
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
76
|
-
none: false
|
|
77
68
|
requirements:
|
|
78
|
-
- -
|
|
69
|
+
- - ">="
|
|
79
70
|
- !ruby/object:Gem::Version
|
|
80
71
|
version: '0'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: addressable
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - '='
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: 2.3.7
|
|
79
|
+
type: :development
|
|
80
|
+
prerelease: false
|
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - '='
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: 2.3.7
|
|
81
86
|
- !ruby/object:Gem::Dependency
|
|
82
87
|
name: mocha
|
|
83
88
|
requirement: !ruby/object:Gem::Requirement
|
|
84
|
-
none: false
|
|
85
89
|
requirements:
|
|
86
|
-
- - ~>
|
|
90
|
+
- - "~>"
|
|
87
91
|
- !ruby/object:Gem::Version
|
|
88
92
|
version: 1.0.0
|
|
89
93
|
type: :development
|
|
90
94
|
prerelease: false
|
|
91
95
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
-
none: false
|
|
93
96
|
requirements:
|
|
94
|
-
- - ~>
|
|
97
|
+
- - "~>"
|
|
95
98
|
- !ruby/object:Gem::Version
|
|
96
99
|
version: 1.0.0
|
|
97
100
|
- !ruby/object:Gem::Dependency
|
|
98
101
|
name: sequel
|
|
99
102
|
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
none: false
|
|
101
103
|
requirements:
|
|
102
|
-
- -
|
|
104
|
+
- - ">="
|
|
103
105
|
- !ruby/object:Gem::Version
|
|
104
106
|
version: '0'
|
|
105
107
|
type: :development
|
|
106
108
|
prerelease: false
|
|
107
109
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
-
none: false
|
|
109
110
|
requirements:
|
|
110
|
-
- -
|
|
111
|
+
- - ">="
|
|
111
112
|
- !ruby/object:Gem::Version
|
|
112
113
|
version: '0'
|
|
113
114
|
- !ruby/object:Gem::Dependency
|
|
114
115
|
name: sqlite3
|
|
115
116
|
requirement: !ruby/object:Gem::Requirement
|
|
116
|
-
none: false
|
|
117
117
|
requirements:
|
|
118
|
-
- -
|
|
118
|
+
- - ">="
|
|
119
119
|
- !ruby/object:Gem::Version
|
|
120
120
|
version: '0'
|
|
121
121
|
type: :development
|
|
122
122
|
prerelease: false
|
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
|
124
|
-
none: false
|
|
125
124
|
requirements:
|
|
126
|
-
- -
|
|
125
|
+
- - ">="
|
|
127
126
|
- !ruby/object:Gem::Version
|
|
128
127
|
version: '0'
|
|
129
128
|
- !ruby/object:Gem::Dependency
|
|
130
129
|
name: dm-sqlite-adapter
|
|
131
130
|
requirement: !ruby/object:Gem::Requirement
|
|
132
|
-
none: false
|
|
133
131
|
requirements:
|
|
134
|
-
- -
|
|
132
|
+
- - ">="
|
|
135
133
|
- !ruby/object:Gem::Version
|
|
136
134
|
version: '0'
|
|
137
135
|
type: :development
|
|
138
136
|
prerelease: false
|
|
139
137
|
version_requirements: !ruby/object:Gem::Requirement
|
|
140
|
-
none: false
|
|
141
138
|
requirements:
|
|
142
|
-
- -
|
|
139
|
+
- - ">="
|
|
143
140
|
- !ruby/object:Gem::Version
|
|
144
141
|
version: '0'
|
|
145
142
|
- !ruby/object:Gem::Dependency
|
|
146
143
|
name: rake
|
|
147
144
|
requirement: !ruby/object:Gem::Requirement
|
|
148
|
-
none: false
|
|
149
145
|
requirements:
|
|
150
146
|
- - '='
|
|
151
147
|
- !ruby/object:Gem::Version
|
|
@@ -153,7 +149,6 @@ dependencies:
|
|
|
153
149
|
type: :development
|
|
154
150
|
prerelease: false
|
|
155
151
|
version_requirements: !ruby/object:Gem::Requirement
|
|
156
|
-
none: false
|
|
157
152
|
requirements:
|
|
158
153
|
- - '='
|
|
159
154
|
- !ruby/object:Gem::Version
|
|
@@ -161,33 +156,29 @@ dependencies:
|
|
|
161
156
|
- !ruby/object:Gem::Dependency
|
|
162
157
|
name: simplecov
|
|
163
158
|
requirement: !ruby/object:Gem::Requirement
|
|
164
|
-
none: false
|
|
165
159
|
requirements:
|
|
166
|
-
- -
|
|
160
|
+
- - ">="
|
|
167
161
|
- !ruby/object:Gem::Version
|
|
168
162
|
version: '0'
|
|
169
163
|
type: :development
|
|
170
164
|
prerelease: false
|
|
171
165
|
version_requirements: !ruby/object:Gem::Requirement
|
|
172
|
-
none: false
|
|
173
166
|
requirements:
|
|
174
|
-
- -
|
|
167
|
+
- - ">="
|
|
175
168
|
- !ruby/object:Gem::Version
|
|
176
169
|
version: '0'
|
|
177
170
|
- !ruby/object:Gem::Dependency
|
|
178
171
|
name: simplecov-rcov
|
|
179
172
|
requirement: !ruby/object:Gem::Requirement
|
|
180
|
-
none: false
|
|
181
173
|
requirements:
|
|
182
|
-
- -
|
|
174
|
+
- - ">="
|
|
183
175
|
- !ruby/object:Gem::Version
|
|
184
176
|
version: '0'
|
|
185
177
|
type: :development
|
|
186
178
|
prerelease: false
|
|
187
179
|
version_requirements: !ruby/object:Gem::Requirement
|
|
188
|
-
none: false
|
|
189
180
|
requirements:
|
|
190
|
-
- -
|
|
181
|
+
- - ">="
|
|
191
182
|
- !ruby/object:Gem::Version
|
|
192
183
|
version: '0'
|
|
193
184
|
description: Generates attr_accessors that encrypt and decrypt attributes transparently
|
|
@@ -200,14 +191,14 @@ executables: []
|
|
|
200
191
|
extensions: []
|
|
201
192
|
extra_rdoc_files: []
|
|
202
193
|
files:
|
|
194
|
+
- MIT-LICENSE
|
|
195
|
+
- README.rdoc
|
|
196
|
+
- Rakefile
|
|
197
|
+
- lib/attr_encrypted.rb
|
|
203
198
|
- lib/attr_encrypted/adapters/active_record.rb
|
|
204
199
|
- lib/attr_encrypted/adapters/data_mapper.rb
|
|
205
200
|
- lib/attr_encrypted/adapters/sequel.rb
|
|
206
201
|
- lib/attr_encrypted/version.rb
|
|
207
|
-
- lib/attr_encrypted.rb
|
|
208
|
-
- MIT-LICENSE
|
|
209
|
-
- Rakefile
|
|
210
|
-
- README.rdoc
|
|
211
202
|
- test/active_record_test.rb
|
|
212
203
|
- test/attr_encrypted_test.rb
|
|
213
204
|
- test/compatibility_test.rb
|
|
@@ -222,37 +213,30 @@ files:
|
|
|
222
213
|
- test/test_helper.rb
|
|
223
214
|
homepage: http://github.com/attr-encrypted/attr_encrypted
|
|
224
215
|
licenses: []
|
|
216
|
+
metadata: {}
|
|
225
217
|
post_install_message:
|
|
226
218
|
rdoc_options:
|
|
227
|
-
- --line-numbers
|
|
228
|
-
- --inline-source
|
|
229
|
-
- --main
|
|
219
|
+
- "--line-numbers"
|
|
220
|
+
- "--inline-source"
|
|
221
|
+
- "--main"
|
|
230
222
|
- README.rdoc
|
|
231
223
|
require_paths:
|
|
232
224
|
- lib
|
|
233
225
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
234
|
-
none: false
|
|
235
226
|
requirements:
|
|
236
|
-
- -
|
|
227
|
+
- - ">="
|
|
237
228
|
- !ruby/object:Gem::Version
|
|
238
229
|
version: '0'
|
|
239
|
-
segments:
|
|
240
|
-
- 0
|
|
241
|
-
hash: -1997953751590493696
|
|
242
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
|
-
none: false
|
|
244
231
|
requirements:
|
|
245
|
-
- -
|
|
232
|
+
- - ">="
|
|
246
233
|
- !ruby/object:Gem::Version
|
|
247
234
|
version: '0'
|
|
248
|
-
segments:
|
|
249
|
-
- 0
|
|
250
|
-
hash: -1997953751590493696
|
|
251
235
|
requirements: []
|
|
252
236
|
rubyforge_project:
|
|
253
|
-
rubygems_version:
|
|
237
|
+
rubygems_version: 2.4.5.1
|
|
254
238
|
signing_key:
|
|
255
|
-
specification_version:
|
|
239
|
+
specification_version: 4
|
|
256
240
|
summary: Encrypt and decrypt attributes
|
|
257
241
|
test_files:
|
|
258
242
|
- test/active_record_test.rb
|
|
@@ -267,3 +251,4 @@ test_files:
|
|
|
267
251
|
- test/run.sh
|
|
268
252
|
- test/sequel_test.rb
|
|
269
253
|
- test/test_helper.rb
|
|
254
|
+
has_rdoc: false
|