gpt4 book ai didi

ruby-on-rails-3 - rspec 测试 ruby​​ on rails api 由看门人保护

转载 作者:行者123 更新时间:2023-12-04 06:58:57 25 4
gpt4 key购买 nike

如果您已经成功测试了受 doorkeeper 保护的 Rails API 的 post、put 和 delete http 方法。 OAuth2 provider gem,请分享,我会给你爱。

doorkeeper wiki documentationsample application很好地展示了如何测试 get 方法。我使用带有 Cucumber 的 Capybara 测试驱动程序成功地测试了一个帖子,如下所示。无法测试从 put 或 delete 路由的任何 API。无法使用 rspec 测试发布。

@user = create :user
@client = create(:oauth_application)
@token = create(:oauth_token, :application => @client, :resource_owner_id => @user)
json_for_new_entry = {
date_attr: Time.now.to_date,
decimal_attr: '1.1',
string_attr: 'oath2, you make me blue',
bool_attr: false,
int_attr: 1
}.to_json
page.driver.header 'Authorization', "Bearer #{@token.token}"
page.driver.post api_entry_path, json_for_new_entry,
'CONTENT_TYPE' => 'application/json'

工厂没什么特别的:
factory :user, :class => User do |user|
sequence :email do |n| "user#{n}@example.com" end
pwd = "password"
password pwd
end

factory :oauth_application, :class => Doorkeeper::Application do
sequence(:name) { |n| "application_name_#{n}" }
#redirect_uri 'urn:ietf:wg:oauth:2.0:oob'
redirect_uri 'http://localhost:3000/'
end

factory :oauth_token, :class => Doorkeeper::AccessToken do
association :application, :factory => :oauth_application
association :resource_owner_id, :factory => :user
end

我的环境有点落后于最新版本:
  • rails gems at 3.1.12
  • capybara 2.2.0
  • cucumber 1.3.10
  • 设计 2.2.7
  • 典狱长 1.2.3
  • 门卫 0.7.4
  • rspec 核心 2.14.5
  • rspec 期望 2.14.3
  • rspec 模拟 2.14.3
  • rspec-rails 2.14.0
  • 最佳答案

    假设您的测试的目的是验证底层 API 功能而不是看门人保护,那么这就是我使用的黑客:

    在我的基本 Controller 中:

    module Api
    class BaseController < ActionController::Base

    doorkeeper_for :all unless Rails.env.test?

    private

    def current_user
    if Rails.env.test? && $test_user
    $test_user
    else
    @current_user ||= User.find(doorkeeper_token.resource_owner_id)
    end

    end

    end
    end

    在我的测试中,我有一个登录助手:
    def login(user)
    $test_user = user
    end

    def logout
    $test_user = nil
    end

    我并不为这些代码感到自豪,但尽管如此,我现在可以继续我的生活,而不用担心如何在测试期间让 rails/doorkeeper/capybara 等人一起工作。

    关于ruby-on-rails-3 - rspec 测试 ruby​​ on rails api 由看门人保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986165/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com