diff options
Diffstat (limited to 'spec/lib/api/helpers/custom_validators_spec.rb')
-rw-r--r-- | spec/lib/api/helpers/custom_validators_spec.rb | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/spec/lib/api/helpers/custom_validators_spec.rb b/spec/lib/api/helpers/custom_validators_spec.rb deleted file mode 100644 index a4f2cd3452c..00000000000 --- a/spec/lib/api/helpers/custom_validators_spec.rb +++ /dev/null @@ -1,193 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe API::Helpers::CustomValidators do - let(:scope) do - Struct.new(:opts) do - def full_name(attr_name) - attr_name - end - end - end - - describe API::Helpers::CustomValidators::Absence do - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'empty param' do - it 'does not raise a validation error' do - expect_no_validation_error({}) - end - end - - context 'invalid parameters' do - it 'raises a validation error' do - expect_validation_error('test' => 'some_value') - end - end - end - - describe API::Helpers::CustomValidators::GitSha do - let(:sha) { RepoHelpers.sample_commit.id } - let(:short_sha) { sha[0, Gitlab::Git::Commit::MIN_SHA_LENGTH] } - let(:too_short_sha) { sha[0, Gitlab::Git::Commit::MIN_SHA_LENGTH - 1] } - - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'valid sha' do - it 'does not raise a validation error' do - expect_no_validation_error('test' => sha) - expect_no_validation_error('test' => short_sha) - end - end - - context 'empty params' do - it 'raises a validation error' do - expect_validation_error('test' => nil) - expect_validation_error('test' => '') - end - end - - context 'invalid sha' do - it 'raises a validation error' do - expect_validation_error('test' => "#{sha}2") # Sha length > 40 - expect_validation_error('test' => 'somestring') - expect_validation_error('test' => too_short_sha) # sha length < MIN_SHA_LENGTH (7) - end - end - end - - describe API::Helpers::CustomValidators::GitRef do - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'valid revision param' do - it 'does not raise a validation error' do - expect_no_validation_error('test' => '4e963fe') - expect_no_validation_error('test' => 'foo/bar/baz') - expect_no_validation_error('test' => "heads/fu\303\237") - expect_no_validation_error('test' => 'a' * 1024) - end - end - - context "revision param contains invalid chars" do - it 'raises a validation error' do - expect_validation_error('test' => '-4e963fe') - expect_validation_error('test' => '4e963fe..ed4ef') - expect_validation_error('test' => '4e96\3fe') - expect_validation_error('test' => '4e96@3fe') - expect_validation_error('test' => '4e9@{63fe') - expect_validation_error('test' => '4e963 fe') - expect_validation_error('test' => '4e96~3fe') - expect_validation_error('test' => '^4e963fe') - expect_validation_error('test' => '4:e963fe') - expect_validation_error('test' => '4e963fe.') - expect_validation_error('test' => 'heads/foo..bar') - expect_validation_error('test' => 'foo/bar/.') - expect_validation_error('test' => 'heads/v@{ation') - expect_validation_error('test' => 'refs/heads/foo.') - expect_validation_error('test' => 'heads/foo\bar') - expect_validation_error('test' => 'heads/f[/bar') - expect_validation_error('test' => "heads/foo\t") - expect_validation_error('test' => "heads/foo\177") - expect_validation_error('test' => "#{'a' * 1025}") - expect_validation_error('test' => nil) - expect_validation_error('test' => '') - end - end - end - - describe API::Helpers::CustomValidators::FilePath do - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'valid file path' do - it 'does not raise a validation error' do - expect_no_validation_error('test' => './foo') - expect_no_validation_error('test' => './bar.rb') - expect_no_validation_error('test' => 'foo%2Fbar%2Fnew%2Ffile.rb') - expect_no_validation_error('test' => 'foo%2Fbar%2Fnew') - expect_no_validation_error('test' => 'foo%252Fbar%252Fnew%252Ffile.rb') - end - end - - context 'invalid file path' do - it 'raise a validation error' do - expect_validation_error('test' => '../foo') - expect_validation_error('test' => '../') - expect_validation_error('test' => 'foo/../../bar') - expect_validation_error('test' => 'foo/../') - expect_validation_error('test' => 'foo/..') - expect_validation_error('test' => '../') - expect_validation_error('test' => '..\\') - expect_validation_error('test' => '..\/') - expect_validation_error('test' => '%2e%2e%2f') - expect_validation_error('test' => '/etc/passwd') - end - end - end - - describe API::Helpers::CustomValidators::IntegerNoneAny do - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'valid parameters' do - it 'does not raise a validation error' do - expect_no_validation_error('test' => 2) - expect_no_validation_error('test' => 100) - expect_no_validation_error('test' => 'None') - expect_no_validation_error('test' => 'Any') - expect_no_validation_error('test' => 'none') - expect_no_validation_error('test' => 'any') - end - end - - context 'invalid parameters' do - it 'raises a validation error' do - expect_validation_error({ 'test' => 'some_other_string' }) - end - end - end - - describe API::Helpers::CustomValidators::ArrayNoneAny do - subject do - described_class.new(['test'], {}, false, scope.new) - end - - context 'valid parameters' do - it 'does not raise a validation error' do - expect_no_validation_error('test' => []) - expect_no_validation_error('test' => [1, 2, 3]) - expect_no_validation_error('test' => 'None') - expect_no_validation_error('test' => 'Any') - expect_no_validation_error('test' => 'none') - expect_no_validation_error('test' => 'any') - end - end - - context 'invalid parameters' do - it 'raises a validation error' do - expect_validation_error('test' => 'some_other_string') - end - end - end - - def expect_no_validation_error(params) - expect { validate_test_param!(params) }.not_to raise_error - end - - def expect_validation_error(params) - expect { validate_test_param!(params) }.to raise_error(Grape::Exceptions::Validation) - end - - def validate_test_param!(params) - subject.validate_param!('test', params) - end -end |