diff --git a/app/services/snippets/base_service.rb b/app/services/snippets/base_service.rb index a93c611c289b971665a9ad93371fa522bca2ba14..a352ba024c61a639861cc5488bec3ae777efc873 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 beb07e37946844210e67c23eb6455d5f2b154e03..885a30aaa583dd72efd717d558a688587e20012b 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 diff --git a/spec/services/snippets/update_service_spec.rb b/spec/services/snippets/update_service_spec.rb index 3f9b4f12989454bcb01b99cbf374cdacde6d2954..fc07f6196bd944575ca2b790f3525639484ab43b 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