diff options
Diffstat (limited to 'spec/controllers/projects/service_desk_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/service_desk_controller_spec.rb | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/spec/controllers/projects/service_desk_controller_spec.rb b/spec/controllers/projects/service_desk_controller_spec.rb deleted file mode 100644 index 6b914ac8f19..00000000000 --- a/spec/controllers/projects/service_desk_controller_spec.rb +++ /dev/null @@ -1,112 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Projects::ServiceDeskController do - let_it_be(:project) do - create(:project, :private, :custom_repo, - service_desk_enabled: true, - files: { '.gitlab/issue_templates/service_desk.md' => 'template' }) - end - - let_it_be(:user) { create(:user) } - - before do - allow(Gitlab::Email::IncomingEmail).to receive(:enabled?) { true } - allow(Gitlab::Email::IncomingEmail).to receive(:supports_wildcard?) { true } - - project.add_maintainer(user) - sign_in(user) - end - - describe 'GET service desk properties' do - it 'returns service_desk JSON data' do - get :show, params: { namespace_id: project.namespace.to_param, project_id: project }, format: :json - - expect(json_response["service_desk_address"]).to match(/\A[^@]+@[^@]+\z/) - expect(json_response["service_desk_enabled"]).to be_truthy - expect(response).to have_gitlab_http_status(:ok) - end - - context 'when user is not project maintainer' do - let(:guest) { create(:user) } - - it 'renders 404' do - project.add_guest(guest) - sign_in(guest) - - get :show, params: { namespace_id: project.namespace.to_param, project_id: project }, format: :json - - expect(response).to have_gitlab_http_status(:not_found) - end - end - - context 'when issue template is present' do - it 'returns template_file_missing as false' do - create(:service_desk_setting, project: project, issue_template_key: 'service_desk') - - get :show, params: { namespace_id: project.namespace.to_param, project_id: project }, format: :json - - response_hash = Gitlab::Json.parse(response.body) - expect(response_hash['template_file_missing']).to eq(false) - end - end - - context 'when issue template file becomes outdated' do - it 'returns template_file_missing as true' do - service = ServiceDeskSetting.new(project_id: project.id, issue_template_key: 'deleted') - service.save!(validate: false) - - get :show, params: { namespace_id: project.namespace.to_param, project_id: project }, format: :json - - expect(json_response['template_file_missing']).to eq(true) - end - end - end - - describe 'PUT service desk properties' do - it 'toggles services desk incoming email' do - project.update!(service_desk_enabled: false) - - put :update, params: { namespace_id: project.namespace.to_param, - project_id: project, - service_desk_enabled: true }, format: :json - - expect(json_response["service_desk_address"]).to be_present - expect(json_response["service_desk_enabled"]).to be_truthy - expect(response).to have_gitlab_http_status(:ok) - end - - it 'sets issue_template_key' do - put :update, params: { namespace_id: project.namespace.to_param, - project_id: project, - issue_template_key: 'service_desk' }, format: :json - - settings = project.service_desk_setting - expect(settings).to be_present - expect(settings.issue_template_key).to eq('service_desk') - expect(json_response['template_file_missing']).to eq(false) - expect(json_response['issue_template_key']).to eq('service_desk') - end - - it 'returns an error when update of service desk settings fails' do - put :update, params: { namespace_id: project.namespace.to_param, - project_id: project, - issue_template_key: 'invalid key' }, format: :json - - expect(response).to have_gitlab_http_status(:unprocessable_entity) - expect(json_response['message']).to eq('Issue template key is empty or does not exist') - end - - context 'when user cannot admin the project' do - let(:other_user) { create(:user) } - - it 'renders 404' do - sign_in(other_user) - put :update, params: { namespace_id: project.namespace.to_param, project_id: project, service_desk_enabled: true }, format: :json - - expect(response).to have_gitlab_http_status(:not_found) - end - end - end -end |