LoginSignup
0
0

More than 1 year has passed since last update.

【RSpec】Doorkeeperを使用したAPIのリクエストテスト

Last updated at Posted at 2021-11-29

doorkeeperのgemを使用していて、リクエストテストでアクセストークンが必要な場合のやり方

環境

Ruby 3.0.2
Rails 6.1.4.1

Factoryの作成

アクセストークンをFactoryで擬似的に作成。
factories下にapplications.rbaccess_tokens.rbを作成

spec/factories/doorkeeper/applications.rb
FactoryBot.define do
  factory :doorkeeper_application, class: 'Doorkeeper::Application' do
    sequence(:name) { |n| "Application #{n}" }
    redirect_uri { 'https://アプリのURI/callback' }
  end
end
spec/factories/doorkeeper/access_tokens.rb
FactoryBot.define do
  factory :doorkeeper_access_token, class: 'Doorkeeper::AccessToken' do
    transient do
      user { build :user }
    end

    association :application, factory: :doorkeeper_application
    resource_owner_id { user.id }
    expires_in { 2.hours }
    scopes { 'read public' }
  end
end
RSpec.describe "Api::V1::Attendances", type: :request do
  let!(:user) { create(:user) }
  let!(:oauth_app) { create(:doorkeeper_application) }
  let!(:access_token) { create(:doorkeeper_access_token, application: oauth_app, user: user, scopes: 'read') }
  let!(:headers) { { 'Authorization': "Bearer #{access_token.token}" } }

  describe "GET /api/v1/abc" do
    subject { get '/api/v1/abc', headers: headers }

    it '200を返すこと' do
      subject
      expect(response).to have_http_status 200
    end
  end
end

注意

テスト環境でマイグレーションするのを忘れないこと!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0