DEV: Let OmniAuth strategies return auth result. (#7833)

This commit is contained in:
Dan Ungureanu 2019-07-01 19:13:11 +03:00 committed by Rafael dos Santos Silva
parent f56d86a852
commit dc5eb76551
2 changed files with 29 additions and 0 deletions

View File

@ -19,6 +19,15 @@ class Users::OmniauthCallbacksController < ApplicationController
skip_before_action :verify_authenticity_token, only: :complete
def complete
if result = request.env["omniauth.result"]
@auth_result = result
return respond_to do |format|
format.html
format.json { render json: @auth_result.to_client_hash }
end
end
auth = request.env["omniauth.auth"]
raise Discourse::NotFound unless request.env["omniauth.auth"]

View File

@ -12,6 +12,7 @@ RSpec.describe Users::OmniauthCallbacksController do
after do
Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] = nil
Rails.application.env_config["omniauth.result"] = nil
OmniAuth.config.test_mode = false
end
@ -79,6 +80,25 @@ RSpec.describe Users::OmniauthCallbacksController do
end
end
describe '.complete' do
it 'will return result if present' do
result = Auth::Result.new
result.user = Fabricate(:user)
result.authenticated = true
result.destination_url = "/anotherpath"
Rails.application.env_config["omniauth.origin"] = '/somepath'
Rails.application.env_config["omniauth.result"] = result
get "/auth/test/callback.json"
response_body = JSON.parse(response.body)
expect(response.status).to eq(200)
expect(response_body["authenticated"]).to eq(true)
expect(response_body["destination_url"]).to eq("/anotherpath")
end
end
context 'Google Oauth2' do
before do
SiteSetting.enable_google_oauth2_logins = true