diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 16:37:47 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 16:37:47 +0300 |
commit | aee0a117a889461ce8ced6fcf73207fe017f1d99 (patch) | |
tree | 891d9ef189227a8445d83f35c1b0fc99573f4380 /spec/models/hooks | |
parent | 8d46af3258650d305f53b819eabf7ab18d22f59e (diff) |
Add latest changes from gitlab-org/gitlab@14-6-stable-eev14.6.0-rc42
Diffstat (limited to 'spec/models/hooks')
-rw-r--r-- | spec/models/hooks/web_hook_spec.rb | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/spec/models/hooks/web_hook_spec.rb b/spec/models/hooks/web_hook_spec.rb index 59f4533a6c1..c292e78b32d 100644 --- a/spec/models/hooks/web_hook_spec.rb +++ b/spec/models/hooks/web_hook_spec.rb @@ -330,6 +330,20 @@ RSpec.describe WebHook do expect { hook.backoff! }.to change(hook, :backoff_count).by(1) end + context 'when the hook is permanently disabled' do + before do + allow(hook).to receive(:permanently_disabled?).and_return(true) + end + + it 'does not set disabled_until' do + expect { hook.backoff! }.not_to change(hook, :disabled_until) + end + + it 'does not increment the backoff count' do + expect { hook.backoff! }.not_to change(hook, :backoff_count) + end + end + context 'when we have backed off MAX_FAILURES times' do before do stub_const("#{described_class}::MAX_FAILURES", 5) @@ -392,4 +406,77 @@ RSpec.describe WebHook do end end end + + describe '#temporarily_disabled?' do + it 'is false when not temporarily disabled' do + expect(hook).not_to be_temporarily_disabled + end + + context 'when hook has been told to back off' do + before do + hook.backoff! + end + + it 'is true' do + expect(hook).to be_temporarily_disabled + end + + it 'is false when `web_hooks_disable_failed` flag is disabled' do + stub_feature_flags(web_hooks_disable_failed: false) + + expect(hook).not_to be_temporarily_disabled + end + end + end + + describe '#permanently_disabled?' do + it 'is false when not disabled' do + expect(hook).not_to be_permanently_disabled + end + + context 'when hook has been disabled' do + before do + hook.disable! + end + + it 'is true' do + expect(hook).to be_permanently_disabled + end + + it 'is false when `web_hooks_disable_failed` flag is disabled' do + stub_feature_flags(web_hooks_disable_failed: false) + + expect(hook).not_to be_permanently_disabled + end + end + end + + describe '#rate_limited?' do + context 'when there are rate limits' do + before do + allow(hook).to receive(:rate_limit).and_return(3) + end + + it 'is false when hook has not been rate limited' do + expect(Gitlab::ApplicationRateLimiter).to receive(:peek).and_return(false) + expect(hook).not_to be_rate_limited + end + + it 'is true when hook has been rate limited' do + expect(Gitlab::ApplicationRateLimiter).to receive(:peek).and_return(true) + expect(hook).to be_rate_limited + end + end + + context 'when there are no rate limits' do + before do + allow(hook).to receive(:rate_limit).and_return(nil) + end + + it 'does not call Gitlab::ApplicationRateLimiter, and is false' do + expect(Gitlab::ApplicationRateLimiter).not_to receive(:peek) + expect(hook).not_to be_rate_limited + end + end + end end |