attr_encrypted 1.3.5 → 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.
@@ -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
@@ -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,7 +50,19 @@ if defined?(ActiveRecord::Base)
49
50
  # <tt>attr_encrypted</tt> method
50
51
  def attr_encrypted(*attrs)
51
52
  super
52
- attrs.reject { |attr| attr.is_a?(Hash) }.each { |attr| alias_method "#{attr}_before_type_cast", attr }
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
@@ -2,8 +2,8 @@ module AttrEncrypted
2
2
  # Contains information about this gem's version
3
3
  module Version
4
4
  MAJOR = 1
5
- MINOR = 3
6
- PATCH = 5
5
+ MINOR = 4
6
+ PATCH = 0
7
7
 
8
8
  # Returns a version string by joining <tt>MAJOR</tt>, <tt>MINOR</tt>, and <tt>PATCH</tt> with <tt>'.'</tt>
9
9
  #
@@ -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
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.3.5
5
- prerelease:
4
+ version: 1.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Sean Huber
@@ -12,76 +11,67 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2016-01-12 00:00:00.000000000 Z
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'
81
72
  - !ruby/object:Gem::Dependency
82
73
  name: addressable
83
74
  requirement: !ruby/object:Gem::Requirement
84
- none: false
85
75
  requirements:
86
76
  - - '='
87
77
  - !ruby/object:Gem::Version
@@ -89,7 +79,6 @@ dependencies:
89
79
  type: :development
90
80
  prerelease: false
91
81
  version_requirements: !ruby/object:Gem::Requirement
92
- none: false
93
82
  requirements:
94
83
  - - '='
95
84
  - !ruby/object:Gem::Version
@@ -97,71 +86,62 @@ dependencies:
97
86
  - !ruby/object:Gem::Dependency
98
87
  name: mocha
99
88
  requirement: !ruby/object:Gem::Requirement
100
- none: false
101
89
  requirements:
102
- - - ~>
90
+ - - "~>"
103
91
  - !ruby/object:Gem::Version
104
92
  version: 1.0.0
105
93
  type: :development
106
94
  prerelease: false
107
95
  version_requirements: !ruby/object:Gem::Requirement
108
- none: false
109
96
  requirements:
110
- - - ~>
97
+ - - "~>"
111
98
  - !ruby/object:Gem::Version
112
99
  version: 1.0.0
113
100
  - !ruby/object:Gem::Dependency
114
101
  name: sequel
115
102
  requirement: !ruby/object:Gem::Requirement
116
- none: false
117
103
  requirements:
118
- - - ! '>='
104
+ - - ">="
119
105
  - !ruby/object:Gem::Version
120
106
  version: '0'
121
107
  type: :development
122
108
  prerelease: false
123
109
  version_requirements: !ruby/object:Gem::Requirement
124
- none: false
125
110
  requirements:
126
- - - ! '>='
111
+ - - ">="
127
112
  - !ruby/object:Gem::Version
128
113
  version: '0'
129
114
  - !ruby/object:Gem::Dependency
130
115
  name: sqlite3
131
116
  requirement: !ruby/object:Gem::Requirement
132
- none: false
133
117
  requirements:
134
- - - ! '>='
118
+ - - ">="
135
119
  - !ruby/object:Gem::Version
136
120
  version: '0'
137
121
  type: :development
138
122
  prerelease: false
139
123
  version_requirements: !ruby/object:Gem::Requirement
140
- none: false
141
124
  requirements:
142
- - - ! '>='
125
+ - - ">="
143
126
  - !ruby/object:Gem::Version
144
127
  version: '0'
145
128
  - !ruby/object:Gem::Dependency
146
129
  name: dm-sqlite-adapter
147
130
  requirement: !ruby/object:Gem::Requirement
148
- none: false
149
131
  requirements:
150
- - - ! '>='
132
+ - - ">="
151
133
  - !ruby/object:Gem::Version
152
134
  version: '0'
153
135
  type: :development
154
136
  prerelease: false
155
137
  version_requirements: !ruby/object:Gem::Requirement
156
- none: false
157
138
  requirements:
158
- - - ! '>='
139
+ - - ">="
159
140
  - !ruby/object:Gem::Version
160
141
  version: '0'
161
142
  - !ruby/object:Gem::Dependency
162
143
  name: rake
163
144
  requirement: !ruby/object:Gem::Requirement
164
- none: false
165
145
  requirements:
166
146
  - - '='
167
147
  - !ruby/object:Gem::Version
@@ -169,7 +149,6 @@ dependencies:
169
149
  type: :development
170
150
  prerelease: false
171
151
  version_requirements: !ruby/object:Gem::Requirement
172
- none: false
173
152
  requirements:
174
153
  - - '='
175
154
  - !ruby/object:Gem::Version
@@ -177,33 +156,29 @@ dependencies:
177
156
  - !ruby/object:Gem::Dependency
178
157
  name: simplecov
179
158
  requirement: !ruby/object:Gem::Requirement
180
- none: false
181
159
  requirements:
182
- - - ! '>='
160
+ - - ">="
183
161
  - !ruby/object:Gem::Version
184
162
  version: '0'
185
163
  type: :development
186
164
  prerelease: false
187
165
  version_requirements: !ruby/object:Gem::Requirement
188
- none: false
189
166
  requirements:
190
- - - ! '>='
167
+ - - ">="
191
168
  - !ruby/object:Gem::Version
192
169
  version: '0'
193
170
  - !ruby/object:Gem::Dependency
194
171
  name: simplecov-rcov
195
172
  requirement: !ruby/object:Gem::Requirement
196
- none: false
197
173
  requirements:
198
- - - ! '>='
174
+ - - ">="
199
175
  - !ruby/object:Gem::Version
200
176
  version: '0'
201
177
  type: :development
202
178
  prerelease: false
203
179
  version_requirements: !ruby/object:Gem::Requirement
204
- none: false
205
180
  requirements:
206
- - - ! '>='
181
+ - - ">="
207
182
  - !ruby/object:Gem::Version
208
183
  version: '0'
209
184
  description: Generates attr_accessors that encrypt and decrypt attributes transparently
@@ -216,14 +191,14 @@ executables: []
216
191
  extensions: []
217
192
  extra_rdoc_files: []
218
193
  files:
194
+ - MIT-LICENSE
195
+ - README.rdoc
196
+ - Rakefile
197
+ - lib/attr_encrypted.rb
219
198
  - lib/attr_encrypted/adapters/active_record.rb
220
199
  - lib/attr_encrypted/adapters/data_mapper.rb
221
200
  - lib/attr_encrypted/adapters/sequel.rb
222
201
  - lib/attr_encrypted/version.rb
223
- - lib/attr_encrypted.rb
224
- - MIT-LICENSE
225
- - Rakefile
226
- - README.rdoc
227
202
  - test/active_record_test.rb
228
203
  - test/attr_encrypted_test.rb
229
204
  - test/compatibility_test.rb
@@ -238,31 +213,30 @@ files:
238
213
  - test/test_helper.rb
239
214
  homepage: http://github.com/attr-encrypted/attr_encrypted
240
215
  licenses: []
216
+ metadata: {}
241
217
  post_install_message:
242
218
  rdoc_options:
243
- - --line-numbers
244
- - --inline-source
245
- - --main
219
+ - "--line-numbers"
220
+ - "--inline-source"
221
+ - "--main"
246
222
  - README.rdoc
247
223
  require_paths:
248
224
  - lib
249
225
  required_ruby_version: !ruby/object:Gem::Requirement
250
- none: false
251
226
  requirements:
252
- - - ! '>='
227
+ - - ">="
253
228
  - !ruby/object:Gem::Version
254
229
  version: '0'
255
230
  required_rubygems_version: !ruby/object:Gem::Requirement
256
- none: false
257
231
  requirements:
258
- - - ! '>='
232
+ - - ">="
259
233
  - !ruby/object:Gem::Version
260
234
  version: '0'
261
235
  requirements: []
262
236
  rubyforge_project:
263
- rubygems_version: 1.8.23.2
237
+ rubygems_version: 2.4.5.1
264
238
  signing_key:
265
- specification_version: 3
239
+ specification_version: 4
266
240
  summary: Encrypt and decrypt attributes
267
241
  test_files:
268
242
  - test/active_record_test.rb