pluginaweek-encrypted_strings 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class CipherByDefaultTest < Test::Unit::TestCase
4
+ def setup
5
+ @cipher = EncryptedStrings::Cipher.new
6
+ end
7
+
8
+ def test_should_be_able_to_decrypt_by_default
9
+ assert @cipher.can_decrypt?
10
+ end
11
+
12
+ def test_should_raise_exception_if_decrypt_not_implemented
13
+ assert_raises(NotImplementedError) {@cipher.decrypt('test')}
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ TGr8Jm/7zh1dfjjoNJtOncvX/BdUL47b8k2rQbMTY7VD6ZpD317NTuVX1hHV
2
+ 54Nm6pnCId5wcga3sI3TqolTxkqKBy7Rb1mPVBeJyd7ZuoD7zp65+ws+o4Lr
3
+ Xn/3WculfuThUnDESqD53vnKPCfRK6hoMDygEV7urmuide5ogpZp52lidUku
4
+ cXOHDqfVETX7NNnHHghg/6qDUX7+0qf+XeKe8uiI0cPoE5YFnOHyF7oOBGtR
5
+ IqJG97q1InCJMeAbMSxcjO71Te51Z098yI+XN4rGmXbmzSrVKHMUk0tdsVxi
6
+ CE5OmnzLeXK1xomxkRmXZzl10WDBn9e4knoLJTlDdNR3fA4gLRfy3r6RBlDl
7
+ j7HI53o5gi9PTshSXwHr6Q8SV9fty2Nz3/yRT/ZPLUJC1GUqErLl2j6zYbVR
8
+ 8YMaLt1Zqi79ycPZxZV4Zh57YE86nUqepS1pzVpcS8dHZMne846lTyaOyxZ8
9
+ dxW+18s7E7KqpHj17QYrF6c7R5ZHgoNAbLFeGSUCXqkW8YdyidLqQTzWN7hF
10
+ roVcZWFe8YfSUKmgndVBOHGHxMGr+OYgVdAStOEwmRHaNGgSBE4FCkKXYJUj
11
+ ec3zNpiOCb8zxfNku5nT5nIHnGqO4JKWDvDGVioV+ffHwXpAw3OFE5n+M/uo
12
+ 4ZZbVSh1qZxd
@@ -0,0 +1,9 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIBOwIBAAJBAL/xeY6aqFx6z1ThNOwgPgxv3tsonTlCj8VkN3Ikumg6SzBuLxlV
3
+ i9gFQZ7K9Pv9o/7+xUTYODqBpVhwgLBeu2cCAwEAAQJAHyjFMfg7Yp/xLndMzxRA
4
+ 3mX+yJckRtpeWo31TktWE3syks1r9OrfmxKiStM9kFRubeBHTihZrW92TYkROLxh
5
+ uQIhAPuftVTJZFDNxeYDKIMIMqwR8KZgtuf25cv4pTxYwPqLAiEAw0gNwDJHBkvo
6
+ da4402pZNQmBA6qCSf0svDXqoEoaShUCIGBma340Oe6LJ0pb42Vv+pnZtazIWMq9
7
+ 2IQwmn1oM2bJAiEAhgP869mVRIzzi091UCG79tn+4DU0FPLasI+P5VD1mcECIQDb
8
+ 3ndvbPcElVvdJgabxyWJJsNtBBNZYPsuc6NrQyShOw==
9
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,4 @@
1
+ -----BEGIN RSA PUBLIC KEY-----
2
+ MEgCQQC/8XmOmqhces9U4TTsID4Mb97bKJ05Qo/FZDdyJLpoOkswbi8ZVYvYBUGe
3
+ yvT7/aP+/sVE2Dg6gaVYcICwXrtnAgMBAAE=
4
+ -----END RSA PUBLIC KEY-----
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class ShaCipherByDefaulTest < Test::Unit::TestCase
4
+ def setup
5
+ @sha_cipher = EncryptedStrings::ShaCipher.new
6
+ end
7
+
8
+ def test_should_use_default_salt
9
+ assert_equal 'salt', @sha_cipher.salt
10
+ end
11
+
12
+ def test_should_encrypt_using_default_salt
13
+ assert_equal 'f438229716cab43569496f3a3630b3727524b81b', @sha_cipher.encrypt('test')
14
+ end
15
+ end
16
+
17
+ class ShaCipherWithCustomDefaultsTest < Test::Unit::TestCase
18
+ def setup
19
+ @original_default_salt = EncryptedStrings::ShaCipher.default_salt
20
+ EncryptedStrings::ShaCipher.default_salt = 'custom_salt'
21
+ @sha_cipher = EncryptedStrings::ShaCipher.new
22
+ end
23
+
24
+ def test_should_use_custom_default_salt
25
+ assert_equal 'custom_salt', @sha_cipher.salt
26
+ end
27
+
28
+ def test_should_encrypt_using_custom_default_salt
29
+ assert_equal '280f3c516070b09aa3eb755378509c725a9c6561', @sha_cipher.encrypt('test')
30
+ end
31
+
32
+ def teardown
33
+ EncryptedStrings::ShaCipher.default_salt = @original_default_salt
34
+ end
35
+ end
36
+
37
+ class ShaCipherWithInvalidOptionsTest < Test::Unit::TestCase
38
+ def test_should_throw_an_exception
39
+ assert_raise(ArgumentError) {EncryptedStrings::ShaCipher.new(:invalid => true)}
40
+ end
41
+ end
42
+
43
+ class ShaCipherTest < Test::Unit::TestCase
44
+ def setup
45
+ @sha_cipher = EncryptedStrings::ShaCipher.new
46
+ end
47
+
48
+ def test_should_not_be_able_to_decrypt
49
+ assert !EncryptedStrings::ShaCipher.new.can_decrypt?
50
+ end
51
+
52
+ def test_should_raise_exception_if_trying_to_decrypt
53
+ assert_raises(NotImplementedError) {EncryptedStrings::ShaCipher.new.decrypt('test')}
54
+ end
55
+ end
56
+
57
+ class ShaCipherWithCustomOptionsTest < Test::Unit::TestCase
58
+ def setup
59
+ @sha_cipher = EncryptedStrings::ShaCipher.new(:salt => 'different salt')
60
+ end
61
+
62
+ def test_should_use_custom_salt
63
+ assert_equal 'different salt', @sha_cipher.salt
64
+ end
65
+
66
+ def test_should_encrypt_using_custom_salt
67
+ assert_equal '18e3256d71529db8fa65b2eef24a69ddad7070f3', @sha_cipher.encrypt('test')
68
+ end
69
+ end
70
+
71
+ class ShaCipherWithNonStringSaltTest < Test::Unit::TestCase
72
+ require 'time'
73
+
74
+ def setup
75
+ @time = Time.parse('Tue Jan 01 00:00:00 UTC 2008')
76
+ @sha_cipher = EncryptedStrings::ShaCipher.new(:salt => @time)
77
+ end
78
+
79
+ def test_should_stringify_salt
80
+ assert_equal @time.to_s, @sha_cipher.salt
81
+ end
82
+ end
@@ -0,0 +1,222 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class StringByDefaultTest < Test::Unit::TestCase
4
+ def setup
5
+ @encrypted_string = 'test'.encrypt
6
+ end
7
+
8
+ def test_should_use_sha
9
+ assert_instance_of EncryptedStrings::ShaCipher, @encrypted_string.cipher
10
+ end
11
+ end
12
+
13
+ class StringWithCustomOptionsTest < Test::Unit::TestCase
14
+ def setup
15
+ @encrypted_string = 'test'.encrypt(:salt => 'different_salt')
16
+ end
17
+
18
+ def test_should_use_sha
19
+ assert_instance_of EncryptedStrings::ShaCipher, @encrypted_string.cipher
20
+ end
21
+
22
+ def test_should_use_custom_options
23
+ assert_equal 'different_salt', @encrypted_string.cipher.salt
24
+ end
25
+ end
26
+
27
+ class StringWithCustomCipher
28
+ def setup
29
+ @encrypted_string = 'test'.encrypt(:symmetric, :password => 'key')
30
+ end
31
+
32
+ def test_should_use_custom_cipher
33
+ assert_instance_of EncryptedStrings::SymmetricCipher, @encrypted_string.cipher
34
+ end
35
+ end
36
+
37
+ class StringTest < Test::Unit::TestCase
38
+ def setup
39
+ @string = 'test'
40
+ end
41
+
42
+ def test_should_not_be_encrypted
43
+ assert !@string.encrypted?
44
+ end
45
+
46
+ def test_should_not_have_a_cipher
47
+ assert_nil @string.cipher
48
+ end
49
+
50
+ def test_should_not_be_able_to_decrypt
51
+ assert !@string.can_decrypt?
52
+ end
53
+ end
54
+
55
+ class StringAfterBeingEncryptedTest < Test::Unit::TestCase
56
+ def setup
57
+ @encrypted_string = 'test'.encrypt
58
+ end
59
+
60
+ def test_should_be_encrypted
61
+ assert @encrypted_string.encrypted?
62
+ end
63
+ end
64
+
65
+ class StringAfterBeingEncryptedAndReplacedTest < Test::Unit::TestCase
66
+ def setup
67
+ @encrypted_string = 'string'
68
+ @encrypted_string.encrypt!
69
+ end
70
+
71
+ def test_should_not_be_the_original_value
72
+ assert !'test'.equals_without_encryption(@encrypted_string)
73
+ end
74
+
75
+ def test_should_have_a_cipher
76
+ assert_instance_of EncryptedStrings::ShaCipher, @encrypted_string.cipher
77
+ end
78
+
79
+ def test_should_be_encrypted
80
+ assert @encrypted_string.encrypted?
81
+ end
82
+ end
83
+
84
+ class StringAfterBeingDecryptedTest < Test::Unit::TestCase
85
+ def setup
86
+ @encrypted_string = 'test'.encrypt(:symmetric, :password => 'secret')
87
+ @decrypted_string = @encrypted_string.decrypt
88
+ end
89
+
90
+ def test_should_not_be_encrypted
91
+ assert !@decrypted_string.encrypted?
92
+ end
93
+
94
+ def test_should_not_have_a_cipher
95
+ assert_nil @decrypted_string.cipher
96
+ end
97
+ end
98
+
99
+ class StringAfterBeingDecryptedAndReplacedTest < Test::Unit::TestCase
100
+ def setup
101
+ @encrypted_string = 'test'.encrypt(:symmetric, :password => 'secret')
102
+ @encrypted_string.decrypt!
103
+ end
104
+
105
+ def test_should_not_be_the_original_value
106
+ assert !"oTxJd67ElLY=\n".equals_without_encryption(@encrypted_string)
107
+ end
108
+
109
+ def test_should_be_the_decrypted_value
110
+ assert 'test'.equals_without_encryption(@encrypted_string)
111
+ end
112
+
113
+ def test_should_not_have_a_cipher
114
+ assert_nil @encrypted_string.cipher
115
+ end
116
+
117
+ def test_should_not_be_encrypted
118
+ assert !@encrypted_string.encrypted?
119
+ end
120
+ end
121
+
122
+ class StringWithUndecryptableCipherTest < Test::Unit::TestCase
123
+ def setup
124
+ @encrypted_string = 'test'.encrypt(:sha)
125
+ end
126
+
127
+ def test_should_not_be_able_to_decrypt
128
+ assert !@encrypted_string.can_decrypt?
129
+ end
130
+
131
+ def test_should_raise_exception_if_decrypted
132
+ assert_raise(NotImplementedError) {@encrypted_string.decrypt}
133
+ end
134
+
135
+ def test_should_be_able_to_check_equality_with_itself
136
+ assert_equal @encrypted_string, @encrypted_string
137
+ end
138
+
139
+ def test_should_be_able_to_check_equality_with_unencrypted_string
140
+ assert_equal 'test', @encrypted_string
141
+ assert_equal @encrypted_string, 'test'
142
+ end
143
+
144
+ def test_should_be_able_to_check_equality_with_encrypted_value_of_encrypted_string
145
+ encrypted_encrypted_string = @encrypted_string.encrypt(:sha)
146
+
147
+ assert_equal @encrypted_string, encrypted_encrypted_string
148
+ assert_equal encrypted_encrypted_string, @encrypted_string
149
+ end
150
+
151
+ def test_should_be_able_to_check_equality_with_same_string_without_cipher
152
+ assert_equal @encrypted_string.to_s, @encrypted_string
153
+ assert_equal @encrypted_string, @encrypted_string.to_s
154
+ end
155
+
156
+ def test_should_not_be_able_to_check_equality_more_than_one_encryption_away
157
+ encrypted_encrypted_string = @encrypted_string.encrypt(:sha)
158
+
159
+ assert_not_equal 'test', encrypted_encrypted_string
160
+ assert_not_equal encrypted_encrypted_string, 'test'
161
+ end
162
+ end
163
+
164
+ class StringWithDecryptableCipherTest < Test::Unit::TestCase
165
+ def setup
166
+ @encrypted_string = 'test'.encrypt(:symmetric, :password => 'secret')
167
+ end
168
+
169
+ def test_should_be_able_to_decrypt
170
+ assert @encrypted_string.can_decrypt?
171
+ end
172
+
173
+ def test_should_be_able_to_check_equality_with_itself
174
+ assert_equal @encrypted_string, @encrypted_string
175
+ end
176
+
177
+ def test_should_be_able_to_check_equality_with_unencrypted_string
178
+ assert_equal 'test', @encrypted_string
179
+ assert_equal @encrypted_string, 'test'
180
+ end
181
+
182
+ def test_should_be_able_to_check_equality_with_encrypted_value_of_encrypted_string
183
+ encrypted_encrypted_string = @encrypted_string.encrypt(:symmetric, :password => 'secret')
184
+
185
+ assert_equal @encrypted_string, encrypted_encrypted_string
186
+ assert_equal encrypted_encrypted_string, @encrypted_string
187
+ end
188
+
189
+ def test_should_be_able_to_check_equality_with_same_string_without_cipher
190
+ assert_equal @encrypted_string.to_s, @encrypted_string
191
+ assert_equal @encrypted_string, @encrypted_string.to_s
192
+ end
193
+
194
+ def test_should_not_be_able_to_check_equality_more_than_one_encryption_away
195
+ encrypted_encrypted_string = @encrypted_string.encrypt(:symmetric, :password => 'secret')
196
+
197
+ assert_not_equal 'test', encrypted_encrypted_string
198
+ assert_not_equal encrypted_encrypted_string, 'test'
199
+ end
200
+ end
201
+
202
+ class StringPreviouslyEncryptedTest < Test::Unit::TestCase
203
+ def setup
204
+ @encrypted_string = "oTxJd67ElLY=\n"
205
+ end
206
+
207
+ def test_should_not_be_encrypted
208
+ assert !@encrypted_string.encrypted?
209
+ end
210
+
211
+ def test_should_not_have_a_cipher
212
+ assert_nil @encrypted_string.cipher
213
+ end
214
+
215
+ def test_should_not_be_able_to_decrypt
216
+ assert !@encrypted_string.can_decrypt?
217
+ end
218
+
219
+ def test_should_be_able_to_decrypt_with_custom_mode
220
+ assert_equal 'test', @encrypted_string.decrypt(:symmetric, :password => 'secret')
221
+ end
222
+ end
@@ -0,0 +1,99 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class NoPasswordErrorTest < Test::Unit::TestCase
4
+ def test_should_exist
5
+ assert_not_nil EncryptedStrings::NoPasswordError
6
+ end
7
+ end
8
+
9
+ class SymmetricCipherByDefaultTest < Test::Unit::TestCase
10
+ def setup
11
+ @symmetric_cipher = EncryptedStrings::SymmetricCipher.new(:password => 'secret')
12
+ end
13
+
14
+ def test_should_use_default_algorithm
15
+ assert_equal 'DES-EDE3-CBC', @symmetric_cipher.algorithm
16
+ end
17
+
18
+ def test_should_raise_exception
19
+ assert_raise(EncryptedStrings::NoPasswordError) {EncryptedStrings::SymmetricCipher.new}
20
+ end
21
+
22
+ def test_should_encrypt_using_default_configuration
23
+ assert_equal "oTxJd67ElLY=\n", @symmetric_cipher.encrypt('test')
24
+ end
25
+
26
+ def test_should_decrypt_encrypted_string_using_default_configuration
27
+ assert_equal 'test', @symmetric_cipher.decrypt("oTxJd67ElLY=\n")
28
+ end
29
+ end
30
+
31
+ class SymmetricCipherWithCustomDefaultsTest < Test::Unit::TestCase
32
+ def setup
33
+ @original_default_algorithm = EncryptedStrings::SymmetricCipher.default_algorithm
34
+ @original_default_password = EncryptedStrings::SymmetricCipher.default_password
35
+
36
+ EncryptedStrings::SymmetricCipher.default_algorithm = 'DES-EDE3-CFB'
37
+ EncryptedStrings::SymmetricCipher.default_password = 'secret'
38
+ @symmetric_cipher = EncryptedStrings::SymmetricCipher.new
39
+ end
40
+
41
+ def test_should_use_custom_default_algorithm
42
+ assert_equal 'DES-EDE3-CFB', @symmetric_cipher.algorithm
43
+ end
44
+
45
+ def test_should_use_custom_default_password
46
+ assert_equal 'secret', @symmetric_cipher.password
47
+ end
48
+
49
+ def test_should_encrypt_using_custom_default_configuration
50
+ assert_equal "QWz/eQ==\n", @symmetric_cipher.encrypt('test')
51
+ end
52
+
53
+ def test_should_decrypt_encrypted_string_using_custom_default_configuration
54
+ assert_equal 'test', @symmetric_cipher.decrypt("QWz/eQ==\n")
55
+ end
56
+
57
+ def teardown
58
+ EncryptedStrings::SymmetricCipher.default_algorithm = @original_default_algorithm
59
+ EncryptedStrings::SymmetricCipher.default_password = @original_default_password
60
+ end
61
+ end
62
+
63
+ class SymmetricCipherWithInvalidOptionsTest < Test::Unit::TestCase
64
+ def test_should_throw_an_exception
65
+ assert_raise(ArgumentError) {EncryptedStrings::SymmetricCipher.new(:invalid => true)}
66
+ end
67
+ end
68
+
69
+ class SymmetricCipherTest < Test::Unit::TestCase
70
+ def setup
71
+ @symmetric_cipher = EncryptedStrings::SymmetricCipher.new(:password => 'secret')
72
+ end
73
+
74
+ def test_should_be_able_to_decrypt
75
+ assert @symmetric_cipher.can_decrypt?
76
+ end
77
+ end
78
+
79
+ class SymmetricCipherWithCustomOptionsTest < Test::Unit::TestCase
80
+ def setup
81
+ @symmetric_cipher = EncryptedStrings::SymmetricCipher.new(:algorithm => 'DES-EDE3-CFB', :password => 'secret')
82
+ end
83
+
84
+ def test_should_use_custom_algorithm
85
+ assert_equal 'DES-EDE3-CFB', @symmetric_cipher.algorithm
86
+ end
87
+
88
+ def test_should_use_custom_password
89
+ assert_equal 'secret', @symmetric_cipher.password
90
+ end
91
+
92
+ def test_should_encrypt_using_custom_options
93
+ assert_equal "QWz/eQ==\n", @symmetric_cipher.encrypt('test')
94
+ end
95
+
96
+ def test_should_decrypt_using_custom_options
97
+ assert_equal 'test', @symmetric_cipher.decrypt("QWz/eQ==\n")
98
+ end
99
+ end