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.
- 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
|
-
|