test_util.rb
145 lines
| 3.9 KiB
| text/x-ruby
|
RubyLexer
|
r2376 | # coding: ASCII-8BIT | ||
require 'test/unit' | ||||
require "openid/util" | ||||
module OpenID | ||||
class UtilTestCase < Test::Unit::TestCase | ||||
def test_base64 | ||||
cases = [ | ||||
"", | ||||
"\000", | ||||
"\001", | ||||
"\000" * 100, | ||||
(0...256).collect{ |i| i.chr }.join('') | ||||
] | ||||
cases.each do |c| | ||||
encoded = Util.to_base64(c) | ||||
decoded = Util.from_base64(encoded) | ||||
assert(c == decoded) | ||||
end | ||||
end | ||||
def test_base64_valid | ||||
[["foos", "~\212,"], | ||||
["++++", "\373\357\276"], | ||||
["/+==", "\377"], | ||||
["", ""], | ||||
["FOOSBALL", "\024\343\222\004\002\313"], | ||||
["FoosBL==", "\026\212,\004"], | ||||
["Foos\nBall", "\026\212,\005\251e"], | ||||
["Foo\r\ns\nBall", "\026\212,\005\251e"] | ||||
].each do | input, expected | | ||||
assert_equal(expected, Util.from_base64(input)) | ||||
end | ||||
end | ||||
def test_base64_invalid | ||||
['!', | ||||
'Foos!', | ||||
'Balls', | ||||
'B===', | ||||
'Foos Ball', | ||||
'=foo', | ||||
].each do |invalid_input| | ||||
assert_raises(ArgumentError) do | ||||
Util.from_base64(invalid_input) | ||||
end | ||||
end | ||||
end | ||||
def test_append_args() | ||||
simple = 'http://www.example.com/' | ||||
cases = [ | ||||
['empty list', | ||||
[simple, []], | ||||
simple], | ||||
['empty dict', | ||||
[simple, {}], | ||||
simple], | ||||
['one list', | ||||
[simple, [['a', 'b']]], | ||||
simple + '?a=b'], | ||||
['one dict', | ||||
[simple, {'a' => 'b'}], | ||||
simple + '?a=b'], | ||||
['two list (same)', | ||||
[simple, [['a', 'b'], ['a', 'c']]], | ||||
simple + '?a=b&a=c'], | ||||
['two list', | ||||
[simple, [['a', 'b'], ['b', 'c']]], | ||||
simple + '?a=b&b=c'], | ||||
['two list (order)', | ||||
[simple, [['b', 'c'], ['a', 'b']]], | ||||
simple + '?b=c&a=b'], | ||||
['two dict [order]', | ||||
[simple, {'b' => 'c', 'a' => 'b'}], | ||||
simple + '?a=b&b=c'], | ||||
['args exist [empty]', | ||||
[simple + '?stuff=bother', []], | ||||
simple + '?stuff=bother'], | ||||
['escape', | ||||
[simple, [['=', '=']]], | ||||
simple + '?%3D=%3D'], | ||||
['escape [URL]', | ||||
[simple, [['this_url', simple]]], | ||||
simple + '?this_url=http%3A%2F%2Fwww.example.com%2F'], | ||||
['use dots', | ||||
[simple, [['openid.stuff', 'bother']]], | ||||
simple + '?openid.stuff=bother'], | ||||
['args exist', | ||||
[simple + '?stuff=bother', [['ack', 'ack']]], | ||||
simple + '?stuff=bother&ack=ack'], | ||||
['args exist', | ||||
[simple + '?stuff=bother', [['ack', 'ack']]], | ||||
simple + '?stuff=bother&ack=ack'], | ||||
['args exist [dict]', | ||||
[simple + '?stuff=bother', {'ack' => 'ack'}], | ||||
simple + '?stuff=bother&ack=ack'], | ||||
['args exist [dict 2]', | ||||
[simple + '?stuff=bother', {'ack' => 'ack', 'zebra' => 'lion'}], | ||||
simple + '?stuff=bother&ack=ack&zebra=lion'], | ||||
['three args [dict]', | ||||
[simple, {'stuff' => 'bother', 'ack' => 'ack', 'zebra' => 'lion'}], | ||||
simple + '?ack=ack&stuff=bother&zebra=lion'], | ||||
['three args [list]', | ||||
[simple, [['stuff', 'bother'], ['ack', 'ack'], ['zebra', 'lion']]], | ||||
simple + '?stuff=bother&ack=ack&zebra=lion'], | ||||
] | ||||
cases.each { |name, args, expected| | ||||
url, pairs = args | ||||
actual = Util.append_args(url, pairs) | ||||
msg = "[#{name}] Expected: #{expected}, actual: #{actual}" | ||||
assert_equal(expected, actual, msg) | ||||
} | ||||
end | ||||
def test_parse_query | ||||
assert_equal({'foo'=>'bar'}, Util.parse_query('foo=bar')) | ||||
end | ||||
end | ||||
end | ||||