docbrown/spec/requests/oauth/tokens_spec.rb
Julianna Tetreault f6478fb7cc
Replace peform_enqueued_jobs with sidekiq_perform_enqueued_jobs in specs (#6454)
* Replace peform_enqueued_jobs with sidekiq_perform_enqueued_jobs in specs

* Fix typo in reaction_spec
2020-03-04 11:39:48 -07:00

68 lines
2.4 KiB
Ruby

require "rails_helper"
RSpec.describe "Oauth::Tokens", type: :request do
let(:oauth_app) { create(:application) }
let(:user) { create(:user) }
let(:oauth_client) { Doorkeeper::OAuth::Client.new(oauth_app) }
let(:access_token) { create(:doorkeeper_access_token, application: oauth_app, resource_owner: user) }
let!(:user_webhook) { create(:webhook_endpoint, user: user, oauth_application: oauth_app) }
let!(:user_webhook2) { create(:webhook_endpoint, user: user, oauth_application: oauth_app) }
context "when authorization succeeds" do
# rubocop:disable RSpec/AnyInstance
before do
allow_any_instance_of(Doorkeeper::Server).to receive(:client) { oauth_client }
end
# rubocop:enable RSpec/AnyInstance
it "destroys webhooks" do
user2_webhook = create(:webhook_endpoint, oauth_application: oauth_app)
another_app_webhook = create(:webhook_endpoint)
sidekiq_perform_enqueued_jobs do
post oauth_revoke_path, params: { token: access_token.token }
end
expect(Webhook::Endpoint.find_by(id: user_webhook.id)).to be_nil
expect(Webhook::Endpoint.find_by(id: user_webhook2.id)).to be_nil
expect(user2_webhook.reload).to be_persisted
expect(another_app_webhook.reload).to be_persisted
end
it "returns 200" do
post oauth_revoke_path, params: { token: access_token.token }
expect(response.status).to eq 200
end
it "revokes the access token" do
post oauth_revoke_path, params: { token: access_token.token }
expect(access_token.reload).to have_attributes(revoked?: true)
end
end
context "when authorization fails" do
let(:some_other_client) { create(:application, confidential: true) }
let(:oauth_client) { Doorkeeper::OAuth::Client.new(some_other_client) }
it "returns 403" do
post oauth_revoke_path, params: { token: access_token.token }
expect(response.status).to eq 403
end
it "does not revoke the access token" do
post oauth_revoke_path, params: { token: access_token.token }
expect(access_token.reload).to have_attributes(revoked?: false)
end
it "doesn't destroy webhooks" do
sidekiq_perform_enqueued_jobs do
post oauth_revoke_path, params: { token: access_token.token }
end
expect(user_webhook.reload).to be_persisted
expect(user_webhook2.reload).to be_persisted
end
end
end