gpt4 book ai didi

ruby-on-rails - 使用 rspec_api_documentation 清除 Doorkeep token

转载 作者:行者123 更新时间:2023-12-04 05:37:18 26 4
gpt4 key购买 nike

我正在使用 rspec_api_documentation 在 Rails 4 中构建 API并留下了深刻的印象。选择使用 DoorKeeper 来保护我的端点后,我能够从控制台成功地测试这一切,并使其正常工作。

我现在遇到困难的地方是如何指定它并 stub token 。

DoorKeeper 的文档建议使用以下内容:

describe Api::V1::ProfilesController do
describe 'GET #index' do
let(:token) { stub :accessible? => true }

before do
controller.stub(:doorkeeper_token) { token }
end

it 'responds with 200' do
get :index, :format => :json
response.status.should eq(200)
end
end
end

但是,我已经根据 rspec_api_documentation 编写了验收测试。这是我编写的 projects_spec.rb:

require 'spec_helper'
require 'rspec_api_documentation/dsl'

resource "Projects" do
header "Accept", "application/json"
header "Content-Type", "application/json"

let(:token) { stub :accessible? => true }

before do
controller.stub(:doorkeeper_token) { token }
end

get "/api/v1/group_runs" do
parameter :page, "Current page of projects"

example_request "Getting a list of projects" do
status.should == 200
end
end
end

当我运行测试时,我得到以下信息:

undefined local variable or method `controller' for #<RSpec::Core

我怀疑这是因为它不是明确的 Controller 规范,但正如我所说,我宁愿坚持使用这种 rspec_api_documentation 方式来测试我的 API。

肯定有人必须这样做?有没有其他方法可以 stub token ?

提前致谢。

最佳答案

我遇到了同样的问题,我用指定的 token 手动创建了访问 token 。这样,我就可以在 Authorization header 中使用我定义的 token :

resource "Projects" do
let(:oauth_app) {
Doorkeeper::Application.create!(
name: "My Application",
redirect_uri: "urn:ietf:wg:oauth:2.0:oob"
)
}
let(:access_token) { Doorkeeper::AccessToken.create!(application: oauth_app) }
let(:authorization) { "Bearer #{access_token.token}" }

header 'Authorization', :authorization

get "/api/v1/group_runs" do
example_request "Getting a list of projects" do
status.should == 200
end
end
end

关于ruby-on-rails - 使用 rspec_api_documentation 清除 Doorkeep token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577787/

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