Skip to content

Instantly share code, notes, and snippets.

@fadhlirahim
Created September 6, 2016 05:07
Show Gist options
  • Save fadhlirahim/217a4be4ec2b280d9ac6cfb96eae1b6b to your computer and use it in GitHub Desktop.
Save fadhlirahim/217a4be4ec2b280d9ac6cfb96eae1b6b to your computer and use it in GitHub Desktop.
doorkeeper oauth token in rspec
# assumption
# model user exist
#
module AccessTokenHelper
APP_NAME = "app name".freeze
REDIRECT_URL = "https://host.name/oauth/callback".freeze
def token_scopes(scopes)
app = Doorkeeper::Application.create!(:name => "MyApp", :redirect_uri => REDIRECT_URL)
user = create(:user)
Doorkeeper::AccessToken.create!(:application_id => app.id, :resource_owner_id => user.id, scopes: scopes)
end
end
## in rails_helper.rb or spec_helper.rb
RSpec.configure do |config|
config.include AccessTokenHelper
end
## controller
class SomeController < ApplicationController
before_action only: [:index] do
doorkeeper_authorize! :public, :manage
end
end
## in rspec controller spec
require "rails_helper"
describe SomeController do
let(:token) { token_scopes("public manage") }
describe "GET #index" do
context "valid scope"
it "returns ok" do
get :index
expect(response.status).to eq 200
end
end
context "invalid scope" do
let(:token) { token_scopes("invalid_scope")}
it "returns forbidden" do
get :index
expect(response.status).to eq 403
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment