dionysus 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,204 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- require 'dionysus/security/string'
4
- describe String do
5
- it "should generate a salt 16 bytes long" do
6
- String.salt.length.should == 16
7
- end
8
-
9
- it "should generate a salt arbitrary nubmer of bytes long" do
10
- String.salt(5).length.should == 5
11
- String.salt(1).length.should == 1
12
- end
13
-
14
- it "should sanitize the string" do
15
- str = 'abcdefg'
16
- str.sanitize
17
- str.should == ''
18
- end
19
-
20
- it "should sanitize the string with 0 passes" do
21
- str = 'abcdefg'
22
- str.sanitize(0)
23
- str.should == ''
24
- end
25
-
26
- it "should sanitize the string with 100 passes" do
27
- str = 'abcdefg'
28
- str.sanitize(100)
29
- str.should == ''
30
- end
31
-
32
- it "should calculate sha512 in base64" do
33
- digest = "KHErTuI/5urCF3vi6yTDxvAHBydW1CN3zVfBWDP/ItbmgeVi5IFq47ew0hPHzyK3AuMDh+Z9MBBlf3/mACgVMQ=="
34
- "abcde\240z405".digest(:sha512).should == digest
35
- "abcde\240z405".sha512.should == digest
36
- "abcde\240z405".sha512(:encoding => :base64).should == digest
37
- end
38
-
39
- it "should calculate sha384 in base64" do
40
- digest = "PcQPzxc6tAaom+DG31XCi/A/7ZB6N0PgkBK9e1NMOadc7VxYSWoGq03f2+DiflT5"
41
- "abcde\240z405".digest(:sha384).should == digest
42
- "abcde\240z405".sha384.should == digest
43
- "abcde\240z405".sha384(:encoding => :base64).should == digest
44
- end
45
-
46
- it "should calculate sha256/sha2 in base64" do
47
- digest = "vGeWpAMcqj2XuE8P4FirA2oUt1S78c6puQk03EOdnQY="
48
- "abcde\240z405".digest(:sha256).should == digest
49
- "abcde\240z405".sha256.should == digest
50
- "abcde\240z405".sha256(:encoding => :base64).should == digest
51
- "abcde\240z405".digest(:sha2).should == digest
52
- "abcde\240z405".sha2.should == digest
53
- "abcde\240z405".sha2(:encoding => :base64).should == digest
54
- end
55
-
56
- it "should calculate sha1 in base64" do
57
- digest = "wxeCFXPVXePFcpwuFDjonyn1G/w="
58
- "abcde\240z405".digest(:sha1).should == digest
59
- "abcde\240z405".sha1.should == digest
60
- "abcde\240z405".sha1(:encoding => :base64).should == digest
61
- end
62
-
63
- it "should calculate md5 in base64" do
64
- digest = "ThT0y7KbAinjLpuChqsRuQ=="
65
- "abcde\240z405".digest(:md5).should == digest
66
- "abcde\240z405".md5.should == digest
67
- "abcde\240z405".md5(:encoding => :base64).should == digest
68
- end
69
-
70
- it "should calculate sha512 with a salt" do
71
- salt = 'abcdefg'
72
- digest = "oxoD5Mwq6ck4B1P2tfsrCQnNHzBYQRKOFGTj1T0EFPWeNuy1/YPtsKGiz2os9ljt0/OwXEt/l8LsK/ktbwEHbg=="
73
- "abcde\240z405".digest(:sha512, :salt => salt).should == digest
74
- "abcde\240z405".sha512(:salt => salt).should == digest
75
- end
76
-
77
- it "should calculate sha384 with a salt" do
78
- salt = 'abcdefg'
79
- digest = "XVHvPSZDdUNC8zY0oriwlXfwhMPeJusx59kWkGq3bEqrz1tlbmMJ+UGUOqYKbdYK"
80
- "abcde\240z405".digest(:sha384, :salt => salt).should == digest
81
- "abcde\240z405".sha384(:salt => salt).should == digest
82
- end
83
-
84
- it "should calculate sha256/sha2 with a salt" do
85
- salt = 'abcdefg'
86
- digest = "fWzU2g2GFAS5EAgTS09djo2eDDQdNp1xSTdrRO7m9v4="
87
- "abcde\240z405".digest(:sha256, :salt => salt).should == digest
88
- "abcde\240z405".sha256(:salt => salt).should == digest
89
- "abcde\240z405".digest(:sha2, :salt => salt).should == digest
90
- "abcde\240z405".sha2(:salt => salt).should == digest
91
- end
92
-
93
- it "should calculate sha1 with a salt" do
94
- salt = 'abcdefg'
95
- digest = "JFdwlGl341qtbqX6mPQbjs8d1/U="
96
- "abcde\240z405".digest(:sha1, :salt => salt).should == digest
97
- "abcde\240z405".sha1(:salt => salt).should == digest
98
- end
99
-
100
- it "should calculate md5 with a salt" do
101
- salt = 'abcdefg'
102
- digest = "m59029ys/bc2HpeuZqcQ3w=="
103
- "abcde\240z405".digest(:md5, :salt => salt).should == digest
104
- "abcde\240z405".md5(:salt => salt).should == digest
105
- end
106
-
107
- it "should calculate sha512 in hex/hexidecimal" do
108
- digest = "28712b4ee23fe6eac2177be2eb24c3c6f007072756d42377cd57c15833ff22d6e681e562e4816ae3b7b0d213c7cf22b702e30387e67d3010657f7fe600281531"
109
- "abcde\240z405".digest(:sha512, :encoding => :hex).should == digest
110
- "abcde\240z405".digest(:sha512, :encoding => :hexidecimal).should == digest
111
- "abcde\240z405".sha512(:encoding => :hex).should == digest
112
- "abcde\240z405".sha512(:encoding => :hexidecimal).should == digest
113
- end
114
-
115
- it "should calculate sha384 in hex/hexidecimal" do
116
- digest = "3dc40fcf173ab406a89be0c6df55c28bf03fed907a3743e09012bd7b534c39a75ced5c58496a06ab4ddfdbe0e27e54f9"
117
- "abcde\240z405".digest(:sha384, :encoding => :hex).should == digest
118
- "abcde\240z405".digest(:sha384, :encoding => :hexidecimal).should == digest
119
- "abcde\240z405".sha384(:encoding => :hex).should == digest
120
- "abcde\240z405".sha384(:encoding => :hexidecimal).should == digest
121
- end
122
-
123
- it "should calculate sha256/sha2 in hex/hexidecimal" do
124
- digest = "bc6796a4031caa3d97b84f0fe058ab036a14b754bbf1cea9b90934dc439d9d06"
125
- "abcde\240z405".digest(:sha256, :encoding => :hex).should == digest
126
- "abcde\240z405".digest(:sha256, :encoding => :hexidecimal).should == digest
127
- "abcde\240z405".digest(:sha2, :encoding => :hex).should == digest
128
- "abcde\240z405".digest(:sha2, :encoding => :hexidecimal).should == digest
129
- "abcde\240z405".sha256(:encoding => :hex).should == digest
130
- "abcde\240z405".sha2(:encoding => :hex).should == digest
131
- "abcde\240z405".sha256(:encoding => :hexidecimal).should == digest
132
- "abcde\240z405".sha2(:encoding => :hexidecimal).should == digest
133
- end
134
-
135
- it "should calculate sha1 in hex/hexidecimal" do
136
- digest = "c317821573d55de3c5729c2e1438e89f29f51bfc"
137
- "abcde\240z405".digest(:sha1, :encoding => :hex).should == digest
138
- "abcde\240z405".digest(:sha1, :encoding => :hexidecimal).should == digest
139
- "abcde\240z405".sha1(:encoding => :hex).should == digest
140
- "abcde\240z405".sha1(:encoding => :hexidecimal).should == digest
141
- end
142
-
143
- it "should calculate md5 in hex/hexidecimal" do
144
- digest = "4e14f4cbb29b0229e32e9b8286ab11b9"
145
- "abcde\240z405".digest(:md5, :encoding => :hex).should == digest
146
- "abcde\240z405".digest(:md5, :encoding => :hexidecimal).should == digest
147
- "abcde\240z405".md5(:encoding => :hex).should == digest
148
- "abcde\240z405".md5(:encoding => :hexidecimal).should == digest
149
- end
150
-
151
- it "should calculate sha512 in binary" do
152
- digest = "(q+N\342?\346\352\302\027{\342\353$\303\306\360\a\a'V\324#w\315W\301X3\377\"\326\346\201\345b\344\201j\343\267\260\322\023\307\317\"\267\002\343\003\207\346}0\020e\177\177\346\000(\0251"
153
- "abcde\240z405".digest(:sha512, :encoding => :binary).should == digest
154
- "abcde\240z405".sha512(:encoding => :binary).should == digest
155
- end
156
-
157
- it "should calculate sha384 in binary" do
158
- digest = "=\304\017\317\027:\264\006\250\233\340\306\337U\302\213\360?\355\220z7C\340\220\022\275{SL9\247\\\355\\XIj\006\253M\337\333\340\342~T\371"
159
- "abcde\240z405".digest(:sha384, :encoding => :binary).should == digest
160
- "abcde\240z405".sha384(:encoding => :binary).should == digest
161
- end
162
-
163
- it "should calculate sha256/sha2 in binary" do
164
- digest = "\274g\226\244\003\034\252=\227\270O\017\340X\253\003j\024\267T\273\361\316\251\271\t4\334C\235\235\006"
165
- "abcde\240z405".digest(:sha256, :encoding => :binary).should == digest
166
- "abcde\240z405".digest(:sha2, :encoding => :binary).should == digest
167
- "abcde\240z405".sha256(:encoding => :binary).should == digest
168
- "abcde\240z405".sha2(:encoding => :binary).should == digest
169
- end
170
-
171
- it "should calculate sha1 in binary" do
172
- digest = "\303\027\202\025s\325]\343\305r\234.\0248\350\237)\365\e\374"
173
- "abcde\240z405".digest(:sha1, :encoding => :binary).should == digest
174
- "abcde\240z405".sha1(:encoding => :binary).should == digest
175
- end
176
-
177
- it "should calculate md5 in binary" do
178
- digest = "N\024\364\313\262\233\002)\343.\233\202\206\253\021\271"
179
- "abcde\240z405".digest(:md5, :encoding => :binary).should == digest
180
- "abcde\240z405".md5(:encoding => :binary).should == digest
181
- end
182
-
183
- it "should fallback to super method missing with unavailable digest" do
184
- lambda { "abcde\240z405".my_digest }.should raise_error(NoMethodError)
185
- end
186
-
187
- it "should raise an error with invalid encoding" do
188
- lambda { "abcde\240z405".md5(:encoding => :foobar) }.should raise_error(ArgumentError, 'Invalid encoding: foobar')
189
- end
190
-
191
- describe "digest detection" do
192
- it "should defer to Digest" do
193
- str = "abcde\240z405"
194
- Digest.should_receive(:detect_digest).with(str, :binary)
195
- str.detect_digest(:binary)
196
- end
197
-
198
- it "should defer to Digest" do
199
- str = "abcde\240z405"
200
- Digest.should_receive(:detect_digest!).with(str, :binary)
201
- str.detect_digest!(:binary)
202
- end
203
- end
204
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- require 'dionysus/string'
4
- describe String do
5
- it "should encode64s" do
6
- "abcde\240z405".encode64s.should == "YWJjZGWgejQwNQ=="
7
- end
8
-
9
- it "should encode64" do
10
- "abcde\240z405".encode64.should == "YWJjZGWgejQwNQ==\n"
11
- end
12
-
13
- it "should decode64" do
14
- "YWJjZGWgejQwNQ==".decode64.should == "abcde\240z405"
15
- "YWJjZGWgejQwNQ==\n".decode64.should == "abcde\240z405"
16
- end
17
-
18
- it "should encode_hex" do
19
- "abcde\240z405".encode_hex.should == "6162636465a07a343035"
20
- "abcde\240z405".encode_hexidecimal.should == "6162636465a07a343035"
21
- end
22
-
23
- it "should decode_hex" do
24
- '6162636465a07a343035'.decode_hex.should == "abcde\240z405"
25
- '6162636465a07a343035'.decode_hexidecimal.should == "abcde\240z405"
26
- end
27
-
28
- describe 'encoding detection' do
29
- it 'should return nil for blank' do
30
- ''.detect_encoding.should be_nil
31
- end
32
-
33
- it 'should match hex' do
34
- '6162636465a07a343035'.detect_encoding.should == :hex
35
- end
36
-
37
- it 'should match base64' do
38
- "YWJjZGWgejQwNQ==".detect_encoding.should == :base64
39
- "YWJjZGWgejQwNQ==\n".detect_encoding.should == :base64
40
- end
41
-
42
- it 'should default to binary' do
43
- "abcde\240z405".detect_encoding.should == :binary
44
- end
45
- end
46
- end
@@ -1,83 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- require 'dionysus/version_string'
4
- describe Dionysus::VersionString do
5
- before(:each) do
6
- @version_string = Dionysus::VersionString.new('1.5.7')
7
- end
8
-
9
- it 'should be frozen' do
10
- @version_string.should be_frozen
11
- end
12
-
13
- it 'should have to_rubygem_version' do
14
- @version_string.to_rubygem_version.should be_a(Gem::Version)
15
- gem_version = @version_string.to_gem_version
16
- @version_string.to_rubygem_version.should eq(gem_version)
17
- end
18
-
19
- it 'should have prerelease? that delegates to Gem::Version' do
20
- @version_string.should_not be_prerelease
21
- version = Dionysus::VersionString.new('1.5.alpha')
22
- version.should be_prerelease
23
- end
24
-
25
- it 'should have eql?' do
26
- (@version_string.eql?('1.5.7')).should be_true
27
- end
28
-
29
- describe 'comparable' do
30
- before(:all) do
31
- @values = {'1.5.7' => 0, '1.5' => 1, '1.6' => -1}
32
- end
33
-
34
- it 'should work with VersionStrings' do
35
- @values.each do |ver, c|
36
- (@version_string <=> Dionysus::VersionString.new(ver)).should == c
37
- end
38
- end
39
-
40
- it 'should work with Strings' do
41
- @values.each do |ver, c|
42
- (@version_string <=> ver).should == c
43
- end
44
- end
45
-
46
- it 'should work with Gem::Versions' do
47
- @values.each do |ver, c|
48
- (@version_string <=> Gem::Version.new(ver.dup)) == c
49
- end
50
- end
51
-
52
- it 'should not work with anything else' do
53
- lambda {
54
- @version_string <=> Object.new
55
- }.should raise_error(ArgumentError, "Can only compare to a Dionysus::VersionString/String or Gem::Version")
56
- end
57
- end
58
-
59
- describe 'satisfies?' do
60
- before(:all) do
61
- @values = {'~> 1.5.0' => true, '~> 2' => false}
62
- end
63
-
64
- it 'should work with Strings' do
65
- @values.each do |req, v|
66
- @version_string.satisfies?(req).should == v
67
- end
68
- end
69
-
70
- it 'should work with Gem::Requirements' do
71
- @values.each do |req, v|
72
- @version_string.satisfies?(Gem::Requirement.new(req)).should == v
73
- end
74
- end
75
-
76
- it 'should not work with anything else' do
77
- lambda {
78
- @version_string.satisfies?(Object.new)
79
- }.should raise_error(ArgumentError, "Can only compare to a String or Gem::Requirement")
80
- end
81
- end
82
- end
83
-