From 6e9b98d057c009c9bf97976f1921863c4ebc18e4 Mon Sep 17 00:00:00 2001 From: hustewart Date: Tue, 15 Apr 2025 14:16:49 -0400 Subject: [PATCH 1/2] Use symbol reason in snippet base service class --- app/services/snippets/base_service.rb | 4 ++-- spec/services/snippets/create_service_spec.rb | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/services/snippets/base_service.rb b/app/services/snippets/base_service.rb index a93c611c289b97..a352ba024c61a6 100644 --- a/app/services/snippets/base_service.rb +++ b/app/services/snippets/base_service.rb @@ -9,6 +9,7 @@ class BaseService < ::BaseProjectService cannot_be_used_together: 'and snippet files cannot be used together', invalid_data: 'have invalid data' }.freeze + SNIPPET_ACCESS_ERROR = :snippet_access_error CreateRepositoryError = Class.new(StandardError) @@ -32,7 +33,7 @@ def visibility_allowed?(visibility_level) def forbidden_visibility_error(snippet) deny_visibility_level(snippet) - snippet_error_response(snippet, 403) + snippet_error_response(snippet, SNIPPET_ACCESS_ERROR) end def valid_params? @@ -50,7 +51,6 @@ def invalid_params_error(snippet) snippet.errors.add(:snippet_actions, INVALID_PARAMS_MESSAGES[:invalid_data]) end - # Callers need to interpret into 422 snippet_error_response(snippet, INVALID_PARAMS_ERROR) end diff --git a/spec/services/snippets/create_service_spec.rb b/spec/services/snippets/create_service_spec.rb index beb07e37946844..885a30aaa583dd 100644 --- a/spec/services/snippets/create_service_spec.rb +++ b/spec/services/snippets/create_service_spec.rb @@ -52,6 +52,10 @@ expect(subject).to be_error end + it 'responds with a reason' do + expect(subject.reason).to eq(described_class::SNIPPET_ACCESS_ERROR) + end + it 'does not create a public snippet' do expect(subject.message).to match('has been restricted') end -- GitLab From cd657abc8e2c7ff346760eddfe2b280ab611d565 Mon Sep 17 00:00:00 2001 From: hustewart Date: Fri, 18 Apr 2025 10:44:52 -0400 Subject: [PATCH 2/2] Add spec to update service --- spec/services/snippets/update_service_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/services/snippets/update_service_spec.rb b/spec/services/snippets/update_service_spec.rb index 3f9b4f12989454..fc07f6196bd944 100644 --- a/spec/services/snippets/update_service_spec.rb +++ b/spec/services/snippets/update_service_spec.rb @@ -46,6 +46,10 @@ expect(subject).to be_error end + it 'responds with a reason' do + expect(subject.reason).to eq(described_class::SNIPPET_ACCESS_ERROR) + end + it 'does not update snippet to public visibility' do original_visibility = snippet.visibility_level -- GitLab