diff options
Diffstat (limited to 'spec/graphql/resolvers/ci/config_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/ci/config_resolver_spec.rb | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/spec/graphql/resolvers/ci/config_resolver_spec.rb b/spec/graphql/resolvers/ci/config_resolver_spec.rb index 97eee749290..3ff6d8f4347 100644 --- a/spec/graphql/resolvers/ci/config_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/config_resolver_spec.rb @@ -6,16 +6,24 @@ RSpec.describe Resolvers::Ci::ConfigResolver do include GraphqlHelpers describe '#resolve' do - before do + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository, creator: user, namespace: user.namespace) } + let_it_be(:sha) { nil } + + let_it_be(:content) do + File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_includes.yml')) + end + + let(:ci_lint) do ci_lint_double = instance_double(::Gitlab::Ci::Lint) allow(ci_lint_double).to receive(:validate).and_return(fake_result) - allow(::Gitlab::Ci::Lint).to receive(:new).and_return(ci_lint_double) + ci_lint_double end - let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project, :repository, creator: user, namespace: user.namespace) } - let_it_be(:sha) { nil } + before do + allow(::Gitlab::Ci::Lint).to receive(:new).and_return(ci_lint) + end subject(:response) do resolve(described_class, @@ -33,10 +41,6 @@ RSpec.describe Resolvers::Ci::ConfigResolver do ) end - let_it_be(:content) do - File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_includes.yml')) - end - it 'lints the ci config file and returns the merged yaml file' do expect(response[:status]).to eq(:valid) expect(response[:merged_yaml]).to eq(content) @@ -74,5 +78,23 @@ RSpec.describe Resolvers::Ci::ConfigResolver do expect(response[:errors]).to eq(['Invalid configuration format']) end end + + context 'with an invalid SHA' do + let_it_be(:sha) { ':' } + + let(:ci_lint) do + ci_lint_double = instance_double(::Gitlab::Ci::Lint) + allow(ci_lint_double).to receive(:validate).and_raise(GRPC::InvalidArgument) + + ci_lint_double + end + + it 'logs the invalid SHA to Sentry' do + expect(Gitlab::ErrorTracking).to receive(:track_and_raise_exception) + .with(GRPC::InvalidArgument, sha: ':') + + response + end + end end end |