From 4c5f62de9976b59e59f01c6be571073703e24640 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 14 Jun 2023 03:34:01 -0400 Subject: [PATCH] Extract shared examples from api specs (#25387) --- .../api/v1/accounts_controller_spec.rb | 8 ------- .../admin/account_actions_controller_spec.rb | 16 ------------- .../api/v1/admin/accounts_controller_spec.rb | 16 ------------- .../preview_card_providers_controller_spec.rb | 16 ------------- .../v1/admin/trends/links_controller_spec.rb | 16 ------------- .../admin/trends/statuses_controller_spec.rb | 16 ------------- .../v1/admin/trends/tags_controller_spec.rb | 16 ------------- .../api/v1/domain_blocks_controller_spec.rb | 8 ------- .../api/v2/admin/accounts_controller_spec.rb | 16 ------------- .../v1/admin/canonical_email_blocks_spec.rb | 20 ---------------- .../api/v1/admin/domain_allows_spec.rb | 20 ---------------- .../api/v1/admin/domain_blocks_spec.rb | 20 ---------------- .../api/v1/admin/email_domain_blocks_spec.rb | 20 ---------------- spec/requests/api/v1/admin/ip_blocks_spec.rb | 20 ---------------- spec/requests/api/v1/admin/reports_spec.rb | 20 ---------------- spec/requests/api/v1/featured_tags_spec.rb | 8 ------- spec/support/examples/api.rb | 23 +++++++++++++++++++ 17 files changed, 23 insertions(+), 256 deletions(-) create mode 100644 spec/support/examples/api.rb diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 49d286774557c63228676ddd4ddbb384b0c2ddee..0daec691a5db7771813559a71f111e7b520ab973 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -13,14 +13,6 @@ RSpec.describe Api::V1::AccountsController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'POST #create' do let(:app) { Fabricate(:application) } let(:token) { Doorkeeper::AccessToken.find_or_create_for(application: app, resource_owner: nil, scopes: 'read write', use_refresh_token: false) } diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb index 0f39a80b12c1e8b47f637ad6a9ea95ac250f1244..523350e1231b3b99c2639ff928cb4308ab10729d 100644 --- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb +++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb @@ -15,22 +15,6 @@ RSpec.describe Api::V1::Admin::AccountActionsController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'POST #create' do context 'with type of disable' do before do diff --git a/spec/controllers/api/v1/admin/accounts_controller_spec.rb b/spec/controllers/api/v1/admin/accounts_controller_spec.rb index 852a5210218bd91bb2bccf6bf7f891a8d8152947..36f6e398cbe09a409509b7a5d0ad72437245d9e1 100644 --- a/spec/controllers/api/v1/admin/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/admin/accounts_controller_spec.rb @@ -15,22 +15,6 @@ RSpec.describe Api::V1::Admin::AccountsController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do let!(:remote_account) { Fabricate(:account, domain: 'example.org') } let!(:other_remote_account) { Fabricate(:account, domain: 'foo.bar') } diff --git a/spec/controllers/api/v1/admin/trends/links/preview_card_providers_controller_spec.rb b/spec/controllers/api/v1/admin/trends/links/preview_card_providers_controller_spec.rb index 883a55b7b661bd6ac0584684c7f1536c79168649..76e215440d44f89fc087c9d206fcef3ea268707d 100644 --- a/spec/controllers/api/v1/admin/trends/links/preview_card_providers_controller_spec.rb +++ b/spec/controllers/api/v1/admin/trends/links/preview_card_providers_controller_spec.rb @@ -16,22 +16,6 @@ describe Api::V1::Admin::Trends::Links::PreviewCardProvidersController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do it 'returns http success' do get :index, params: { account_id: account.id, limit: 2 } diff --git a/spec/controllers/api/v1/admin/trends/links_controller_spec.rb b/spec/controllers/api/v1/admin/trends/links_controller_spec.rb index 9c144d3faf678ad2bef9d359d5ecd11762a3bbcd..d9aa06824db3440a43a220dd56c5861a5cac9832 100644 --- a/spec/controllers/api/v1/admin/trends/links_controller_spec.rb +++ b/spec/controllers/api/v1/admin/trends/links_controller_spec.rb @@ -16,22 +16,6 @@ describe Api::V1::Admin::Trends::LinksController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do it 'returns http success' do get :index, params: { account_id: account.id, limit: 2 } diff --git a/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb b/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb index d25186b376f3ff8effc430195b69a8f46baaedfe..4d80055ac0b041050b024714bb0cc9c011d5fdd9 100644 --- a/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/admin/trends/statuses_controller_spec.rb @@ -16,22 +16,6 @@ describe Api::V1::Admin::Trends::StatusesController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do it 'returns http success' do get :index, params: { account_id: account.id, limit: 2 } diff --git a/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb b/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb index 5ee443d57557a58ad81abf3f0b5f9848769b6b23..0b8eb8c3b8d4fc134264646eefeab8d3ba3fffb4 100644 --- a/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb +++ b/spec/controllers/api/v1/admin/trends/tags_controller_spec.rb @@ -16,22 +16,6 @@ describe Api::V1::Admin::Trends::TagsController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do it 'returns http success' do get :index, params: { account_id: account.id, limit: 2 } diff --git a/spec/controllers/api/v1/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/domain_blocks_controller_spec.rb index aa98ec4c323986e03b93926fff8dc10621549114..20b2909e63721c75b77a24eeaa284ae719202bfa 100644 --- a/spec/controllers/api/v1/domain_blocks_controller_spec.rb +++ b/spec/controllers/api/v1/domain_blocks_controller_spec.rb @@ -13,14 +13,6 @@ RSpec.describe Api::V1::DomainBlocksController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #show' do let(:scopes) { 'read:blocks' } diff --git a/spec/controllers/api/v2/admin/accounts_controller_spec.rb b/spec/controllers/api/v2/admin/accounts_controller_spec.rb index 762c84af949994780174e0b8ed61a1702665f5aa..a775be1709e7cf0a70f05d0d164c4ad7b9772881 100644 --- a/spec/controllers/api/v2/admin/accounts_controller_spec.rb +++ b/spec/controllers/api/v2/admin/accounts_controller_spec.rb @@ -15,22 +15,6 @@ RSpec.describe Api::V2::Admin::AccountsController do allow(controller).to receive(:doorkeeper_token) { token } end - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET #index' do let!(:remote_account) { Fabricate(:account, domain: 'example.org') } let!(:other_remote_account) { Fabricate(:account, domain: 'foo.bar') } diff --git a/spec/requests/api/v1/admin/canonical_email_blocks_spec.rb b/spec/requests/api/v1/admin/canonical_email_blocks_spec.rb index d70e6fc8a1e1822053554f42da22d852ec8caf1b..4382cb84e545f2157898c7bd59b1f04e3dbf4961 100644 --- a/spec/requests/api/v1/admin/canonical_email_blocks_spec.rb +++ b/spec/requests/api/v1/admin/canonical_email_blocks_spec.rb @@ -9,26 +9,6 @@ RSpec.describe 'Canonical Email Blocks' do let(:scopes) { 'admin:read:canonical_email_blocks admin:write:canonical_email_blocks' } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/canonical_email_blocks' do subject do get '/api/v1/admin/canonical_email_blocks', headers: headers, params: params diff --git a/spec/requests/api/v1/admin/domain_allows_spec.rb b/spec/requests/api/v1/admin/domain_allows_spec.rb index eb7915e77a560756aaaaf7f9ebd0a54ddc4504ae..96000e3ef4832cc84f233844018f4e6a6bd370d3 100644 --- a/spec/requests/api/v1/admin/domain_allows_spec.rb +++ b/spec/requests/api/v1/admin/domain_allows_spec.rb @@ -9,26 +9,6 @@ RSpec.describe 'Domain Allows' do let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/domain_allows' do subject do get '/api/v1/admin/domain_allows', headers: headers, params: params diff --git a/spec/requests/api/v1/admin/domain_blocks_spec.rb b/spec/requests/api/v1/admin/domain_blocks_spec.rb index b3d52311b3a61d00c0a3dde0b43873df45e11e04..7a5ac28c565e1f7405f2ae546bd12025726828d8 100644 --- a/spec/requests/api/v1/admin/domain_blocks_spec.rb +++ b/spec/requests/api/v1/admin/domain_blocks_spec.rb @@ -9,26 +9,6 @@ RSpec.describe 'Domain Blocks' do let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/domain_blocks' do subject do get '/api/v1/admin/domain_blocks', headers: headers, params: params diff --git a/spec/requests/api/v1/admin/email_domain_blocks_spec.rb b/spec/requests/api/v1/admin/email_domain_blocks_spec.rb index a24f22be2173f30500a1f0c072acaadd241eab3b..d512def86690d081fbc9461c1620a3e23d34a88a 100644 --- a/spec/requests/api/v1/admin/email_domain_blocks_spec.rb +++ b/spec/requests/api/v1/admin/email_domain_blocks_spec.rb @@ -10,26 +10,6 @@ RSpec.describe 'Email Domain Blocks' do let(:scopes) { 'admin:read:email_domain_blocks admin:write:email_domain_blocks' } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/email_domain_blocks' do subject do get '/api/v1/admin/email_domain_blocks', headers: headers, params: params diff --git a/spec/requests/api/v1/admin/ip_blocks_spec.rb b/spec/requests/api/v1/admin/ip_blocks_spec.rb index 2091ef3dc6b2b604ff5ca4df211718fe7eca90a2..d03886c51b06d18b1a2d60d862ce97975a0bdef2 100644 --- a/spec/requests/api/v1/admin/ip_blocks_spec.rb +++ b/spec/requests/api/v1/admin/ip_blocks_spec.rb @@ -9,26 +9,6 @@ RSpec.describe 'IP Blocks' do let(:scopes) { 'admin:read:ip_blocks admin:write:ip_blocks' } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/ip_blocks' do subject do get '/api/v1/admin/ip_blocks', headers: headers, params: params diff --git a/spec/requests/api/v1/admin/reports_spec.rb b/spec/requests/api/v1/admin/reports_spec.rb index cd9fc100e76e24b210295de4b64ce8e23aa5f3bd..91c3c11f5dab49f2e6d703c4e55735470fda25a3 100644 --- a/spec/requests/api/v1/admin/reports_spec.rb +++ b/spec/requests/api/v1/admin/reports_spec.rb @@ -9,26 +9,6 @@ RSpec.describe 'Reports' do let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - - shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { UserRole.find_by(name: wrong_role) } - - it 'returns http forbidden' do - subject - - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/admin/reports' do subject do get '/api/v1/admin/reports', headers: headers, params: params diff --git a/spec/requests/api/v1/featured_tags_spec.rb b/spec/requests/api/v1/featured_tags_spec.rb index 8a552c1d4b3fe26d4c31140745b78f724391dc0a..6c171f6e47a47b1a16068bf65f53b0df7a0f7bd3 100644 --- a/spec/requests/api/v1/featured_tags_spec.rb +++ b/spec/requests/api/v1/featured_tags_spec.rb @@ -8,14 +8,6 @@ RSpec.describe 'FeaturedTags' do let(:scopes) { 'read:accounts write:accounts' } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - shared_examples 'forbidden for wrong scope' do |wrong_scope| - let(:scopes) { wrong_scope } - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - describe 'GET /api/v1/featured_tags' do context 'with wrong scope' do before do diff --git a/spec/support/examples/api.rb b/spec/support/examples/api.rb new file mode 100644 index 0000000000000000000000000000000000000000..d531860abfddfe2bbe4eff97266cf0cc9d2cfd60 --- /dev/null +++ b/spec/support/examples/api.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +shared_examples 'forbidden for wrong scope' do |wrong_scope| + let(:scopes) { wrong_scope } + + it 'returns http forbidden' do + # Some examples have a subject which needs to be called to make a request + subject if request.nil? + + expect(response).to have_http_status(403) + end +end + +shared_examples 'forbidden for wrong role' do |wrong_role| + let(:role) { UserRole.find_by(name: wrong_role) } + + it 'returns http forbidden' do + # Some examples have a subject which needs to be called to make a request + subject if request.nil? + + expect(response).to have_http_status(403) + end +end