debian-mirror-gitlab/spec/requests/product_analytics/collector_app_attack_spec.rb
2020-08-09 17:44:08 +05:30

42 lines
977 B
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'ProductAnalytics::CollectorApp throttle' do
include RackAttackSpecHelpers
include_context 'rack attack cache store'
let(:project1) { create(:project) }
let(:project2) { create(:project) }
before do
allow(ProductAnalyticsEvent).to receive(:create).and_return(true)
end
context 'per application id' do
let(:params) do
{
aid: project1.id,
eid: SecureRandom.uuid
}
end
it 'throttles the endpoint' do
# Allow requests under the rate limit.
100.times do
expect_ok { get '/-/collector/i', params: params }
end
# Ensure its not related to ip address
random_next_ip
# Reject request over the limit
expect_rejection { get '/-/collector/i', params: params }
# But allows request for different aid
expect_ok { get '/-/collector/i', params: params.merge(aid: project2.id) }
end
end
end