diff options
Diffstat (limited to 'vendor/gems/ruby-openid-2.1.4/test/test_discover.rb')
-rw-r--r-- | vendor/gems/ruby-openid-2.1.4/test/test_discover.rb | 838 |
1 files changed, 0 insertions, 838 deletions
diff --git a/vendor/gems/ruby-openid-2.1.4/test/test_discover.rb b/vendor/gems/ruby-openid-2.1.4/test/test_discover.rb deleted file mode 100644 index 13b115ce1..000000000 --- a/vendor/gems/ruby-openid-2.1.4/test/test_discover.rb +++ /dev/null @@ -1,838 +0,0 @@ - -require 'testutil' -require 'util' - -require 'test/unit' -require 'openid/fetchers' -require 'openid/yadis/discovery' -require 'openid/consumer/discovery' -require 'openid/yadis/xrires' -require 'openid/yadis/xri' -require 'openid/message' -require 'openid/util' - -### Tests for conditions that trigger DiscoveryFailure - -module OpenID - class SimpleMockFetcher - def initialize(test, responses) - @test = test - @responses = responses.dup - end - - def fetch(url, body=nil, headers=nil, limit=nil) - response = @responses.shift - @test.assert(body.nil?) - @test.assert_equal(response.final_url, url) - return response - end - end - - class TestDiscoveryFailure < Test::Unit::TestCase - def initialize(*args) - super(*args) - - @responses = [ - [HTTPResponse._from_raw_data(nil, nil, {}, 'http://network.error/')], - [HTTPResponse._from_raw_data(404, nil, {}, 'http://not.found/')], - [HTTPResponse._from_raw_data(400, nil, {}, 'http://bad.request/')], - [HTTPResponse._from_raw_data(500, nil, {}, 'http://server.error/')], - [HTTPResponse._from_raw_data(200, nil, {'x-xrds-location' => 'http://xrds.missing/'}, - 'http://header.found/'), - HTTPResponse._from_raw_data(404, nil, {}, 'http://xrds.missing/')], - ] - end - - def test_discovery_failure - - @responses.each { |response_set| - @url = response_set[0].final_url - OpenID.fetcher = SimpleMockFetcher.new(self, response_set) - - expected_status = response_set[-1].code - begin - OpenID.discover(@url) - rescue DiscoveryFailure => why - assert_equal(why.http_response.code, expected_status) - else - flunk('Did not raise DiscoveryFailure') - end - - OpenID.fetcher = nil - } - end - end - - ### Tests for raising/catching exceptions from the fetcher through - ### the discover function - - class ErrorRaisingFetcher - # Just raise an exception when fetch is called - - def initialize(thing_to_raise) - @thing_to_raise = thing_to_raise - end - - def fetch(url, body=nil, headers=nil, limit=nil) - raise @thing_to_raise - end - end - - class DidFetch < Exception - # Custom exception just to make sure it's not handled differently - end - - class TestFetchException < Test::Unit::TestCase - # Discovery should only raise DiscoveryFailure - - def initialize(*args) - super(*args) - - @cases = [ - DidFetch.new(), - Exception.new(), - ArgumentError.new(), - RuntimeError.new(), - ] - end - - def test_fetch_exception - @cases.each { |exc| - OpenID.fetcher = ErrorRaisingFetcher.new(exc) - assert_raises(DiscoveryFailure) { - OpenID.discover('http://doesnt.matter/') - } - OpenID.fetcher = nil - } - end - end - - ### Tests for openid.consumer.discover.discover - - class TestNormalization < Test::Unit::TestCase - def test_addingProtocol - f = ErrorRaisingFetcher.new(RuntimeError.new()) - OpenID.fetcher = f - - begin - OpenID.discover('users.stompy.janrain.com:8000/x') - rescue DiscoveryFailure => why - assert why.to_s.match("Failed to fetch") - rescue RuntimeError - end - - OpenID.fetcher = nil - end - end - - class DiscoveryMockFetcher - def initialize(documents) - @redirect = nil - @documents = documents - @fetchlog = [] - end - - def fetch(url, body=nil, headers=nil, limit=nil) - @fetchlog << [url, body, headers] - if @redirect - final_url = @redirect - else - final_url = url - end - - begin - ctype, body = @documents.fetch(url) - rescue IndexError - status = 404 - ctype = 'text/plain' - body = '' - else - status = 200 - end - - return HTTPResponse._from_raw_data(status, body, {'content-type' => ctype}, final_url) - end - end - - class BaseTestDiscovery < Test::Unit::TestCase - attr_accessor :id_url, :fetcher_class - - def initialize(*args) - super(*args) - @id_url = "http://someuser.unittest/" - @documents = {} - @fetcher_class = DiscoveryMockFetcher - end - - def _checkService(s, server_url, claimed_id=nil, - local_id=nil, canonical_id=nil, - types=nil, used_yadis=false, - display_identifier=nil) - assert_equal(server_url, s.server_url) - if types == ['2.0 OP'] - assert(!claimed_id) - assert(!local_id) - assert(!s.claimed_id) - assert(!s.local_id) - assert(!s.get_local_id()) - assert(!s.compatibility_mode()) - assert(s.is_op_identifier()) - assert_equal(s.preferred_namespace(), - OPENID_2_0_MESSAGE_NS) - else - assert_equal(claimed_id, s.claimed_id) - assert_equal(local_id, s.get_local_id()) - end - - if used_yadis - assert(s.used_yadis, "Expected to use Yadis") - else - assert(!s.used_yadis, - "Expected to use old-style discovery") - end - - openid_types = { - '1.1' => OPENID_1_1_TYPE, - '1.0' => OPENID_1_0_TYPE, - '2.0' => OPENID_2_0_TYPE, - '2.0 OP' => OPENID_IDP_2_0_TYPE, - } - - type_uris = types.collect { |t| openid_types[t] } - - assert_equal(type_uris, s.type_uris) - assert_equal(canonical_id, s.canonical_id) - - if canonical_id.nil? - assert_equal(claimed_id, s.display_identifier) - else - assert_equal(display_identifier, s.display_identifier) - end - end - - def setup - # @documents = @documents.dup - @fetcher = @fetcher_class.new(@documents) - OpenID.fetcher = @fetcher - end - - def teardown - OpenID.fetcher = nil - end - - def test_blank - # XXX to avoid > 0 test requirement - end - end - -# def readDataFile(filename): -# module_directory = os.path.dirname(os.path.abspath(__file__)) -# filename = os.path.join( -# module_directory, 'data', 'test_discover', filename) -# return file(filename).read() - - class TestDiscovery < BaseTestDiscovery - include TestDataMixin - - def _discover(content_type, data, - expected_services, expected_id=nil) - if expected_id.nil? - expected_id = @id_url - end - - @documents[@id_url] = [content_type, data] - id_url, services = OpenID.discover(@id_url) - - assert_equal(expected_services, services.length) - assert_equal(expected_id, id_url) - return services - end - - def test_404 - assert_raise(DiscoveryFailure) { - OpenID.discover(@id_url + '/404') - } - end - - def test_noOpenID - services = _discover('text/plain', - "junk", 0) - - services = _discover( - 'text/html', - read_data_file('test_discover/openid_no_delegate.html', false), - 1) - - _checkService( - services[0], - "http://www.myopenid.com/server", - @id_url, - @id_url, - nil, - ['1.1'], - false) - end - - def test_malformed_meta_tag - @id_url = "http://user.myopenid.com/" - - services = _discover( - 'text/html', - read_data_file('test_discover/malformed_meta_tag.html', false), - 2) - - _checkService( - services[0], - "http://www.myopenid.com/server", - @id_url, - @id_url, - nil, - ['2.0'], - false) - - _checkService( - services[1], - "http://www.myopenid.com/server", - @id_url, - @id_url, - nil, - ['1.1'], - false) - end - - def test_html1 - services = _discover('text/html', - read_data_file('test_discover/openid.html', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - ['1.1'], - false) - end - - def test_html1Fragment - # Ensure that the Claimed Identifier does not have a fragment if - # one is supplied in the User Input. - content_type = 'text/html' - data = read_data_file('test_discover/openid.html', false) - expected_services = 1 - - @documents[@id_url] = [content_type, data] - expected_id = @id_url - @id_url = @id_url + '#fragment' - id_url, services = OpenID.discover(@id_url) - - assert_equal(expected_services, services.length) - assert_equal(expected_id, id_url) - - _checkService(services[0], - "http://www.myopenid.com/server", - expected_id, - 'http://smoker.myopenid.com/', - nil, - ['1.1'], - false) - end - - def test_html2 - services = _discover('text/html', - read_data_file('test_discover/openid2.html', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - ['2.0'], - false) - end - - def test_html1And2 - services = _discover( - 'text/html', - read_data_file('test_discover/openid_1_and_2.html', false), - 2) - - services.zip(['2.0', '1.1']).each { |s, t| - _checkService(s, - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - [t], - false) - } - end - - def test_yadisEmpty - services = _discover('application/xrds+xml', - read_data_file('test_discover/yadis_0entries.xml', false), - 0) - end - - def test_htmlEmptyYadis - # HTML document has discovery information, but points to an - # empty Yadis document. The XRDS document pointed to by - # "openid_and_yadis.html" - @documents[@id_url + 'xrds'] = ['application/xrds+xml', - read_data_file('test_discover/yadis_0entries.xml', false)] - - services = _discover('text/html', - read_data_file('test_discover/openid_and_yadis.html', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - ['1.1'], - false) - end - - def test_yadis1NoDelegate - services = _discover('application/xrds+xml', - read_data_file('test_discover/yadis_no_delegate.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - @id_url, - nil, - ['1.0'], - true) - end - - def test_yadis2NoLocalID - services = _discover('application/xrds+xml', - read_data_file('test_discover/openid2_xrds_no_local_id.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - @id_url, - nil, - ['2.0'], - true) - end - - def test_yadis2 - services = _discover('application/xrds+xml', - read_data_file('test_discover/openid2_xrds.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - ['2.0'], - true) - end - - def test_yadis2OP - services = _discover('application/xrds+xml', - read_data_file('test_discover/yadis_idp.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - nil, nil, nil, - ['2.0 OP'], - true) - end - - def test_yadis2OPDelegate - # The delegate tag isn't meaningful for OP entries. - services = _discover('application/xrds+xml', - read_data_file('test_discover/yadis_idp_delegate.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - nil, nil, nil, - ['2.0 OP'], - true) - end - - def test_yadis2BadLocalID - assert_raise(DiscoveryFailure) { - _discover('application/xrds+xml', - read_data_file('test_discover/yadis_2_bad_local_id.xml', false), - 1) - } - end - - def test_yadis1And2 - services = _discover('application/xrds+xml', - read_data_file('test_discover/openid_1_and_2_xrds.xml', false), - 1) - - _checkService(services[0], - "http://www.myopenid.com/server", - @id_url, - 'http://smoker.myopenid.com/', - nil, - ['2.0', '1.1'], - true) - end - - def test_yadis1And2BadLocalID - assert_raise(DiscoveryFailure) { - _discover('application/xrds+xml', - read_data_file('test_discover/openid_1_and_2_xrds_bad_delegate.xml', false), - 1) - } - end - end - - class MockFetcherForXRIProxy - - def initialize(documents, proxy_url=Yadis::XRI::ProxyResolver::DEFAULT_PROXY) - @documents = documents - @fetchlog = [] - @proxy_url = nil - end - - def fetch(url, body=nil, headers=nil, limit=nil) - @fetchlog << [url, body, headers] - - u = URI::parse(url) - proxy_host = u.host - xri = u.path - query = u.query - - if !headers and !query - raise ArgumentError.new("No headers or query; you probably didn't " + - "mean to do that.") - end - - if xri.starts_with?('/') - xri = xri[1..-1] - end - - begin - ctype, body = @documents.fetch(xri) - rescue IndexError - status = 404 - ctype = 'text/plain' - body = '' - else - status = 200 - end - - return HTTPResponse._from_raw_data(status, body, - {'content-type' => ctype}, url) - end - end - - class TestXRIDiscovery < BaseTestDiscovery - - include TestDataMixin - include TestUtil - - def initialize(*args) - super(*args) - - @fetcher_class = MockFetcherForXRIProxy - - @documents = {'=smoker' => ['application/xrds+xml', - read_data_file('test_discover/yadis_2entries_delegate.xml', false)], - '=smoker*bad' => ['application/xrds+xml', - read_data_file('test_discover/yadis_another_delegate.xml', false)]} - end - - def test_xri - user_xri, services = OpenID.discover_xri('=smoker') - - _checkService(services[0], - "http://www.myopenid.com/server", - Yadis::XRI.make_xri("=!1000"), - 'http://smoker.myopenid.com/', - Yadis::XRI.make_xri("=!1000"), - ['1.0'], - true, - '=smoker') - - _checkService(services[1], - "http://www.livejournal.com/openid/server.bml", - Yadis::XRI.make_xri("=!1000"), - 'http://frank.livejournal.com/', - Yadis::XRI.make_xri("=!1000"), - ['1.0'], - true, - '=smoker') - end - - def test_xri_normalize - user_xri, services = OpenID.discover_xri('xri://=smoker') - - _checkService(services[0], - "http://www.myopenid.com/server", - Yadis::XRI.make_xri("=!1000"), - 'http://smoker.myopenid.com/', - Yadis::XRI.make_xri("=!1000"), - ['1.0'], - true, - '=smoker') - - _checkService(services[1], - "http://www.livejournal.com/openid/server.bml", - Yadis::XRI.make_xri("=!1000"), - 'http://frank.livejournal.com/', - Yadis::XRI.make_xri("=!1000"), - ['1.0'], - true, - '=smoker') - end - - def test_xriNoCanonicalID - silence_logging { - user_xri, services = OpenID.discover_xri('=smoker*bad') - assert(services.empty?) - } - end - - def test_useCanonicalID - # When there is no delegate, the CanonicalID should be used with - # XRI. - endpoint = OpenIDServiceEndpoint.new() - endpoint.claimed_id = Yadis::XRI.make_xri("=!1000") - endpoint.canonical_id = Yadis::XRI.make_xri("=!1000") - assert_equal(endpoint.get_local_id, Yadis::XRI.make_xri("=!1000")) - end - end - - class TestXRIDiscoveryIDP < BaseTestDiscovery - include TestDataMixin - - def initialize(*args) - super(*args) - - @fetcher_class = MockFetcherForXRIProxy - - @documents = {'=smoker' => ['application/xrds+xml', - read_data_file('test_discover/yadis_2entries_idp.xml', false)] } - end - - def test_xri - user_xri, services = OpenID.discover_xri('=smoker') - assert(!services.empty?, "Expected services, got zero") - assert_equal(services[0].server_url, - "http://www.livejournal.com/openid/server.bml") - end - end - - class TestPreferredNamespace < Test::Unit::TestCase - def initialize(*args) - super(*args) - - @cases = [ - [OPENID1_NS, []], - [OPENID1_NS, ['http://jyte.com/']], - [OPENID1_NS, [OPENID_1_0_TYPE]], - [OPENID1_NS, [OPENID_1_1_TYPE]], - [OPENID2_NS, [OPENID_2_0_TYPE]], - [OPENID2_NS, [OPENID_IDP_2_0_TYPE]], - [OPENID2_NS, [OPENID_2_0_TYPE, - OPENID_1_0_TYPE]], - [OPENID2_NS, [OPENID_1_0_TYPE, - OPENID_2_0_TYPE]], - ] - end - - def test_preferred_namespace - - @cases.each { |expected_ns, type_uris| - endpoint = OpenIDServiceEndpoint.new() - endpoint.type_uris = type_uris - actual_ns = endpoint.preferred_namespace() - assert_equal(actual_ns, expected_ns) - } - end - end - - class TestIsOPIdentifier < Test::Unit::TestCase - def setup - @endpoint = OpenIDServiceEndpoint.new() - end - - def test_none - assert(!@endpoint.is_op_identifier()) - end - - def test_openid1_0 - @endpoint.type_uris = [OPENID_1_0_TYPE] - assert(!@endpoint.is_op_identifier()) - end - - def test_openid1_1 - @endpoint.type_uris = [OPENID_1_1_TYPE] - assert(!@endpoint.is_op_identifier()) - end - - def test_openid2 - @endpoint.type_uris = [OPENID_2_0_TYPE] - assert(!@endpoint.is_op_identifier()) - end - - def test_openid2OP - @endpoint.type_uris = [OPENID_IDP_2_0_TYPE] - assert(@endpoint.is_op_identifier()) - end - - def test_multipleMissing - @endpoint.type_uris = [OPENID_2_0_TYPE, - OPENID_1_0_TYPE] - assert(!@endpoint.is_op_identifier()) - end - - def test_multiplePresent - @endpoint.type_uris = [OPENID_2_0_TYPE, - OPENID_1_0_TYPE, - OPENID_IDP_2_0_TYPE] - assert(@endpoint.is_op_identifier()) - end - end - - class TestFromOPEndpointURL < Test::Unit::TestCase - def setup - @op_endpoint_url = 'http://example.com/op/endpoint' - @endpoint = OpenIDServiceEndpoint.from_op_endpoint_url(@op_endpoint_url) - end - - def test_isOPEndpoint - assert(@endpoint.is_op_identifier()) - end - - def test_noIdentifiers - assert_equal(@endpoint.get_local_id, nil) - assert_equal(@endpoint.claimed_id, nil) - end - - def test_compatibility - assert(!@endpoint.compatibility_mode()) - end - - def test_canonical_id - assert_equal(@endpoint.canonical_id, nil) - end - - def test_serverURL - assert_equal(@endpoint.server_url, @op_endpoint_url) - end - end - - class TestDiscoverFunction < Test::Unit::TestCase - def test_discover_function - # XXX these were all different tests in python, but they're - # combined here so I only have to use with_method_overridden - # once. - discoverXRI = Proc.new { |identifier| - return 'XRI' - } - - discoverURI = Proc.new { |identifier| - return 'URI' - } - - OpenID.extend(OverrideMethodMixin) - - OpenID.with_method_overridden(:discover_uri, discoverURI) do - OpenID.with_method_overridden(:discover_xri, discoverXRI) do - assert_equal('URI', OpenID.discover('http://woo!')) - assert_equal('URI', OpenID.discover('not a URL or XRI')) - assert_equal('XRI', OpenID.discover('xri://=something')) - assert_equal('XRI', OpenID.discover('=something')) - end - end - end - end - - class TestEndpointSupportsType < Test::Unit::TestCase - def setup - @endpoint = OpenIDServiceEndpoint.new() - end - - def failUnlessSupportsOnly(*types) - ['foo', - OPENID_1_1_TYPE, - OPENID_1_0_TYPE, - OPENID_2_0_TYPE, - OPENID_IDP_2_0_TYPE].each { |t| - if types.member?(t) - assert(@endpoint.supports_type(t), - sprintf("Must support %s", t)) - else - assert(!@endpoint.supports_type(t), - sprintf("Shouldn't support %s", t)) - end - } - end - - def test_supportsNothing - failUnlessSupportsOnly() - end - - def test_openid2 - @endpoint.type_uris = [OPENID_2_0_TYPE] - failUnlessSupportsOnly(OPENID_2_0_TYPE) - end - - def test_openid2provider - @endpoint.type_uris = [OPENID_IDP_2_0_TYPE] - failUnlessSupportsOnly(OPENID_IDP_2_0_TYPE, - OPENID_2_0_TYPE) - end - - def test_openid1_0 - @endpoint.type_uris = [OPENID_1_0_TYPE] - failUnlessSupportsOnly(OPENID_1_0_TYPE) - end - - def test_openid1_1 - @endpoint.type_uris = [OPENID_1_1_TYPE] - failUnlessSupportsOnly(OPENID_1_1_TYPE) - end - - def test_multiple - @endpoint.type_uris = [OPENID_1_1_TYPE, - OPENID_2_0_TYPE] - failUnlessSupportsOnly(OPENID_1_1_TYPE, - OPENID_2_0_TYPE) - end - - def test_multipleWithProvider - @endpoint.type_uris = [OPENID_1_1_TYPE, - OPENID_2_0_TYPE, - OPENID_IDP_2_0_TYPE] - failUnlessSupportsOnly(OPENID_1_1_TYPE, - OPENID_2_0_TYPE, - OPENID_IDP_2_0_TYPE) - end - end - - class TestEndpointDisplayIdentifier < Test::Unit::TestCase - def test_strip_fragment - @endpoint = OpenIDServiceEndpoint.new() - @endpoint.claimed_id = 'http://recycled.invalid/#123' - assert_equal 'http://recycled.invalid/', @endpoint.display_identifier - end - end - - - class TestNormalizeURL < Test::Unit::TestCase - def test_no_host - assert_raise(DiscoveryFailure) { - OpenID::normalize_url('http:///too-many.invalid/slashes') - } - end - end -end |