From 6bcd3d02b27ec7e73b5dd333c4b994454f7ac76a Mon Sep 17 00:00:00 2001 From: Kazuhiro Serizawa Date: Thu, 23 Feb 2017 14:24:39 +0900 Subject: [PATCH 01/28] Update admin/mkassoc to enable to work --- admin/mkassoc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/admin/mkassoc b/admin/mkassoc index d9c28d20..0c839c01 100644 --- a/admin/mkassoc +++ b/admin/mkassoc @@ -1,11 +1,16 @@ #!/usr/bin/env ruby require "openid/consumer/associationmanager" -require "openid/store/memstore" +require "openid/store/memory" -store = OpenID::MemoryStore.new +store = OpenID::Store::Memory.new ARGV.each do |server_url| - mgr = OpenID::Consumer::AssociationManager.new(store, URI.parse(server_url)) + unless URI::regexp =~ server_url + puts "`#{server_url}` will be skipped for invalid URI format." + next + end + + mgr = OpenID::Consumer::AssociationManager.new(store, server_url) puts '=' * 50 puts "Server: #{server_url}" puts mgr.get_association.serialize From d4d7946ebad06016085c8f83af3b432b1c2e1350 Mon Sep 17 00:00:00 2001 From: Holger Just Date: Mon, 15 May 2017 13:39:42 +0200 Subject: [PATCH 02/28] Rescue from Yadis::XRI::XRIHTTPError on discovery The error is explicitly thrown on any fetch errors by Yadis::XRI::ProxyResolve#query (including for bad URIs, network issues, invalid responses, ...) --- lib/openid/consumer/discovery.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/consumer/discovery.rb b/lib/openid/consumer/discovery.rb index a1c2257e..8cbfb024 100644 --- a/lib/openid/consumer/discovery.rb +++ b/lib/openid/consumer/discovery.rb @@ -450,7 +450,7 @@ def self.discover_xri(iname) services.each { |service_element| endpoints += flt.get_service_endpoints(iname, service_element) } - rescue Yadis::XRDSError => why + rescue Yadis::XRDSError, Yadis::XRI::XRIHTTPError => why Util.log('xrds error on ' + iname + ': ' + why.to_s) end From e1bbfadb3c7c45ffa4d1ba51bb959e9497ddaa1f Mon Sep 17 00:00:00 2001 From: Holger Just Date: Mon, 15 May 2017 14:10:06 +0200 Subject: [PATCH 03/28] Ensure we always have an up-to-date bundler available on Travis At least jruby-head currently doesn't come with bundler pre-installed. --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index b8a27ad2..3c62d4d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,3 +9,6 @@ rvm: - jruby-head - jruby-19mode - rbx + +before_install: + - "gem install bundler" From 4e3d0e3fc557ace307092b66e45225f8741a2d78 Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Fri, 23 Jun 2017 14:48:03 +0200 Subject: [PATCH 04/28] Update list of Rubies to build for on TravisCI Rubinius is not supported on the default (12.04) distribution, so we must build on Ubuntu Trusty. Also, the Rubinius version in RVM has apparently been renamed. Allow failing builds on *-head rubies. --- .travis.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3c62d4d6..93f8f056 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,24 @@ language: ruby +sudo: required +dist: trusty script: rake rvm: - - 1.9.3 - - 2.0.0 + - "1.9" + - "2.0" - "2.1" - "2.2" + - "2.3" + - "2.4" - ruby-head + - jruby - jruby-head - jruby-19mode - - rbx + - rubinius-3 before_install: - "gem install bundler" + +matrix: + allow_failures: + - rvm: "ruby-head" + - rvm: "jruby-head" From 9c75899134deb15810e7edb595e034a0060a0c38 Mon Sep 17 00:00:00 2001 From: "binjie.zhou" Date: Wed, 20 Dec 2017 03:44:54 +0000 Subject: [PATCH 05/28] read from env first --- lib/openid/fetchers.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/fetchers.rb b/lib/openid/fetchers.rb index db5443f0..4d663b49 100644 --- a/lib/openid/fetchers.rb +++ b/lib/openid/fetchers.rb @@ -117,7 +117,7 @@ class StandardFetcher USER_AGENT = "ruby-openid/#{OpenID::VERSION} (#{RUBY_PLATFORM})" REDIRECT_LIMIT = 5 - TIMEOUT = 60 + TIMEOUT = ENV['RUBY_OPENID_FETCHER_TIMEOUT'] || 60 attr_accessor :ca_file attr_accessor :timeout From 4559cbbfd520458d0ea04f4cf1c8ee124c3807a6 Mon Sep 17 00:00:00 2001 From: Nicolas Leger Date: Sat, 3 Mar 2018 12:29:15 +0100 Subject: [PATCH 06/28] [CI] Test against Ruby 2.5 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 93f8f056..0abfc9c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ rvm: - "2.2" - "2.3" - "2.4" + - "2.5" - ruby-head - jruby - jruby-head From cb4c3aaa90e8c17848a379a099067f46edbca073 Mon Sep 17 00:00:00 2001 From: Abraham Sangha Date: Tue, 3 Apr 2018 18:33:10 -0600 Subject: [PATCH 07/28] Fix minor typo in consumer --- lib/openid/consumer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/consumer.rb b/lib/openid/consumer.rb index 1dba2093..30019492 100644 --- a/lib/openid/consumer.rb +++ b/lib/openid/consumer.rb @@ -139,7 +139,7 @@ module OpenID # # Add an OpenID login field somewhere on your site. When an OpenID # is entered in that field and the form is submitted, it should make - # a request to the your site which includes that OpenID URL. + # a request to the site that includes that OpenID URL. # # First, the application should instantiate a Consumer with a # session for per-user state and store for shared state using the From a8e643d194acc35c7d5890109b14e0c6f590a1fe Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Thu, 19 Apr 2018 10:19:57 +0200 Subject: [PATCH 08/28] Bump version to 2.8.0 and update CHANGELOG [skip ci] --- CHANGELOG.md | 18 ++++++++++++++++++ lib/openid/version.rb | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66b88d38..3a0910ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 2.8.0 + +* Fix `admin/mkassoc` script. + See https://github.com/openid/ruby-openid/pull/103 +* Allow spcifying timeout for `OpenID::StandardFetcher` in environment variables. + See https://github.com/openid/ruby-openid/pull/109 +* Fixed some documentation. + See https://github.com/openid/ruby-openid/pull/111 +* Fixed example server. + See https://github.com/openid/ruby-openid/pull/91 +* Fixed tests. + See https://github.com/openid/ruby-openid/pull/86 +* Misc. changes to the CI setup. + See + - https://github.com/openid/ruby-openid/pull/110 + - https://github.com/openid/ruby-openid/pull/108 + - https://github.com/openid/ruby-openid/pull/107 + ## 2.7.0 * Use RFC 2396 compatible URI parser for trustroot - 7c84ec9ced3ccbdad575e02dbfa81e53b52f909e diff --git a/lib/openid/version.rb b/lib/openid/version.rb index a65e1b6c..a4ff1014 100644 --- a/lib/openid/version.rb +++ b/lib/openid/version.rb @@ -1,3 +1,3 @@ module OpenID - VERSION = "2.7.0" + VERSION = "2.8.0" end From fa6b2c61fdf539bd31eef22592d24e43bd84bfda Mon Sep 17 00:00:00 2001 From: r7kamura Date: Fri, 20 Jul 2018 12:49:52 +0900 Subject: [PATCH 09/28] Add lib/ruby-openid.rb for Bundler.require To remove extra :require option like this: ```rb gem "ruby-openid", require: "openid" ``` This change may be related to https://github.com/openid/ruby-openid/issues/48. --- lib/ruby-openid.rb | 1 + 1 file changed, 1 insertion(+) create mode 100644 lib/ruby-openid.rb diff --git a/lib/ruby-openid.rb b/lib/ruby-openid.rb new file mode 100644 index 00000000..362e03b1 --- /dev/null +++ b/lib/ruby-openid.rb @@ -0,0 +1 @@ +require 'openid' From e6499dac9571784d2193ed2d8990cf9a613b3565 Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Wed, 6 Mar 2019 15:33:47 +0100 Subject: [PATCH 10/28] Add Ruby 2.6 and better Bundler support on Travis Fall back to a pre-2 version of Bundler on older versions of Ruby, since v2.0 requires Ruby 2.3+ --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0abfc9c4..3ac53512 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ rvm: - "2.3" - "2.4" - "2.5" + - "2.6" - ruby-head - jruby - jruby-head @@ -17,7 +18,7 @@ rvm: - rubinius-3 before_install: - - "gem install bundler" + - "gem install bundler || gem install bundler --version '< 2'" matrix: allow_failures: From 81fab03e1259512cb67c408907f173871d48c983 Mon Sep 17 00:00:00 2001 From: Johan Tell Date: Tue, 5 Mar 2019 08:51:23 +0100 Subject: [PATCH 11/28] Remove circular require --- lib/openid/fetchers.rb | 2 +- lib/openid/yadis/xri.rb | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/openid/fetchers.rb b/lib/openid/fetchers.rb index 4d663b49..69e0b4ba 100644 --- a/lib/openid/fetchers.rb +++ b/lib/openid/fetchers.rb @@ -1,6 +1,6 @@ require 'net/http' -require 'openid' require 'openid/util' +require 'openid/version' begin require 'net/https' diff --git a/lib/openid/yadis/xri.rb b/lib/openid/yadis/xri.rb index 89dd99af..d0c0ff4f 100644 --- a/lib/openid/yadis/xri.rb +++ b/lib/openid/yadis/xri.rb @@ -1,4 +1,3 @@ -require 'openid/yadis/xrds' require 'openid/fetchers' module OpenID From 3acdbcf0e773e5cd5a26a448ca2a6ba8b57c32a0 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 15:54:14 +0100 Subject: [PATCH 12/28] README: Use SVG badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3739c69..8e339913 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A Ruby library for verifying and serving OpenID identities. -[![Build Status](https://secure.travis-ci.org/openid/ruby-openid.png)](http://travis-ci.org/openid/ruby-openid) +[![Build Status](https://secure.travis-ci.org/openid/ruby-openid.svg)](http://travis-ci.org/openid/ruby-openid) ## Features From e96ad1cdbfa8acc5c4bbabce94a1fd2119ec653c Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 16:02:07 +0100 Subject: [PATCH 13/28] README: Remove dead link, add link texts --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b3739c69..f58f423b 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,8 @@ the examples. ## Homepage - * [GitHub](http://github.com/openid/ruby-openid) - * [Website](http://openid.net/) + * GitHub repository: [openid/ruby-openid](http://github.com/openid/ruby-openid) + * Homepage: [OpenID.net](http://openid.net/) ## Community @@ -74,7 +74,7 @@ hesitate to send it to us: [How to contribute](http://openidenabled.com/contribu Copyright 2006-2012, JanRain, Inc. -Contact openid@janrain.com or visit the [OpenID channel on pibb.com](http://pibb.com/go/openid). +Contact openid@janrain.com. ## License From 59fadec16715642b63d288a1d1c43aae40107735 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 16:05:08 +0100 Subject: [PATCH 14/28] CHANGELOG: fix typo [ci skip] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a0910ac..860c5988 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ * Fix `admin/mkassoc` script. See https://github.com/openid/ruby-openid/pull/103 -* Allow spcifying timeout for `OpenID::StandardFetcher` in environment variables. +* Allow specifying timeout for `OpenID::StandardFetcher` in environment variables. See https://github.com/openid/ruby-openid/pull/109 * Fixed some documentation. See https://github.com/openid/ruby-openid/pull/111 From 9fbe188b3e7fae6410007cb6c9230f801a9820b7 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 16:30:50 +0100 Subject: [PATCH 15/28] Turn examples/README into markdown [ci skip] --- examples/{README => README.md} | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) rename examples/{README => README.md} (78%) diff --git a/examples/README b/examples/README.md similarity index 78% rename from examples/README rename to examples/README.md index 71aa30d7..71a2aeac 100644 --- a/examples/README +++ b/examples/README.md @@ -3,30 +3,35 @@ OpenID library. Make sure you have properly installed the library before running the examples. These examples are a great place to start in integrating OpenID into your application. -==Rails example +## Rails example -The rails_openid contains a fully functional OpenID server and relying +The `rails_openid` directory contains a fully functional OpenID server and relying party, and acts as a starting point for implementing your own production rails server. You'll need the latest version of Ruby on Rails installed, and then: - cd rails_openid - ./script/server +```shell +cd rails_openid +./script/server +``` Open a web browser to http://localhost:3000/ and follow the instructions. The relevant code to work from when writing your Rails OpenID Relying Party is: + rails_openid/app/controllers/consumer_controller.rb + If you are working on an OpenID provider, check out + rails_openid/app/controllers/server_controller.rb Since the library and examples are Apache-licensed, don't be shy about copy-and-paste. -==Rails ActiveRecord OpenIDStore plugin +## Rails ActiveRecord OpenIDStore plugin For various reasons you may want or need to deploy your ruby openid -consumer/server using an SQL based store. The active_record_openid_store +consumer/server using an SQL based store. The `active_record_openid_store` is a plugin that makes using an SQL based store simple. Follow the README inside the plugin's dir for usage. From 0dfeb8200d443690c2db65074380ae319b172096 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 16:35:27 +0100 Subject: [PATCH 16/28] Refer to examples/README.md in INSTALL.md - [ci skip] --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 79be34c5..dfa6a234 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -44,4 +44,4 @@ Go into the test directory and execute the `runtests.rb` script. * Run `consumer.rb` in the examples directory. * Get started writing your own consumer using OpenID::Consumer * Write your own server with `OpenID::Server` -* Use the `OpenIDLoginGenerator`! Read `example/README` for more info. +* Use the `OpenIDLoginGenerator`! Read `example/README.md` for more info. From 1a8389dccfe58e731d8efd6d54b3deb03e0eb10d Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 16:40:25 +0100 Subject: [PATCH 17/28] Modernize language in INSTALL.md [ci skip] --- INSTALL.md | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index dfa6a234..8a20b178 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,21 +1,23 @@ # Ruby OpenID Library Installation -## Rubygems Installation +## Install as a gem -Rubygems is a tool for installing ruby libraries and their -dependancies. If you have rubygems installed, simply: +`ruby-openid` is distributed on [RubyGems](https://rubygems.org/). +Install it: gem install ruby-openid +This is probably what you need. + ## Manual Installation -Unpack the archive and run setup.rb to install: +Unpack the archive and run `setup.rb` to install: ruby setup.rb -setup.rb installs the library into your system ruby. If don't want to +`setup.rb` installs the library into your system ruby. If don't want to add openid to you system ruby, you may instead add the `lib` directory of -the extracted tarball to your RUBYLIB environment variable: +the extracted tarball to your `RUBYLIB` environment variable: $ export RUBYLIB=${RUBYLIB}:/path/to/ruby-openid/lib @@ -27,21 +29,13 @@ Make sure everything installed ok: irb$> require "openid" => true -Or, if you installed via rubygems: - - $> irb - irb$> require "rubygems" - => true - irb$> require_gem "ruby-openid" - => true - ## Run the test suite Go into the test directory and execute the `runtests.rb` script. ## Next steps -* Run `consumer.rb` in the examples directory. -* Get started writing your own consumer using OpenID::Consumer +* Run `consumer.rb` in the `examples/` directory. +* Get started writing your own consumer using `OpenID::Consumer` * Write your own server with `OpenID::Server` -* Use the `OpenIDLoginGenerator`! Read `example/README.md` for more info. +* Use the `OpenIDLoginGenerator`! Read `examples/README.md` for more info. From b54f93c8116d8a158e2c7fd696277b25424b605a Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 17:13:03 +0100 Subject: [PATCH 18/28] Use assert_nil, File.exist? --- test/test_associationmanager.rb | 28 +++++++++++----------- test/test_ax.rb | 10 ++++---- test/test_consumer.rb | 2 +- test/test_discover.rb | 6 ++--- test/test_discovery_manager.rb | 18 +++++++------- test/test_message.rb | 42 +++++++++++++++++---------------- test/test_pape.rb | 14 +++++------ test/test_responses.rb | 2 +- test/test_server.rb | 19 +++++++-------- test/test_sreg.rb | 3 +-- test/test_stores.rb | 2 +- test/test_yadis_discovery.rb | 2 +- 12 files changed, 73 insertions(+), 75 deletions(-) diff --git a/test/test_associationmanager.rb b/test/test_associationmanager.rb index 47c22645..1d880292 100644 --- a/test/test_associationmanager.rb +++ b/test/test_associationmanager.rb @@ -304,7 +304,7 @@ def setup # server error or is otherwise undecipherable. def test_bad_response assert_log_matches('Server error when requesting an association') { - assert_equal(call_negotiate([mk_message({})]), nil) + assert_nil(call_negotiate([mk_message({})])) } end @@ -320,7 +320,7 @@ def test_empty_assoc_type "Server #{@server_url} responded with unsupported "\ "association session but did not supply a fallback." ) { - assert_equal(call_negotiate([msg]), nil) + assert_nil(call_negotiate([msg])) } end @@ -337,7 +337,7 @@ def test_empty_session_type "Server #{@server_url} responded with unsupported "\ "association session but did not supply a fallback." ) { - assert_equal(call_negotiate([msg]), nil) + assert_nil(call_negotiate([msg])) } end @@ -357,7 +357,7 @@ def test_not_allowed assert_log_matches('Unsupported association type', 'Server sent unsupported session/association type:') { - assert_equal(call_negotiate([msg], negotiator), nil) + assert_nil(call_negotiate([msg], negotiator)) } end @@ -388,7 +388,7 @@ def test_unsupported_with_retry_and_fail assert_log_matches('Unsupported association type', "Server #{@server_url} refused") { - assert_equal(call_negotiate([msg, msg]), nil) + assert_nil(call_negotiate([msg, msg])) } end @@ -424,7 +424,7 @@ def setup def test_bad_response assert_log_matches('Server error when requesting an association') { response = call_negotiate([mk_message({})]) - assert_equal(nil, response) + assert_nil(response) } end @@ -436,7 +436,7 @@ def test_empty_assoc_type assert_log_matches('Server error when requesting an association') { response = call_negotiate([msg]) - assert_equal(nil, response) + assert_nil(response) } end @@ -448,7 +448,7 @@ def test_empty_session_type assert_log_matches('Server error when requesting an association') { response = call_negotiate([msg]) - assert_equal(nil, response) + assert_nil(response) } end @@ -466,7 +466,7 @@ def test_not_allowed assert_log_matches('Server error when requesting an association') { response = call_negotiate([msg]) - assert_equal(nil, response) + assert_nil(response) } end @@ -482,7 +482,7 @@ def test_unsupported_with_retry assert_log_matches('Server error when requesting an association') { response = call_negotiate([msg, assoc]) - assert_equal(nil, response) + assert_nil(response) } end @@ -818,13 +818,13 @@ def set_negotiate_response(assoc) def test_not_in_store_no_response set_negotiate_response(nil) - assert_equal(nil, @assoc_manager.get_association) + assert_nil(@assoc_manager.get_association) end def test_not_in_store_negotiate_assoc # Not stored beforehand: stored_assoc = @store.get_association(@server_url, @assoc.handle) - assert_equal(nil, stored_assoc) + assert_nil(stored_assoc) # Returned from associate call: set_negotiate_response(@assoc) @@ -898,7 +898,7 @@ def test_success def test_missing_fields @message.del_arg(OPENID_NS, 'assoc_type') assert_log_matches('Missing required par') { - assert_equal(nil, make_request) + assert_nil(make_request) } end @@ -907,7 +907,7 @@ def test_missing_fields def test_protocol_error @message.set_arg(OPENID_NS, 'expires_in', 'goats') assert_log_matches('Protocol error processing') { - assert_equal(nil, make_request) + assert_nil(make_request) } end end diff --git a/test/test_ax.rb b/test/test_ax.rb index b1cd399f..84ca7a48 100644 --- a/test/test_ax.rb +++ b/test/test_ax.rb @@ -47,7 +47,7 @@ def test_construct assert_equal(type_uri, ainfo.type_uri) assert_equal(1, ainfo.count) assert_equal(false, ainfo.required) - assert_equal(nil, ainfo.ns_alias) + assert_nil(ainfo.ns_alias) end end @@ -234,7 +234,7 @@ def test_mode def test_construct assert_equal({}, @msg.requested_attributes) - assert_equal(nil, @msg.update_url) + assert_nil(@msg.update_url) msg = FetchRequest.new('hailstorm') assert_equal({}, msg.requested_attributes) @@ -494,7 +494,7 @@ def setup end def test_construct - assert_equal(nil, @msg.update_url) + assert_nil(@msg.update_url) assert_equal({}, @msg.data) end @@ -541,7 +541,7 @@ def test_update_url_in_response end def test_get_extension_args_single_value_response - # Single values do NOT have a count, and + # Single values do NOT have a count, and # do not use the array extension eargs = { 'mode' => 'fetch_response', @@ -585,7 +585,7 @@ def test_get_single_success end def test_get_single_none - assert_equal(nil, @msg.get_single(@type_a)) + assert_nil(@msg.get_single(@type_a)) end def test_get_single_extra diff --git a/test/test_consumer.rb b/test/test_consumer.rb index 1e1dc7a0..6b524101 100644 --- a/test/test_consumer.rb +++ b/test/test_consumer.rb @@ -16,7 +16,7 @@ def test_set_get assert_equal(:endpoint, ep) consumer.send(:cleanup_last_requested_endpoint) ep = consumer.send(:last_requested_endpoint) - assert_equal(nil, ep) + assert_nil(ep) end end diff --git a/test/test_discover.rb b/test/test_discover.rb index da873728..6122513b 100644 --- a/test/test_discover.rb +++ b/test/test_discover.rb @@ -724,8 +724,8 @@ def test_isOPEndpoint end def test_noIdentifiers - assert_equal(@endpoint.get_local_id, nil) - assert_equal(@endpoint.claimed_id, nil) + assert_nil(@endpoint.get_local_id) + assert_nil(@endpoint.claimed_id) end def test_compatibility @@ -733,7 +733,7 @@ def test_compatibility end def test_canonical_id - assert_equal(@endpoint.canonical_id, nil) + assert_nil(@endpoint.canonical_id) end def test_serverURL diff --git a/test/test_discovery_manager.rb b/test/test_discovery_manager.rb index 9a8abc22..e2185e90 100644 --- a/test/test_discovery_manager.rb +++ b/test/test_discovery_manager.rb @@ -21,8 +21,8 @@ def test_next assert_equal(@disco_services.next, @services[1]) assert_equal(@disco_services.current, @services[1]) - assert_equal(@disco_services.next, nil) - assert_equal(@disco_services.current, nil) + assert_nil(@disco_services.next) + assert_nil(@disco_services.current) end def test_for_url @@ -84,7 +84,7 @@ def test_construct end def test_get_next_service - assert_equal(@session[@key], nil) + assert_nil(@session[@key]) next_service = @manager.get_next_service { [@yadis_url, ["one", "two", "three"]] @@ -123,24 +123,24 @@ def test_get_next_service ["unused", []] } - assert_equal(result, nil) + assert_nil(result) end def test_cleanup # With no preexisting manager, cleanup() returns nil. - assert_equal(@manager.cleanup, nil) + assert_nil(@manager.cleanup) # With a manager, it returns the manager's current service. disco = Consumer::DiscoveredServices.new(@url, @yadis_url, ["one", "two"]) @session[@key] = disco - assert_equal(@manager.cleanup, nil) - assert_equal(@session[@key], nil) + assert_nil(@manager.cleanup) + assert_nil(@session[@key]) disco.next @session[@key] = disco assert_equal(@manager.cleanup, "one") - assert_equal(@session[@key], nil) + assert_nil(@session[@key]) # The force parameter should be passed through to get_manager # and destroy_manager. @@ -178,7 +178,7 @@ def test_get_manager disco2 = Consumer::DiscoveredServices.new("http://not.this.url.com/", "http://other.yadis.url/", ["one"]) @session[@key] = disco2 - assert_equal(@manager.get_manager, nil) + assert_nil(@manager.get_manager) assert_equal(@manager.get_manager(true), disco2) end diff --git a/test/test_message.rb b/test/test_message.rb index b7f6efb6..54416870 100644 --- a/test/test_message.rb +++ b/test/test_message.rb @@ -10,12 +10,14 @@ module GetArgsMixin # Tests a standard set of behaviors of Message.get_arg with # variations on handling defaults. def get_arg_tests(ns, key, expected=nil) - assert_equal(expected, @m.get_arg(ns, key)) - if expected.nil? + assert_nil(@m.get_arg(ns, key)) + assert_equal(@m.get_arg(ns, key, :a_default), :a_default) assert_raises(Message::KeyNotFound) { @m.get_arg(ns, key, NO_DEFAULT) } else + assert_equal(expected, @m.get_arg(ns, key)) + assert_equal(@m.get_arg(ns, key, :a_default), expected) assert_equal(@m.get_arg(ns, key, NO_DEFAULT), expected) end @@ -73,7 +75,7 @@ def test_to_url end def test_get_openid - assert_equal(nil, @m.get_openid_namespace) + assert_nil(@m.get_openid_namespace) end def test_get_key_openid @@ -87,15 +89,15 @@ def test_get_key_bare end def test_get_key_ns1 - assert_equal(nil, @m.get_key(OPENID1_NS, 'foo')) + assert_nil(@m.get_key(OPENID1_NS, 'foo')) end def test_get_key_ns2 - assert_equal(nil, @m.get_key(OPENID2_NS, 'foo')) + assert_nil(@m.get_key(OPENID2_NS, 'foo')) end def test_get_key_ns3 - assert_equal(nil, @m.get_key('urn:something-special', 'foo')) + assert_nil(@m.get_key('urn:something-special', 'foo')) end def test_has_key @@ -202,7 +204,7 @@ def test_set_arg def _test_set_arg_ns(ns) key = 'Camper Van Beethoven' value = 'David Lowery' - assert_equal(nil, @m.get_arg(ns, key)) + assert_nil(@m.get_arg(ns, key)) @m.set_arg(ns, key, value) assert_equal(value, @m.get_arg(ns, key)) end @@ -228,7 +230,7 @@ def test_del_arg def _test_del_arg_ns(ns) key = 'Fleeting Joys' - assert_equal(nil, @m.del_arg(ns, key)) + assert_nil(@m.del_arg(ns, key)) end def test_del_arg_bare @@ -362,11 +364,11 @@ def test_get_key_ns1 end def test_get_key_ns2 - assert_equal(nil, @m.get_key(OPENID2_NS, 'mode')) + assert_nil(@m.get_key(OPENID2_NS, 'mode')) end def test_get_key_ns3 - assert_equal(nil, @m.get_key('urn:xxx', 'mode')) + assert_nil(@m.get_key('urn:xxx', 'mode')) end def test_has_key @@ -461,7 +463,7 @@ def test_update_args_ns3 def _test_set_arg_ns(ns) key = 'awesometown' value = 'funny' - assert_equal(nil, @m.get_arg(ns,key)) + assert_nil(@m.get_arg(ns,key)) @m.set_arg(ns, key, value) assert_equal(value, @m.get_arg(ns,key)) end @@ -478,7 +480,7 @@ def _test_del_arg_ns(ns) @m.set_arg(ns, key, value) assert_equal(value, @m.get_arg(ns,key)) @m.del_arg(ns,key) - assert_equal(nil, @m.get_arg(ns,key)) + assert_nil(@m.get_arg(ns,key)) end def test_del_arg; _test_del_arg_ns(OPENID_NS); end @@ -702,7 +704,7 @@ def test_get_key_bare end def test_get_key_ns1 - assert_equal(nil, @m.get_key(OPENID1_NS, 'mode')) + assert_nil(@m.get_key(OPENID1_NS, 'mode')) end def test_get_key_ns2 @@ -710,7 +712,7 @@ def test_get_key_ns2 end def test_get_key_ns3 - assert_equal(nil, @m.get_key('urn:xxx', 'mode')) + assert_nil(@m.get_key('urn:xxx', 'mode')) end def test_has_key_openid @@ -739,11 +741,11 @@ def test_get_arg_openid end def test_get_arg_bare - assert_equal(nil, @m.get_arg(BARE_NS,'mode')) + assert_nil(@m.get_arg(BARE_NS,'mode')) end def test_get_arg_ns1 - assert_equal(nil, @m.get_arg(OPENID1_NS,'mode')) + assert_nil(@m.get_arg(OPENID1_NS,'mode')) end def test_get_arg_ns2 @@ -751,7 +753,7 @@ def test_get_arg_ns2 end def test_get_arg_ns3 - assert_equal(nil, @m.get_arg('urn:bananastand','mode')) + assert_nil(@m.get_arg('urn:bananastand','mode')) end def test_get_args_openid @@ -813,7 +815,7 @@ def test_update_args_ns3 def _test_set_arg_ns(ns) key = "logan's" value = "run" - assert_equal(nil, @m.get_arg(ns,key)) + assert_nil(@m.get_arg(ns,key)) @m.set_arg(ns, key, value) assert_equal(value, @m.get_arg(ns,key)) end @@ -851,11 +853,11 @@ def test_from_post_args def _test_del_arg_ns(ns) key = 'no' value = 'socks' - assert_equal(nil, @m.get_arg(ns, key)) + assert_nil(@m.get_arg(ns, key)) @m.set_arg(ns, key, value) assert_equal(value, @m.get_arg(ns, key)) @m.del_arg(ns, key) - assert_equal(nil, @m.get_arg(ns, key)) + assert_nil(@m.get_arg(ns, key)) end def test_del_arg_openid; _test_del_arg_ns(OPENID_NS); end diff --git a/test/test_pape.rb b/test/test_pape.rb index bd35bc78..a4309d8e 100644 --- a/test/test_pape.rb +++ b/test/test_pape.rb @@ -13,7 +13,7 @@ def setup def test_construct assert_equal([], @req.preferred_auth_policies) - assert_equal(nil, @req.max_auth_age) + assert_nil(@req.max_auth_age) assert_equal('pape', @req.ns_alias) req2 = PAPE::Request.new([PAPE::AUTH_MULTI_FACTOR], 1000) @@ -53,7 +53,7 @@ def test_parse_extension_args def test_parse_extension_args_empty @req.parse_extension_args({}) - assert_equal(nil, @req.max_auth_age) + assert_nil(@req.max_auth_age) assert_equal([], @req.preferred_auth_policies) end @@ -110,9 +110,9 @@ def setup def test_construct assert_equal([], @req.auth_policies) - assert_equal(nil, @req.auth_time) + assert_nil(@req.auth_time) assert_equal('pape', @req.ns_alias) - assert_equal(nil, @req.nist_auth_level) + assert_nil(@req.nist_auth_level) req2 = PAPE::Response.new([PAPE::AUTH_MULTI_FACTOR], "1983-11-05T12:30:24Z", 3) assert_equal([PAPE::AUTH_MULTI_FACTOR], req2.auth_policies) @@ -168,7 +168,7 @@ def test_parse_extension_args def test_parse_extension_args_empty @req.parse_extension_args({}) - assert_equal(nil, @req.auth_time) + assert_nil(@req.auth_time) assert_equal([], @req.auth_policies) end @@ -205,8 +205,8 @@ def test_parse_extension_args_nostrict_bogus 'nist_auth_level' => 'some'} @req.parse_extension_args(args) assert_equal(['http://foo/','http://bar/'], @req.auth_policies) - assert_equal(nil, @req.auth_time) - assert_equal(nil, @req.nist_auth_level) + assert_nil(@req.auth_time) + assert_nil(@req.nist_auth_level) end diff --git a/test/test_responses.rb b/test/test_responses.rb index a05275b0..0f2758b0 100644 --- a/test/test_responses.rb +++ b/test/test_responses.rb @@ -55,7 +55,7 @@ def test_extension_response_signed # Not all args in this NS are signed, so expect nil when # asking for them. utargs = resp.extension_response('urn:unittest', true) - assert_equal(nil, utargs) + assert_nil(utargs) end end end diff --git a/test/test_server.rb b/test/test_server.rb index 4c6da09d..f3b52558 100644 --- a/test/test_server.rb +++ b/test/test_server.rb @@ -142,7 +142,7 @@ def test_noReturnTo def test_no_message e = Server::ProtocolError.new(nil, "no message") assert(e.get_return_to.nil?) - assert_equal(e.which_encoding, nil) + assert_nil(e.which_encoding) end def test_which_encoding_no_message @@ -167,7 +167,7 @@ def setup def test_none args = {} r = @decode.call(args) - assert_equal(r, nil) + assert_nil(r) end def test_irrelevant @@ -350,7 +350,7 @@ def test_checkidSetupNoIdentityOpenID2 assert(r.is_a?(Server::CheckIDRequest)) assert_equal(r.mode, "checkid_setup") assert_equal(r.immediate, false) - assert_equal(r.identity, nil) + assert_nil(r.identity) assert_equal(r.trust_root, @tr_url) assert_equal(r.return_to, @rt_url) end @@ -1896,9 +1896,9 @@ def test_unsupported response = @request.answer_unsupported(message) rfg = lambda { |f| response.fields.get_arg(OPENID_NS, f) } assert_equal(rfg.call('error_code'), 'unsupported-type') - assert_equal(rfg.call('assoc_type'), nil) + assert_nil(rfg.call('assoc_type')) assert_equal(rfg.call('error'), message) - assert_equal(rfg.call('session_type'), nil) + assert_nil(rfg.call('session_type')) end def test_openid1_unsupported_explode @@ -2323,8 +2323,7 @@ def test_getAssocExpired def test_getAssocInvalid ah = 'no-such-handle' silence_logging { - assert_equal( - @signatory.get_association(ah, false), nil) + assert_nil(@signatory.get_association(ah, false)) } # assert(!@messages, @messages) end @@ -2333,8 +2332,7 @@ def test_getAssocDumbVsNormal # getAssociation(dumb=False) cannot get a dumb assoc assoc_handle = makeAssoc(true) silence_logging { - assert_equal( - @signatory.get_association(assoc_handle, false), nil) + assert_nil(@signatory.get_association(assoc_handle, false)) } # @failIf(@messages, @messages) end @@ -2348,8 +2346,7 @@ def test_getAssocNormalVsDumb # MAC keys. assoc_handle = makeAssoc(false) silence_logging { - assert_equal( - @signatory.get_association(assoc_handle, true), nil) + assert_nil(@signatory.get_association(assoc_handle, true)) } # @failIf(@messages, @messages) end diff --git a/test/test_sreg.rb b/test/test_sreg.rb index d7790ca0..72defab1 100644 --- a/test/test_sreg.rb +++ b/test/test_sreg.rb @@ -154,7 +154,7 @@ def test_construct_empty req = Request.new assert_equal([], req.optional) assert_equal([], req.required) - assert_equal(nil, req.policy_url) + assert_nil(req.policy_url) assert_equal(NS_URI, req.ns_uri) end @@ -476,4 +476,3 @@ def test_send_fields end end end - diff --git a/test/test_stores.rb b/test/test_stores.rb index be42a846..4a039731 100644 --- a/test/test_stores.rb +++ b/test/test_stores.rb @@ -218,7 +218,7 @@ class FileStoreTestCase < Minitest::Test include StoreTestCase def setup - raise "filestoretest directory exists" if File.exists?('filestoretest') + raise "filestoretest directory exists" if File.exist?('filestoretest') @store = Filesystem.new('filestoretest') end diff --git a/test/test_yadis_discovery.rb b/test/test_yadis_discovery.rb index 0b83879d..434a020e 100644 --- a/test/test_yadis_discovery.rb +++ b/test/test_yadis_discovery.rb @@ -201,7 +201,7 @@ def test_is_xrds_neither def test_no_content_type with_fetcher(NoContentTypeFetcher.new) do result = Yadis.discover("http://bogus/") - assert_equal(nil, result.content_type) + assert_nil(result.content_type) end end From b2bb3f00c10c7c5a06901b753097d8e2d38d7831 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 18:55:34 +0100 Subject: [PATCH 19/28] Drop deprecated option from gemspec - This is the warning: NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It will be removed on or after 2018-12-01. --- ruby-openid.gemspec | 1 - 1 file changed, 1 deletion(-) diff --git a/ruby-openid.gemspec b/ruby-openid.gemspec index 35a67195..f6a4495a 100644 --- a/ruby-openid.gemspec +++ b/ruby-openid.gemspec @@ -20,7 +20,6 @@ Gem::Specification.new do |s| s.test_files = s.files.grep(%r{^(test|spec|features)/}) # RDoc - s.has_rdoc = true s.extra_rdoc_files = ['README.md', 'INSTALL.md', 'LICENSE', 'UPGRADE.md'] s.rdoc_options << '--main' << 'README.md' From e93fac7993c60dec44f6a8016e4f80b2b5409e4c Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 18:57:49 +0100 Subject: [PATCH 20/28] Avoid duplicate Hash key warning --- test/test_oauth.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test_oauth.rb b/test/test_oauth.rb index e37a8fa4..85a14e0a 100644 --- a/test/test_oauth.rb +++ b/test/test_oauth.rb @@ -143,7 +143,6 @@ def test_from_success_response 'mode' => 'id_res', 'ns' => OPENID2_NS, 'ns.oauth' => OAuth::NS_URI, - 'ns.oauth' => OAuth::NS_URI, 'oauth.request_token' => 'REQUESTTOKEN', 'oauth.scope' => "http://sample.com/some_scope" }) From 7d24f6611ff99e407953647a7ca324a77c8588b1 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 19:03:45 +0100 Subject: [PATCH 21/28] Remove unused local assignment - this avoids a Ruby warning --- lib/openid/extensions/ax.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/openid/extensions/ax.rb b/lib/openid/extensions/ax.rb index 007fe000..0afad1c6 100644 --- a/lib/openid/extensions/ax.rb +++ b/lib/openid/extensions/ax.rb @@ -539,9 +539,8 @@ def initialize(succeeded = true, error_message = nil) end def self.from_success_response(success_response) - resp = nil ax_args = success_response.message.get_args(NS_URI) - resp = ax_args.key?('error') ? new(false, ax_args['error']) : new + ax_args.key?('error') ? new(false, ax_args['error']) : new end def succeeded? From ed225e2a0ea9cfbf2f9c779db461f9ff4fd66e07 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Sat, 16 Mar 2019 19:04:11 +0100 Subject: [PATCH 22/28] Avoid useless assignment --- lib/openid/store/filesystem.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/store/filesystem.rb b/lib/openid/store/filesystem.rb index 0d5f2cea..cd9a038d 100644 --- a/lib/openid/store/filesystem.rb +++ b/lib/openid/store/filesystem.rb @@ -230,7 +230,7 @@ def mktemp # create a safe filename from a url def filename_escape(s) s = '' if s.nil? - filename_chunks = s.each_char.flat_map {|c| + s.each_char.flat_map {|c| @@FILENAME_ALLOWED.include?(c) ? c : c.bytes.map {|b| "_%02X" % b } From 8a4c31a6740a949cdc29d956c276ba3c4021dfa8 Mon Sep 17 00:00:00 2001 From: Vadim Shaulski Date: Tue, 16 Apr 2019 19:34:35 +0300 Subject: [PATCH 23/28] Avoid SSRF for claimed_id request `verify_discovery_results` sends a request to openid.claimed_id URL. Anybody can change claimed_id URL but request still will be sent. For example, sending a request to the internal network or localhost: https://myserver/callback?_method=post&openid.claimed_id=http://localhost:3000/do_method..... I think, we must check signature before use any data from the URL --- lib/openid/consumer/idres.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/consumer/idres.rb b/lib/openid/consumer/idres.rb index 16c1d809..6c4e0a3b 100644 --- a/lib/openid/consumer/idres.rb +++ b/lib/openid/consumer/idres.rb @@ -72,9 +72,9 @@ def signed_fields def id_res check_for_fields verify_return_to - verify_discovery_results check_signature check_nonce + verify_discovery_results end def server_url From a0df64cf64d101f2ed6465face7b0f25c378a3f4 Mon Sep 17 00:00:00 2001 From: pavel Date: Wed, 31 Jul 2019 16:33:07 +0200 Subject: [PATCH 24/28] remove autorequire --- ruby-openid.gemspec | 1 - 1 file changed, 1 deletion(-) diff --git a/ruby-openid.gemspec b/ruby-openid.gemspec index f6a4495a..c7bb265c 100644 --- a/ruby-openid.gemspec +++ b/ruby-openid.gemspec @@ -15,7 +15,6 @@ Gem::Specification.new do |s| files << 'NOTICE' << 'CHANGELOG.md' s.files = files.delete_if {|f| f.include?('_darcs') || f.include?('admin')} s.require_paths = ['lib'] - s.autorequire = 'openid' s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) } s.test_files = s.files.grep(%r{^(test|spec|features)/}) From c05e0ef3794a1b1ace37b35bfea79e0c1c797b32 Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Tue, 17 Sep 2019 22:34:27 +0200 Subject: [PATCH 25/28] Update CHANGELOG.md --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 860c5988..4de81452 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## 2.9.1 + +* Updated CHANGELOG.md + +## 2.9.0 + +* Remove deprecated `autorequire` from gemspec. + [#123](https://github.com/openid/ruby-openid/pull/123) +* Rescue from `Yadis::XRI::XRIHTTPError` on discovery. + [#106](https://github.com/openid/ruby-openid/pull/106) +* Avoid SSRF for claimed_id request. + [#121](https://github.com/openid/ruby-openid/pull/121) +* Updated documentation. + [#115](https://github.com/openid/ruby-openid/pull/115), [#116](https://github.com/openid/ruby-openid/pull/116), [#117](https://github.com/openid/ruby-openid/pull/117), [#118](https://github.com/openid/ruby-openid/pull/118) +* Reduce warnings output in test runs. + [#119](https://github.com/openid/ruby-openid/pull/119) +* Drop deprecated option from gemspec. + [#120](https://github.com/openid/ruby-openid/pull/120) +* Remove circular require. + [#113](https://github.com/openid/ruby-openid/pull/113) +* Updated Travis CI config with Ruby 2.6 + [#114](https://github.com/openid/ruby-openid/pull/114) +* Simplify Bundler require; remove need for extra `:require`. + [#112](https://github.com/openid/ruby-openid/pull/112) + ## 2.8.0 * Fix `admin/mkassoc` script. From 65963ca65dc5c7300d83825a880a836732edbde9 Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Fri, 4 Oct 2019 22:05:04 +0200 Subject: [PATCH 26/28] Update version to 2.9.1 --- lib/openid/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/version.rb b/lib/openid/version.rb index a4ff1014..b000583e 100644 --- a/lib/openid/version.rb +++ b/lib/openid/version.rb @@ -1,3 +1,3 @@ module OpenID - VERSION = "2.8.0" + VERSION = "2.9.1" end From f526132c6cb5d9195351c16ed36dced4ca3db496 Mon Sep 17 00:00:00 2001 From: Utkarsh Gupta Date: Tue, 15 Oct 2019 23:30:55 +0530 Subject: [PATCH 27/28] Perform checks first Closes #124 --- lib/openid/consumer/idres.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openid/consumer/idres.rb b/lib/openid/consumer/idres.rb index 6c4e0a3b..6520c164 100644 --- a/lib/openid/consumer/idres.rb +++ b/lib/openid/consumer/idres.rb @@ -71,9 +71,9 @@ def signed_fields # verified information. def id_res check_for_fields - verify_return_to check_signature check_nonce + verify_return_to verify_discovery_results end From 13a88ad6442133a613d2b7d6601991a84b34630d Mon Sep 17 00:00:00 2001 From: Tobias Haagen Michaelsen Date: Wed, 16 Oct 2019 14:19:29 +0200 Subject: [PATCH 28/28] Version 2.9.2 --- CHANGELOG.md | 5 +++++ lib/openid/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4de81452..85dc7b9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2.9.2 + +* Perform all checks before verifying endpoints. + [#126](https://github.com/openid/ruby-openid/pull/126) + ## 2.9.1 * Updated CHANGELOG.md diff --git a/lib/openid/version.rb b/lib/openid/version.rb index b000583e..7a85990d 100644 --- a/lib/openid/version.rb +++ b/lib/openid/version.rb @@ -1,3 +1,3 @@ module OpenID - VERSION = "2.9.1" + VERSION = "2.9.2" end