如果您成功测试了受门卫OAuth2 提供程序 gem 保护的 Rails API 的发布、放置和删除 http 方法,请分享,我会给您的爱。
doorkeeper wiki 文档和示例应用程序很好地展示了如何测试 get 方法。我使用 Capybara 测试驱动程序和 Cucumber 成功地测试了一个帖子,如下所示。无法测试从 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
我的环境有点落后于最新版本:
- 在 3.1.12 发布宝石
- 水豚 2.2.0
- 黄瓜 1.3.10
- 设计 2.2.7
- 典狱长 1.2.3
- 看门人 0.7.4
- rspec 核心 2.14.5
- rspec-expectations 2.14.3
- rspec 模拟 2.14.3
- rspec-rails 2.14.0