discourse/spec/integration/request_tracker_spec.rb

52 lines
1.4 KiB
Ruby

# frozen_string_literal: true
RSpec.describe 'request tracker' do
let(:api_key) do
Fabricate(
:api_key,
user: Fabricate.build(:user),
api_key_scopes: [ApiKeyScope.new(resource: 'users', action: 'show')]
)
end
let(:user_api_key) do
Fabricate(:user_api_key, scopes: [Fabricate.build(:user_api_key_scope, name: 'session_info')])
end
before do
CachedCounting.reset
CachedCounting.enable
ApplicationRequest.enable
end
after do
ApplicationRequest.disable
CachedCounting.reset
CachedCounting.disable
end
context 'when using an api key' do
it 'is counted as an API request' do
get "/u/#{api_key.user.username}.json", headers: { HTTP_API_KEY: api_key.key }
expect(response.status).to eq(200)
CachedCounting.flush
expect(ApplicationRequest.http_total.first.count).to eq(1)
expect(ApplicationRequest.http_2xx.first.count).to eq(1)
expect(ApplicationRequest.api.first.count).to eq(1)
end
end
context 'when using an user api key' do
it 'is counted as a user API request' do
get '/session/current.json', headers: { HTTP_USER_API_KEY: user_api_key.key }
expect(response.status).to eq(200)
CachedCounting.flush
expect(ApplicationRequest.http_total.first.count).to eq(1)
expect(ApplicationRequest.http_2xx.first.count).to eq(1)
expect(ApplicationRequest.user_api.first.count).to eq(1)
end
end
end