attr_encrypted 1.1.2 → 1.2.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.
- data/README.rdoc +5 -11
- data/lib/attr_encrypted.rb +257 -189
- data/lib/attr_encrypted/adapters/active_record.rb +10 -8
- data/lib/attr_encrypted/adapters/data_mapper.rb +4 -4
- data/lib/attr_encrypted/adapters/sequel.rb +2 -2
- data/lib/attr_encrypted/version.rb +17 -0
- data/test/active_record_test.rb +30 -20
- data/test/attr_encrypted_test.rb +59 -60
- data/test/data_mapper_test.rb +10 -10
- data/test/sequel_test.rb +7 -7
- data/test/test_helper.rb +7 -3
- metadata +56 -18
data/test/data_mapper_test.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
2
|
|
3
|
-
DataMapper.setup(:default,
|
3
|
+
DataMapper.setup(:default, 'sqlite3::memory:')
|
4
4
|
|
5
5
|
class Client
|
6
6
|
include DataMapper::Resource
|
7
|
-
|
7
|
+
|
8
8
|
property :id, Serial
|
9
9
|
property :encrypted_email, String
|
10
10
|
property :encrypted_credentials, Text
|
11
11
|
property :salt, String
|
12
|
-
|
12
|
+
|
13
13
|
attr_encrypted :email, :key => 'a secret key'
|
14
14
|
attr_encrypted :credentials, :key => Proc.new { |client| Encryptor.encrypt(:value => client.salt, :key => 'some private key') }, :marshal => true
|
15
|
-
|
15
|
+
|
16
16
|
def initialize(attrs = {})
|
17
17
|
super attrs
|
18
18
|
self.salt ||= Digest::SHA1.hexdigest((Time.now.to_i * rand(5)).to_s)
|
@@ -23,11 +23,11 @@ end
|
|
23
23
|
DataMapper.auto_migrate!
|
24
24
|
|
25
25
|
class DataMapperTest < Test::Unit::TestCase
|
26
|
-
|
26
|
+
|
27
27
|
def setup
|
28
28
|
Client.all.each(&:destroy)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def test_should_encrypt_email
|
32
32
|
@client = Client.new :email => 'test@example.com'
|
33
33
|
assert @client.save
|
@@ -35,7 +35,7 @@ class DataMapperTest < Test::Unit::TestCase
|
|
35
35
|
assert_not_equal @client.email, @client.encrypted_email
|
36
36
|
assert_equal @client.email, Client.first.email
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def test_should_marshal_and_encrypt_credentials
|
40
40
|
@client = Client.new
|
41
41
|
assert @client.save
|
@@ -44,9 +44,9 @@ class DataMapperTest < Test::Unit::TestCase
|
|
44
44
|
assert_equal @client.credentials, Client.first.credentials
|
45
45
|
assert Client.first.credentials.is_a?(Hash)
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
def test_should_encode_by_default
|
49
49
|
assert Client.attr_encrypted_options[:encode]
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
end
|
data/test/sequel_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
2
|
|
3
3
|
DB = Sequel.sqlite
|
4
4
|
|
@@ -13,7 +13,7 @@ end
|
|
13
13
|
class Human < Sequel::Model(:humans)
|
14
14
|
attr_encrypted :email, :key => 'a secret key'
|
15
15
|
attr_encrypted :credentials, :key => Proc.new { |human| Encryptor.encrypt(:value => human.salt, :key => 'some private key') }, :marshal => true
|
16
|
-
|
16
|
+
|
17
17
|
def after_initialize(attrs = {})
|
18
18
|
self.salt ||= Digest::SHA1.hexdigest((Time.now.to_i * rand(5)).to_s)
|
19
19
|
self.credentials ||= { :username => 'example', :password => 'test' }
|
@@ -21,11 +21,11 @@ class Human < Sequel::Model(:humans)
|
|
21
21
|
end
|
22
22
|
|
23
23
|
class SequelTest < Test::Unit::TestCase
|
24
|
-
|
24
|
+
|
25
25
|
def setup
|
26
26
|
Human.all.each(&:destroy)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def test_should_encrypt_email
|
30
30
|
@human = Human.new :email => 'test@example.com'
|
31
31
|
assert @human.save
|
@@ -33,7 +33,7 @@ class SequelTest < Test::Unit::TestCase
|
|
33
33
|
assert_not_equal @human.email, @human.encrypted_email
|
34
34
|
assert_equal @human.email, Human.first.email
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def test_should_marshal_and_encrypt_credentials
|
38
38
|
@human = Human.new
|
39
39
|
assert @human.save
|
@@ -42,9 +42,9 @@ class SequelTest < Test::Unit::TestCase
|
|
42
42
|
assert_equal @human.credentials, Human.first.credentials
|
43
43
|
assert Human.first.credentials.is_a?(Hash)
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
def test_should_encode_by_default
|
47
47
|
assert Human.attr_encrypted_options[:encode]
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'digest/sha2'
|
3
|
-
|
4
3
|
require 'rubygems'
|
5
|
-
|
4
|
+
gem 'activerecord', ENV['ACTIVE_RECORD_VERSION'] if ENV['ACTIVE_RECORD_VERSION']
|
6
5
|
require 'active_record'
|
7
6
|
require 'datamapper'
|
8
7
|
require 'sequel'
|
8
|
+
require 'mocha'
|
9
|
+
|
10
|
+
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
|
+
$:.unshift(File.dirname(__FILE__))
|
12
|
+
require 'attr_encrypted'
|
9
13
|
|
10
|
-
|
14
|
+
puts "\nTesting with ActiveRecord #{ActiveRecord::VERSION::STRING rescue ENV['ACTIVE_RECORD_VERSION']}"
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attr_encrypted
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 1
|
7
|
-
- 1
|
8
8
|
- 2
|
9
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Sean Huber
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date:
|
18
|
+
date: 2011-03-07 00:00:00 -08:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
22
|
+
name: encryptor
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 17
|
27
30
|
segments:
|
28
31
|
- 1
|
29
32
|
- 1
|
@@ -32,33 +35,63 @@ dependencies:
|
|
32
35
|
type: :runtime
|
33
36
|
version_requirements: *id001
|
34
37
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
38
|
+
name: activerecord
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
41
46
|
segments:
|
42
|
-
-
|
43
|
-
- 1
|
47
|
+
- 2
|
44
48
|
- 0
|
45
|
-
|
46
|
-
|
49
|
+
- 0
|
50
|
+
version: 2.0.0
|
51
|
+
type: :development
|
47
52
|
version_requirements: *id002
|
48
53
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
54
|
+
name: datamapper
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
55
62
|
segments:
|
56
63
|
- 0
|
57
|
-
|
58
|
-
|
59
|
-
version: 0.9.8
|
60
|
-
type: :runtime
|
64
|
+
version: "0"
|
65
|
+
type: :development
|
61
66
|
version_requirements: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: mocha
|
69
|
+
prerelease: false
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id004
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: sequel
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
93
|
+
type: :development
|
94
|
+
version_requirements: *id005
|
62
95
|
description: Generates attr_accessors that encrypt and decrypt attributes transparently
|
63
96
|
email: shuber@huberry.com
|
64
97
|
executables: []
|
@@ -68,10 +101,11 @@ extensions: []
|
|
68
101
|
extra_rdoc_files: []
|
69
102
|
|
70
103
|
files:
|
71
|
-
- lib/attr_encrypted.rb
|
72
104
|
- lib/attr_encrypted/adapters/active_record.rb
|
73
105
|
- lib/attr_encrypted/adapters/data_mapper.rb
|
74
106
|
- lib/attr_encrypted/adapters/sequel.rb
|
107
|
+
- lib/attr_encrypted/version.rb
|
108
|
+
- lib/attr_encrypted.rb
|
75
109
|
- MIT-LICENSE
|
76
110
|
- Rakefile
|
77
111
|
- README.rdoc
|
@@ -93,26 +127,30 @@ rdoc_options:
|
|
93
127
|
require_paths:
|
94
128
|
- lib
|
95
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
96
131
|
requirements:
|
97
132
|
- - ">="
|
98
133
|
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
99
135
|
segments:
|
100
136
|
- 0
|
101
137
|
version: "0"
|
102
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
103
140
|
requirements:
|
104
141
|
- - ">="
|
105
142
|
- !ruby/object:Gem::Version
|
143
|
+
hash: 3
|
106
144
|
segments:
|
107
145
|
- 0
|
108
146
|
version: "0"
|
109
147
|
requirements: []
|
110
148
|
|
111
149
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.
|
150
|
+
rubygems_version: 1.6.1
|
113
151
|
signing_key:
|
114
152
|
specification_version: 3
|
115
|
-
summary:
|
153
|
+
summary: Encrypt and decrypt attributes
|
116
154
|
test_files:
|
117
155
|
- test/active_record_test.rb
|
118
156
|
- test/attr_encrypted_test.rb
|