dionysus 1.0.2 → 2.0.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.
@@ -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
-