summaryrefslogtreecommitdiffstats
path: root/vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb')
-rw-r--r--vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb257
1 files changed, 257 insertions, 0 deletions
diff --git a/vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb b/vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb
new file mode 100644
index 000000000..dc4a09e69
--- /dev/null
+++ b/vendor/gems/ruby-openid-2.1.4/test/test_consumer.rb
@@ -0,0 +1,257 @@
+require "openid/consumer"
+require "test/unit"
+require "testutil"
+
+module OpenID
+ class Consumer
+ module TestConsumer
+ class TestLastEndpoint < Test::Unit::TestCase
+ def test_set_get
+ session = {}
+ consumer = Consumer.new(session, nil)
+ consumer.send(:last_requested_endpoint=, :endpoint)
+ ep = consumer.send(:last_requested_endpoint)
+ assert_equal(:endpoint, ep)
+ ep = consumer.send(:last_requested_endpoint)
+ assert_equal(:endpoint, ep)
+ consumer.send(:cleanup_last_requested_endpoint)
+ ep = consumer.send(:last_requested_endpoint)
+ assert_equal(nil, ep)
+ end
+ end
+
+ class TestBegin < Test::Unit::TestCase
+ attr_accessor :user_input, :anonymous, :services,
+ :discovered_identifier, :checkid_request, :service
+
+ def setup
+ @discovered_identifier = 'http://discovered/'
+ @user_input = 'user.input'
+ @service = :service
+ @services = [@service]
+ @session = {}
+ @anonymous = false
+ @checkid_request = :checkid_request
+ end
+
+ def consumer
+ test = self
+ consumer = Consumer.new(@session, nil)
+ consumer.extend(InstanceDefExtension)
+ consumer.instance_def(:discover) do |identifier|
+ test.assert_equal(test.user_input, identifier)
+ [test.discovered_identifier, test.services]
+ end
+ consumer.instance_def(:begin_without_discovery) do
+ |service, sent_anonymous|
+ test.assert_equal(test.service, service)
+ test.assert_equal(test.anonymous, sent_anonymous)
+ test.checkid_request
+ end
+ consumer
+ end
+
+ def test_begin
+ checkid_request = consumer.begin(@user_input, @anonymous)
+ assert_equal(:checkid_request, checkid_request)
+ assert_equal(['OpenID::Consumer::DiscoveredServices::'\
+ 'OpenID::Consumer::'], @session.keys.sort!)
+ end
+
+ def test_begin_failure
+ @services = []
+ assert_raises(DiscoveryFailure) {
+ consumer.begin(@user_input, @anonymous)
+ }
+ end
+
+ def test_begin_fallback
+ @services = [:service1, :service2]
+ consumer = self.consumer
+ @service = :service1
+ consumer.begin(@user_input, @anonymous)
+ @service = :service2
+ consumer.begin(@user_input, @anonymous)
+ @service = :service1
+ consumer.begin(@user_input, @anonymous)
+ @service = :service2
+ consumer.begin(@user_input, @anonymous)
+ end
+ end
+
+ class TestBeginWithoutDiscovery < Test::Unit::TestCase
+ attr_reader :assoc
+ def setup
+ @session = {}
+ @assoc = :assoc
+ @service = OpenIDServiceEndpoint.new
+ @claimed_id = 'http://claimed.id/'
+ @service.claimed_id = @claimed_id
+ @anonymous = false
+ end
+
+ def consumer
+ test = self
+ assoc_manager = Object.new
+ assoc_manager.extend(InstanceDefExtension)
+ assoc_manager.instance_def(:get_association) do
+ test.assoc
+ end
+
+ consumer = Consumer.new(@session, nil)
+ consumer.extend(InstanceDefExtension)
+ consumer.instance_def(:association_manager) do |service|
+ assoc_manager
+ end
+ consumer
+ end
+
+ def call_begin_without_discovery
+ result = consumer.begin_without_discovery(@service, @anonymous)
+ assert(result.instance_of?(CheckIDRequest))
+ assert_equal(@anonymous, result.anonymous)
+ assert_equal(@service, consumer.send(:last_requested_endpoint))
+ assert_equal(result.instance_variable_get(:@assoc), @assoc)
+ return result
+ end
+
+ def cid_name
+ Consumer.openid1_return_to_claimed_id_name
+ end
+
+ def nonce_name
+ Consumer.openid1_return_to_nonce_name
+ end
+
+ def test_begin_without_openid1
+ result = call_begin_without_discovery
+
+ assert_equal(@claimed_id, result.return_to_args[cid_name])
+ assert_equal([cid_name, nonce_name].sort!,
+ result.return_to_args.keys.sort!)
+ end
+
+ def test_begin_without_openid1_anonymous
+ @anonymous = true
+ assert_raises(ArgumentError) {
+ call_begin_without_discovery
+ }
+ end
+
+ def test_begin_without_openid2
+ @service.type_uris = [OPENID_2_0_TYPE]
+ result = call_begin_without_discovery
+
+ assert(result.return_to_args.empty?)
+ end
+
+ def test_begin_without_openid2_anonymous
+ @anonymous = true
+ @service.type_uris = [OPENID_2_0_TYPE]
+ result = call_begin_without_discovery
+
+ assert(result.return_to_args.empty?)
+ end
+ end
+
+ class TestComplete < Test::Unit::TestCase
+ def setup
+ @session = {}
+ @consumer = Consumer.new(@session, nil)
+ end
+
+ def test_bad_mode
+ response = @consumer.complete({'openid.ns' => OPENID2_NS,
+ 'openid.mode' => 'bad'}, nil)
+ assert_equal(FAILURE, response.status)
+ end
+
+ def test_missing_mode
+ response = @consumer.complete({'openid.ns' => OPENID2_NS}, nil)
+ assert_equal(FAILURE, response.status)
+ end
+
+ def test_cancel
+ response = @consumer.complete({'openid.mode' => 'cancel'}, nil)
+ assert_equal(CANCEL, response.status)
+ end
+
+ def test_setup_needed_openid1
+ response = @consumer.complete({'openid.mode' => 'setup_needed'}, nil)
+ assert_equal(FAILURE, response.status)
+ end
+
+ def test_setup_needed_openid2
+ args = {'openid.ns' => OPENID2_NS, 'openid.mode' => 'setup_needed'}
+ response = @consumer.complete(args, nil)
+ assert_equal(SETUP_NEEDED, response.status)
+ end
+
+ def test_idres_setup_needed_openid1
+ setup_url = 'http://setup.url/'
+ args = {
+ 'openid.user_setup_url' => setup_url,
+ 'openid.mode' => 'id_res',
+ }
+ response = @consumer.complete(args, nil)
+ assert_equal(SETUP_NEEDED, response.status)
+ end
+
+ def test_error
+ contact = 'me'
+ reference = 'thing thing'
+ args = {
+ 'openid.mode' => 'error',
+ 'openid.contact' => contact,
+ 'openid.reference' => reference,
+ }
+ response = @consumer.complete(args, nil)
+ assert_equal(FAILURE, response.status)
+ assert_equal(contact, response.contact)
+ assert_equal(reference, response.reference)
+
+ args['openid.ns'] = OPENID2_NS
+ response = @consumer.complete(args, nil)
+ assert_equal(FAILURE, response.status)
+ assert_equal(contact, response.contact)
+ assert_equal(reference, response.reference)
+ end
+
+ def test_idres_openid1
+ args = {
+ 'openid.mode' => 'id_res',
+ }
+
+ endpoint = OpenIDServiceEndpoint.new
+ endpoint.claimed_id = :test_claimed_id
+
+ idres = Object.new
+ idres.extend(InstanceDefExtension)
+ idres.instance_def(:endpoint){endpoint}
+ idres.instance_def(:signed_fields){:test_signed_fields}
+
+ test = self
+ @consumer.extend(InstanceDefExtension)
+ @consumer.instance_def(:handle_idres) {|message, return_to|
+ test.assert_equal(args, message.to_post_args)
+ test.assert_equal(:test_return_to, return_to)
+ idres
+ }
+
+ response = @consumer.complete(args, :test_return_to)
+ assert_equal(SUCCESS, response.status, response.message)
+ assert_equal(:test_claimed_id, response.identity_url)
+ assert_equal(endpoint, response.endpoint)
+
+ error_message = "In Soviet Russia, id_res handles you!"
+ @consumer.instance_def(:handle_idres) {|message, return_to|
+ raise ProtocolError, error_message
+ }
+ response = @consumer.complete(args, :test_return_to)
+ assert_equal(FAILURE, response.status)
+ assert_equal(error_message, response.message)
+ end
+ end
+ end
+ end
+end