From 706d167f08d9a5e6eaa55f024e346146e6bfb1f5 Mon Sep 17 00:00:00 2001 From: mmd-osm Date: Sat, 17 May 2025 13:23:20 +0200 Subject: [PATCH] Remove legacy OpenID login --- Gemfile | 1 - Gemfile.lock | 8 - app/assets/images/auth_providers/openid.svg | 5 - app/assets/javascripts/auth_providers.js | 2 +- app/assets/javascripts/user.js | 34 ----- app/controllers/accounts_controller.rb | 5 +- app/controllers/concerns/session_methods.rb | 4 +- app/controllers/users_controller.rb | 3 - app/views/accounts/show.html.erb | 2 - .../application/_auth_providers.html.erb | 30 +--- app/views/sessions/new.html.erb | 2 +- app/views/users/new.html.erb | 2 +- config/initializers/omniauth.rb | 19 --- config/locales/en.yml | 8 - lib/auth.rb | 2 +- test/integration/login_test.rb | 142 ------------------ test/integration/user_creation_test.rb | 126 ---------------- test/system/user_login_test.rb | 14 -- 18 files changed, 10 insertions(+), 399 deletions(-) delete mode 100644 app/assets/images/auth_providers/openid.svg diff --git a/Gemfile b/Gemfile index 7b99731f4..ef0806d50 100644 --- a/Gemfile +++ b/Gemfile @@ -84,7 +84,6 @@ gem "omniauth-github" gem "omniauth-google-oauth2", ">= 0.6.0" gem "omniauth-mediawiki", ">= 0.0.4" gem "omniauth-microsoft_graph" -gem "omniauth-openid" gem "omniauth-rails_csrf_protection", "~> 1.0" # Doorkeeper for OAuth2 diff --git a/Gemfile.lock b/Gemfile.lock index 430ccc282..7a420ef49 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -456,9 +456,6 @@ GEM omniauth-oauth2 (1.8.0) oauth2 (>= 1.4, < 3) omniauth (~> 2.0) - omniauth-openid (2.0.1) - omniauth (>= 1.0, < 3.0) - rack-openid (~> 1.4.0) omniauth-rails_csrf_protection (1.0.2) actionpack (>= 4.2) omniauth (~> 2.0) @@ -493,9 +490,6 @@ GEM rack-cors (3.0.0) logger rack (>= 3.0.14) - rack-openid (1.4.2) - rack (>= 1.1.0) - ruby-openid (>= 2.1.8) rack-protection (4.1.1) base64 (>= 0.1.0) logger (>= 1.6.0) @@ -604,7 +598,6 @@ GEM rubocop-rake (0.7.1) lint_roller (~> 1.1) rubocop (>= 1.72.1) - ruby-openid (2.9.2) ruby-progressbar (1.13.0) ruby-vips (2.2.3) ffi (~> 1.12) @@ -760,7 +753,6 @@ DEPENDENCIES omniauth-google-oauth2 (>= 0.6.0) omniauth-mediawiki (>= 0.0.4) omniauth-microsoft_graph - omniauth-openid omniauth-rails_csrf_protection (~> 1.0) openstreetmap-deadlock_retry (>= 1.3.1) overcommit diff --git a/app/assets/images/auth_providers/openid.svg b/app/assets/images/auth_providers/openid.svg deleted file mode 100644 index d4de5897b..000000000 --- a/app/assets/images/auth_providers/openid.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/assets/javascripts/auth_providers.js b/app/assets/javascripts/auth_providers.js index 3c2948253..b0bb2891c 100644 --- a/app/assets/javascripts/auth_providers.js +++ b/app/assets/javascripts/auth_providers.js @@ -2,7 +2,7 @@ $(function () { // Attach referer to authentication buttons $(".auth_button").each(function () { const params = new URLSearchParams(this.search); - params.set("referer", $("#referer").val()); + params.set("referer", $("#referer").val() || ""); this.search = params.toString(); }); }); diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index 5afe55a00..01e280814 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -195,50 +195,16 @@ $(function () { return centerPt.distanceTo(inputPt) < 10; } - function updateAuthUID() { - const provider = $("select#user_auth_provider").val(); - - if (provider === "openid") { - $("input#user_auth_uid").show().prop("disabled", false); - } else { - $("input#user_auth_uid").hide().prop("disabled", true); - } - } - function clearDeletedText() { deleted_lat = null; deleted_lon = null; deleted_home_name = null; } - updateAuthUID(); - - $("select#user_auth_provider").on("change", updateAuthUID); - $("input#user_avatar").on("change", function () { $("#user_avatar_action_new").prop("checked", true); }); - function enableAuth() { - $("#auth_prompt").hide(); - $("#auth_field").show(); - $("#user_auth_uid").prop("disabled", false); - } - - function disableAuth() { - $("#auth_prompt").show(); - $("#auth_field").hide(); - $("#user_auth_uid").prop("disabled", true); - } - - $("#auth_enable").click(enableAuth); - - if ($("select#user_auth_provider").val() === "") { - disableAuth(); - } else { - enableAuth(); - } - $("#content.user_confirm").each(function () { $(this).hide(); $(this).find("#confirm").submit(); diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 31653448a..e1855b028 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -28,8 +28,7 @@ class AccountsController < ApplicationController user_params = params.expect(:user => [:display_name, :new_email, :pass_crypt, :pass_crypt_confirmation, :auth_provider]) if params[:user][:auth_provider].blank? || - (params[:user][:auth_provider] == current_user.auth_provider && - params[:user][:auth_uid] == current_user.auth_uid) + params[:user][:auth_provider] == current_user.auth_provider update_user(current_user, user_params) if current_user.errors.empty? redirect_to account_path @@ -38,7 +37,7 @@ class AccountsController < ApplicationController end else session[:new_user_settings] = user_params.to_h - redirect_to auth_url(params[:user][:auth_provider], params[:user][:auth_uid]), :status => :temporary_redirect + redirect_to auth_url(params[:user][:auth_provider]), :status => :temporary_redirect end end diff --git a/app/controllers/concerns/session_methods.rb b/app/controllers/concerns/session_methods.rb index d0fb0c419..b2ab53aff 100644 --- a/app/controllers/concerns/session_methods.rb +++ b/app/controllers/concerns/session_methods.rb @@ -17,11 +17,9 @@ module SessionMethods ## # return the URL to use for authentication - def auth_url(provider, uid, referer = nil) + def auth_url(provider, referer = nil) params = { :provider => provider } - params[:openid_url] = uid if provider == "openid" - if referer.nil? params[:origin] = request.path else diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d4862c65c..d643d4c6c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -116,9 +116,6 @@ class UsersController < ApplicationController email = auth_info[:info][:email] email_verified = case provider - when "openid" - uid.match(%r{https://www.google.com/accounts/o8/id?(.*)}) || - uid.match(%r{https://me.yahoo.com/(.*)}) when "google", "facebook", "microsoft", "github", "wikipedia" true else diff --git a/app/views/accounts/show.html.erb b/app/views/accounts/show.html.erb index 5c626fc9f..34665947c 100644 --- a/app/views/accounts/show.html.erb +++ b/app/views/accounts/show.html.erb @@ -24,9 +24,7 @@ :include_blank => t("auth.providers.none"), :hide_label => true, :wrapper => { :class => "col-auto mb-0" } %> - <%= f.text_field(:auth_uid, :hide_label => true, :wrapper => { :class => "col mb-0" }) %> - (" target="_new"><%= t ".openid.link text" %>)
diff --git a/app/views/application/_auth_providers.html.erb b/app/views/application/_auth_providers.html.erb index 221e70472..9fe0223a0 100644 --- a/app/views/application/_auth_providers.html.erb +++ b/app/views/application/_auth_providers.html.erb @@ -1,4 +1,4 @@ -<% prefered_auth_button_available = @preferred_auth_provider != "openid" && Auth.providers.include?(@preferred_auth_provider) %> +<% prefered_auth_button_available = Auth.providers.include?(@preferred_auth_provider) %>
<%= tag.div :id => "login_auth_buttons", @@ -12,34 +12,10 @@
<% Auth.providers.each do |provider| %> - <% if provider == "openid" %> - <%= button_tag image_tag("auth_providers/openid.svg", - :alt => t(".openid.alt"), - :size => "36"), - :type => "button", - :data => { "bs-toggle" => "collapse", - "bs-target" => "#login_auth_buttons, #openid_login_form" }, - :title => t(".openid.title"), - :class => "btn btn-outline-secondary border p-2" %> - <% elsif provider != @preferred_auth_provider %> + <% if provider != @preferred_auth_provider %> <%= auth_button provider %> - <% end -%> + <% end %> <% end -%>
<% end %> - - <%# :tabindex starts high to allow rendering at the bottom of the template %> - <%= form_tag auth_path(:provider => "openid"), :id => "openid_login_form", :class => "collapse" do %> -
- - <%= hidden_field_tag("referer", params[:referer], :autocomplete => "off") %> - <%= text_field_tag("openid_url", "https://", :tabindex => 20, :autocomplete => "on", :class => "form-control") %> - (" target="_new"><%= t "accounts.show.openid.link text" %>) -
- - <%= submit_tag t(".openid_login_button"), :tabindex => 21, :class => "btn btn-primary" %> - <% end %>
diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index ec4e256df..d5f5d2c55 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -64,7 +64,7 @@
<% end %> -<% unless @preferred_auth_provider %> +<% unless @preferred_auth_provider or Auth.providers.empty? %> <%= render :partial => "shared/section_divider", :locals => { :text => t(".with external") } %> <%= render :partial => "auth_providers" %> <% end %> diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index 22db279d9..ae4f6906c 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -84,7 +84,7 @@ <% end %> -<% if current_user.auth_uid.nil? and @preferred_auth_provider.nil? %> +<% if current_user.auth_uid.nil? and @preferred_auth_provider.nil? and !Auth.providers.empty? %> <%= render :partial => "shared/section_divider", :locals => { :text => t(".use external auth") } %> <%= render :partial => "auth_providers" %> <% end %> diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index bce82b3c9..eb11d61aa 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -1,27 +1,9 @@ require "multi_json" -require "openid/fetchers" -require "openid/util" - -CA_BUNDLES = ["/etc/ssl/certs/ca-certificates.crt", "/etc/pki/tls/cert.pem"].freeze - -OpenID.fetcher.ca_file = CA_BUNDLES.find { |f| File.exist?(f) } -OpenID::Util.logger = Rails.logger OmniAuth.config.logger = Rails.logger OmniAuth.config.failure_raise_out_environments = [] OmniAuth.config.allowed_request_methods = [:post, :patch] -if Settings.key?(:memcache_servers) - require "openid/store/memcache" - - openid_store = OpenID::Store::Memcache.new(Dalli::Client.new(Settings.memcache_servers, :namespace => "rails")) -else - require "openid/store/filesystem" - - openid_store = OpenID::Store::Filesystem.new(Rails.root.join("tmp/openids")) -end - -openid_options = { :name => "openid", :store => openid_store } google_options = { :name => "google", :scope => "email", :access_type => "online" } facebook_options = { :name => "facebook", :scope => "email", :client_options => { :site => "https://graph.facebook.com/v17.0", :authorize_url => "https://www.facebook.com/v17.0/dialog/oauth" } } microsoft_options = { :name => "microsoft", :scope => "openid User.Read" } @@ -31,7 +13,6 @@ wikipedia_options = { :name => "wikipedia", :client_options => { :site => "https google_options[:openid_realm] = Settings.google_openid_realm if Settings.key?(:google_openid_realm) Rails.application.config.middleware.use OmniAuth::Builder do - provider :openid, openid_options provider :google_oauth2, Settings.google_auth_id, Settings.google_auth_secret, google_options if Settings.key?(:google_auth_id) provider :facebook, Settings.facebook_auth_id, Settings.facebook_auth_secret, facebook_options if Settings.key?(:facebook_auth_id) provider :microsoft_graph, Settings.microsoft_auth_id, Settings.microsoft_auth_secret, microsoft_options if Settings.key?(:microsoft_auth_id) diff --git a/config/locales/en.yml b/config/locales/en.yml index 17308410a..388f6adfd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -256,9 +256,6 @@ en: my_account: My Account current email address: "Current Email Address" external auth: "External Authentication" - openid: - link: "https://wiki.openstreetmap.org/wiki/OpenID" - link text: "what is this?" contributor terms: heading: "Contributor Terms" agreed: "You have agreed to the new Contributor Terms." @@ -2772,11 +2769,6 @@ en: oauth2_authorizations: OAuth 2 Authorizations muted_users: Muted Users auth_providers: - openid_url: "OpenID URL" - openid_login_button: "Continue" - openid: - title: Log in with OpenID - alt: OpenID logo google: title: Log in with Google alt: Google logo diff --git a/lib/auth.rb b/lib/auth.rb index 2c6d0c1d7..63dc89f8f 100644 --- a/lib/auth.rb +++ b/lib/auth.rb @@ -1,5 +1,5 @@ module Auth - @providers = ["openid"] + @providers = [] @providers << "google" if Settings.key?(:google_auth_id) @providers << "facebook" if Settings.key?(:facebook_auth_id) @providers << "microsoft" if Settings.key?(:microsoft_auth_id) diff --git a/test/integration/login_test.rb b/test/integration/login_test.rb index 2b7a851ad..06b2d9e05 100644 --- a/test/integration/login_test.rb +++ b/test/integration/login_test.rb @@ -6,7 +6,6 @@ class LoginTest < ActionDispatch::IntegrationTest end def teardown - OmniAuth.config.mock_auth[:openid] = nil OmniAuth.config.mock_auth[:google] = nil OmniAuth.config.mock_auth[:facebook] = nil OmniAuth.config.mock_auth[:microsoft] = nil @@ -349,147 +348,6 @@ class LoginTest < ActionDispatch::IntegrationTest assert session.key?(:_remember_for) end - def test_login_openid_success - user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "changesets/history" - assert_select "span.username", user.display_name - end - - def test_login_openid_pending - user = create(:user, :pending, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "confirm" - end - - def test_login_openid_suspended - user = create(:user, :suspended, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "sessions/new" - assert_select "span.username", false - assert_select "div.alert.alert-danger", /your account has been suspended/ do - assert_select "a[href='mailto:openstreetmap@example.com']", "support" - end - end - - def test_login_openid_blocked - user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - create(:user_block, :needs_view, :user => user) - OmniAuth.config.add_mock(:openid, :uid => user.auth_uid) - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "user_blocks/show" - assert_select "span.username", user.display_name - end - - def test_login_openid_connection_failed - user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - OmniAuth.config.mock_auth[:openid] = :connection_failed - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => user.auth_uid, :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => user.auth_uid, :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/login?referer=%2Fhistory") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "sessions/new" - assert_select "div.alert.alert-danger", "Connection to authentication provider failed" - assert_select "span.username", false - end - - def test_login_openid_invalid_credentials - user = create(:user, :auth_provider => "openid", :auth_uid => "http://example.com/john.doe") - OmniAuth.config.mock_auth[:openid] = :invalid_credentials - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => user.auth_uid, :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => user.auth_uid, :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_redirected_to auth_failure_path(:strategy => "openid", :message => "invalid_credentials", :origin => "/login?referer=%2Fhistory") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "sessions/new" - assert_select "div.alert.alert-danger", "Invalid authentication credentials" - assert_select "span.username", false - end - - def test_login_openid_unknown - OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/fred.bloggs") - - get "/login", :params => { :referer => "/history" } - assert_redirected_to login_path(:cookie_test => true, :referer => "/history") - follow_redirect! - assert_response :success - assert_template "sessions/new" - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login?referer=%2Fhistory", :referer => "/history") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login?referer=%2Fhistory", :referer => "/history") - follow_redirect! - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "users/new" - assert_select "span.username", false - end - def test_login_google_success user = create(:user, :auth_provider => "google", :auth_uid => "1234567890") OmniAuth.config.add_mock(:google, :uid => user.auth_uid, :extra => { diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 4aae1046b..1ed168953 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -8,7 +8,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest end def teardown - OmniAuth.config.mock_auth[:openid] = nil OmniAuth.config.mock_auth[:google] = nil OmniAuth.config.mock_auth[:facebook] = nil OmniAuth.config.mock_auth[:microsoft] = nil @@ -222,131 +221,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_template "site/welcome" end - def test_user_create_openid_success - new_email = "newtester-openid@osm.org" - display_name = "new_tester-openid" - openid_url = "http://localhost:1000/new.tester" - auth_uid = "http://localhost:1123/new.tester" - - OmniAuth.config.add_mock(:openid, - :uid => auth_uid, - :info => { :email => new_email, :name => display_name }) - - assert_difference("User.count") do - assert_difference("ActionMailer::Base.deliveries.size", 1) do - perform_enqueued_jobs do - post auth_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") - follow_redirect! - assert_redirected_to :controller => :users, :action => "new", :nickname => display_name, :email => new_email, - :auth_provider => "openid", :auth_uid => auth_uid - follow_redirect! - post "/user", - :params => { :user => { :email => new_email, - :display_name => display_name, - :auth_provider => "openid", - :auth_uid => auth_uid } } - end - end - end - - # Check the page - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name - end - - def test_user_create_openid_duplicate_email - dup_user = create(:user) - display_name = "new_tester-openid" - auth_uid = "123454321" - - OmniAuth.config.add_mock(:openid, - :uid => auth_uid, - :info => { :email => dup_user.email, :name => display_name }) - - post auth_path(:provider => "openid", :origin => "/user/new") - assert_redirected_to auth_success_path(:provider => "openid", :origin => "/user/new") - follow_redirect! - assert_redirected_to :controller => :users, :action => "new", :nickname => display_name, :email => dup_user.email, - :auth_provider => "openid", :auth_uid => auth_uid - follow_redirect! - - assert_response :success - assert_template "users/new" - assert_select "form > div > input.is-invalid#user_email" - end - - def test_user_create_openid_failure - OmniAuth.config.mock_auth[:openid] = :connection_failed - - assert_difference("User.count", 0) do - assert_difference("ActionMailer::Base.deliveries.size", 0) do - perform_enqueued_jobs do - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - follow_redirect! - assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/user/new") - follow_redirect! - assert_redirected_to "/user/new" - end - end - end - end - - def test_user_create_openid_redirect - openid_url = "http://localhost:1000/new.tester" - auth_uid = "http://localhost:1123/new.tester" - new_email = "redirect_tester_openid@osm.org" - display_name = "redirect_tester_openid" - - OmniAuth.config.add_mock(:openid, - :uid => auth_uid, - :info => { :email => new_email, :name => display_name }) - - assert_difference("User.count") do - assert_difference("ActionMailer::Base.deliveries.size", 1) do - perform_enqueued_jobs do - post auth_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") - follow_redirect! - assert_redirected_to :controller => :users, :action => "new", :nickname => display_name, :email => new_email, - :auth_provider => "openid", :auth_uid => auth_uid - follow_redirect! - post "/user", - :params => { :user => { :email => new_email, - :display_name => display_name, - :auth_provider => "openid", - :auth_uid => auth_uid } } - follow_redirect! - end - end - end - - # Check the e-mail - register_email = ActionMailer::Base.deliveries.first - - assert_equal register_email.to.first, new_email - # Check that the confirm account url is correct - confirm_regex = Regexp.new("confirm_string=([a-zA-Z0-9%_-]*)") - email_text_parts(register_email).each do |part| - assert_match confirm_regex, part.body.to_s - end - confirm_string = CGI.unescape(email_text_parts(register_email).first.body.match(confirm_regex)[1]) - - # Check the page - assert_response :success - assert_template "confirmations/confirm" - - # Go to the confirmation page - get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string } - assert_response :success - assert_template "confirmations/confirm" - - post "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string } - assert_response :redirect - follow_redirect! - assert_response :success - assert_template "site/welcome" - end - def test_user_create_google_success new_email = "newtester-google@osm.org" email_hmac = UsersController.message_hmac(new_email) diff --git a/test/system/user_login_test.rb b/test/system/user_login_test.rb index ce17d04ea..4b0d59775 100644 --- a/test/system/user_login_test.rb +++ b/test/system/user_login_test.rb @@ -51,18 +51,4 @@ class UserLoginTest < ApplicationSystemTestCase assert_no_link "Visit referring page" end end - - test "Show OpenID form when OpenID provider button is clicked" do - visit login_path - - within_content_body do - assert_no_field "OpenID URL" - assert_no_button "Continue" - - click_on "Log in with OpenID" - - assert_field "OpenID URL" - assert_button "Continue" - end - end end -- 2.39.5