我正在構建一個Rails API,並且正在使用門衛和設計來驗證用戶使用ResourceOwnerFromCredentials流程的。所有工作正常,但是,我無法獲得認證工作在Rspec。過濾器鏈暫停爲:doorkeeper_authorize!呈現或重定向
這裏是怎麼了整合應用中的RSpec:
let(:app_country) { FactoryGirl.create(:app_country)}
let(:valid_attributes) { FactoryGirl.attributes_for(:app_city, {:app_country_id => app_country.id}) }
let(:valid_session) { {:format => :json} }
let(:application) { Doorkeeper::Application.create!(:name => "App HQ dashboard", :redirect_uri => "https://localhost:3000/callback") }
let(:hq_user) { app_country.hq_users.create!(FactoryGirl.attributes_for :hq_user) }
let(:token) { Doorkeeper::AccessToken.create! :application_id => application.id, :resource_owner_id => hq_user.id }
但每次我試圖時間來測試一個受保護的動作,測試失敗,我從控制檯輸出如下:
Filter chain halted as :doorkeeper_authorize! rendered or redirected
Completed 403 Forbidden in 5ms (ActiveRecord: 1.2ms)
這與以前版本的門衛正常工作。當我升級守門人寶石時,測試破裂了。我究竟做錯了什麼?或者有沒有一種測試守門員保護控制器的新方法?
UPDATE
下面是一個實際的測試樣品
describe "POST create" do
describe "with valid params" do
it "creates a new AppCity" do
expect {
post :create, {:app_city => valid_attributes, :v => "HEAD", :payload_type => "NODE", :access_token => token.token}, valid_session
}.to change(AppCity, :count).by(1)
end
it "persists the AppCity" do
post :create, {:app_city => valid_attributes, :v => "HEAD", :access_token => token.token}, valid_session
response_body = JSON.parse(response.body, symbolize_names: true)
expect(response_body[:id]).to be_present
end
it "returns a 201 status" do
post :create, {:app_city => valid_attributes, :v => "HEAD", :access_token => token.token}, valid_session
response.status.should eq(201)
end
end
describe "with invalid params" do
it "returns validation error message" do
post :create, {:app_city => { "name" => "" }, :v => "HEAD", :access_token => token.token}, valid_session
response_body = JSON.parse(response.body, symbolize_names: true)
expect(response_body[:name]).to include "can't be blank"
end
it "returns a 422 status" do
post :create, {:app_city => { "name" => "" }, :v => "HEAD", :access_token => token.token}, valid_session
response.status.should eq(422)
end
end
end
您是否還需要應用創建的令牌?以某種方式在請求中提供它? 您是否可以提供更完整的測試,包括設置和實際測試以及有效載荷? –
@EmilKampp我編輯了這個問題,包括實際測試 – awsmketchup