53 lines
1.4 KiB
Ruby
53 lines
1.4 KiB
Ruby
|
# frozen_string_literal: true
|
|||
|
|
|||
|
require 'spec_helper'
|
|||
|
|
|||
|
RSpec.describe GitlabSchema.types['UntrustedRegexp'] do
|
|||
|
using RSpec::Parameterized::TableSyntax
|
|||
|
|
|||
|
specify { expect(described_class.graphql_name).to eq('UntrustedRegexp') }
|
|||
|
|
|||
|
specify { expect(described_class.description).to eq('A regexp containing patterns sourced from user input') }
|
|||
|
|
|||
|
describe '.coerce_input' do
|
|||
|
subject { described_class.coerce_input(input, nil) }
|
|||
|
|
|||
|
where(:input, :expected_result) do
|
|||
|
'.*' | '.*'
|
|||
|
'(.*)' | '(.*)'
|
|||
|
'[test*]+' | '[test*]+'
|
|||
|
'*v1' | :raise_error
|
|||
|
'[test*' | :raise_error
|
|||
|
'test*+' | :raise_error
|
|||
|
end
|
|||
|
|
|||
|
with_them do
|
|||
|
context "with input #{params[:input]}" do
|
|||
|
if params[:expected_result] == :raise_error
|
|||
|
it 'raises a coercion error' do
|
|||
|
expect { subject }.to raise_error(GraphQL::CoercionError, /#{Regexp.quote(input)} is an invalid regexp/)
|
|||
|
end
|
|||
|
else
|
|||
|
it { expect(subject).to eq(expected_result) }
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
describe '.coerce_result' do
|
|||
|
subject { described_class.coerce_result(input, nil) }
|
|||
|
|
|||
|
where(:input, :expected_result) do
|
|||
|
'1' | '1'
|
|||
|
1 | '1'
|
|||
|
true | 'true'
|
|||
|
end
|
|||
|
|
|||
|
with_them do
|
|||
|
context "with input #{params[:input]}" do
|
|||
|
it { expect(subject).to eq(expected_result) }
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|