85 lines
3 KiB
Ruby
85 lines
3 KiB
Ruby
|
require 'test/spec'
|
||
|
|
||
|
begin
|
||
|
# requires the ruby-openid gem
|
||
|
require 'rack/auth/openid'
|
||
|
|
||
|
context "Rack::Auth::OpenID" do
|
||
|
OID = Rack::Auth::OpenID
|
||
|
host = 'host'
|
||
|
subd = 'sub.host'
|
||
|
wild = '*.host'
|
||
|
path = 'path'
|
||
|
long = 'path/long'
|
||
|
scheme = 'http://'
|
||
|
realm = scheme+host+'/'+path
|
||
|
|
||
|
specify 'realm uri should be valid' do
|
||
|
lambda{OID.new('/'+path)}.should.raise ArgumentError
|
||
|
lambda{OID.new('/'+long)}.should.raise ArgumentError
|
||
|
lambda{OID.new(scheme+host)}.should.not.raise
|
||
|
lambda{OID.new(scheme+host+'/')}.should.not.raise
|
||
|
lambda{OID.new(scheme+host+'/'+path)}.should.not.raise
|
||
|
lambda{OID.new(scheme+subd)}.should.not.raise
|
||
|
lambda{OID.new(scheme+subd+'/')}.should.not.raise
|
||
|
lambda{OID.new(scheme+subd+'/'+path)}.should.not.raise
|
||
|
end
|
||
|
|
||
|
specify 'should be able to check if a uri is within the realm' do
|
||
|
end
|
||
|
|
||
|
specify 'return_to should be valid' do
|
||
|
uri = '/'+path
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.raise ArgumentError
|
||
|
uri = '/'+long
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.raise ArgumentError
|
||
|
uri = scheme+host
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.raise ArgumentError
|
||
|
uri = scheme+host+'/'+path
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.not.raise
|
||
|
uri = scheme+subd+'/'+path
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.raise ArgumentError
|
||
|
uri = scheme+host+'/'+long
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.not.raise
|
||
|
uri = scheme+subd+'/'+long
|
||
|
lambda{OID.new(realm, :return_to=>uri)}.should.raise ArgumentError
|
||
|
end
|
||
|
|
||
|
specify 'extensions should have required constants defined' do
|
||
|
badext = Rack::Auth::OpenID::BadExtension
|
||
|
ext = Object.new
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext = Module.new
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Request = nil
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Response = nil
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::NS_URI = nil
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
end
|
||
|
|
||
|
specify 'extensions should have Request and Response defined and inherit from OpenID::Extension' do
|
||
|
$-w, w = nil, $-w # yuck
|
||
|
badext = Rack::Auth::OpenID::BadExtension
|
||
|
ext = Module.new
|
||
|
ext::Request = nil
|
||
|
ext::Response = nil
|
||
|
ext::NS_URI = nil
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Request = Class.new()
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Response = Class.new()
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Request = Class.new(::OpenID::Extension)
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
ext::Response = Class.new(::OpenID::Extension)
|
||
|
lambda{OID.new(realm).add_extension(ext)}.should.raise(badext)
|
||
|
$-w = w
|
||
|
end
|
||
|
end
|
||
|
|
||
|
rescue LoadError
|
||
|
$stderr.puts "Skipping Rack::Auth::OpenID tests (ruby-openid 2 is required). `gem install ruby-openid` and try again."
|
||
|
end
|