diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index d6242efbf7d..06af4fb18dc 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -23,9 +23,9 @@ class IpBlock < ApplicationRecord sign_up_requires_approval: 5000, sign_up_block: 5500, no_access: 9999, - }, prefix: true + }, prefix: true, validate: true - validates :ip, :severity, presence: true + validates :ip, presence: true validates :ip, uniqueness: true after_commit :reset_cache diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index 290b99b2884..5af6db2a5f5 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -18,6 +18,13 @@ describe IpBlock do expect(ip_block).to model_have_error_on_field(:severity) end + it 'validates severity inclusion', :aggregate_failures do + ip_block = described_class.new(ip: '127.0.0.1', severity: :invalid) + + expect(ip_block).to_not be_valid + expect(ip_block).to model_have_error_on_field(:severity) + end + it 'validates ip uniqueness', :aggregate_failures do described_class.create!(ip: '127.0.0.1', severity: :no_access) diff --git a/spec/requests/api/v1/admin/ip_blocks_spec.rb b/spec/requests/api/v1/admin/ip_blocks_spec.rb index 98b954dd49f..79418e1f0c4 100644 --- a/spec/requests/api/v1/admin/ip_blocks_spec.rb +++ b/spec/requests/api/v1/admin/ip_blocks_spec.rb @@ -166,6 +166,16 @@ RSpec.describe 'IP Blocks' do expect(response).to have_http_status(422) end end + + context 'when the given severity is invalid' do + let(:params) { { ip: '151.0.32.55', severity: 'invalid' } } + + it 'returns http unprocessable entity' do + subject + + expect(response).to have_http_status(422) + end + end end describe 'PUT /api/v1/admin/ip_blocks/:id' do