dionysus 1.0.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -9
- data/README.md +31 -34
- data/Rakefile +16 -79
- data/description.md +1 -0
- data/lib/dionysus.rb +3 -22
- data/lib/dionysus/configuration_callbacks.rb +93 -0
- data/lib/dionysus/redcarpet/includes.rb +41 -0
- data/lib/dionysus/string/version_match.rb +8 -0
- data/lib/dionysus/travisci/gemfile_generator.rb +67 -0
- data/lib/dionysus/version.rb +3 -0
- data/spec/lib/dionysus_spec.rb +18 -0
- data/spec/lib/string/version_match_spec.rb +17 -0
- data/spec/spec_helper.rb +17 -6
- metadata +54 -307
- data/.document +0 -5
- data/.gitignore +0 -22
- data/.rspec +0 -1
- data/Gemfile.lock +0 -41
- data/VERSION +0 -1
- data/dionysus.gemspec +0 -121
- data/lib/dionysus/configuration.rb +0 -200
- data/lib/dionysus/digest.rb +0 -135
- data/lib/dionysus/rdoc/markdown.rb +0 -64
- data/lib/dionysus/rdoc/no_markup.rb +0 -56
- data/lib/dionysus/security.rb +0 -3
- data/lib/dionysus/security/password_salt.rb +0 -138
- data/lib/dionysus/security/string.rb +0 -126
- data/lib/dionysus/string.rb +0 -48
- data/lib/dionysus/version_string.rb +0 -96
- data/spec/configuration_spec.rb +0 -176
- data/spec/digest_spec.rb +0 -183
- data/spec/dionysus_spec.rb +0 -8
- data/spec/password_salt_spec.rb +0 -169
- data/spec/string_security_spec.rb +0 -204
- data/spec/string_spec.rb +0 -46
- data/spec/version_string_spec.rb +0 -83
@@ -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
|
data/spec/string_spec.rb
DELETED
@@ -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
|
data/spec/version_string_spec.rb
DELETED
@@ -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
|
-
|