Oauth minitest error, обратная ссылка дает ошибку - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь написать тесты для пользователей OmniAuth, и после настройки своего test_helper я сталкиваюсь с ошибкой URI. Ниже приводится подробное описание:

test_helper.rb

# OmniAuth auth mock for testing
  def setup_omniauth_mock (user)
    OmniAuth.config.test_mode = true
    OmniAuth::AuthHash.new ({
    'provider'            => 'google',
    'uid'                 => '123545',
    'user_id'             => '2',
    'first_name'          => 'X',
    'last_name'           => 'XYZ',
    'email'               => 'xxyz@example.com',
    'image'               => 'https://lh3.googleusercontent.com//photo.jpg',
    'oauth_token'         => 'abcdef12345',
    'oauth_expires_at'    => DateTime.now,
    })
    OmniAuth.config.add_mock(:google, OmniAuth::AuthHash.new)
    get '/auth/":google"/callback'
    Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google]
    get '/auth/:google/callback'
  end 

Я получаю ошибку:

    test_validating_a_Google_OAuth_user#SessionsControllerTest (0.49s)
URI::InvalidURIError:         URI::InvalidURIError: bad
URI(is not URI?): http://www.example.com:80/auth/":google"/callback
test/test_helper.rb:42:in `setup_omniauth_mock'

Теперь я следовал документации здесь [Oauth Integration Testing] [1]

[1]: https://github.com/omniauth/omniauth/wiki/Integration-Testing но я думаю, что я что-то не так делаю.

Может кто-нибудь помочь мне с этим разобраться.

Спасибо!J.

1 Ответ

0 голосов
/ 06 февраля 2019

Я действительно решил это, немного почистив вещи.

Мой test_helper.rb сейчас:

 # OmniAuth auth mock setup for testing
  setup do
    OmniAuth.config.test_mode = true
    Rails.application.env_config["omniauth.auth"] =
    OmniAuth.config.mock_auth[:google]

  end

  #teardown OmniAuth mock setup
  teardown do
    OmniAuth.config.test_mode = false
  end

  #Google OAuth mock
  def google_oauth2_mock (user)
    OmniAuth.config.mock_auth[:google]
    OmniAuth::AuthHash.new ({
    'provider'            => 'google_oauth2',
    'uid'                 => '123545',
    'user_id'             => '2',
    'first_name'          => 'X',
    'last_name'           => 'XXYZ',
    'email'               => 'xxyzjam@example.com',
    'image'               => 'https://lh3.googleusercontent.com/photo.jpg',
    'oauth_token'         => 'abcdef12345',
    'refresh_token'       => '12345abcdef',
    'oauth_expires_at'    => DateTime.now,
    })
  end

Я поместил маршруты в отдельные тесты, и это позволило мне беспрепятственно запускать набор тестов.

Надеюсь, я смогу сэкономить вам время и разочарования.

...