diff --git a/.gitignore b/.gitignore index c42bb30a9..49280d1d1 100644 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,6 @@ public/assets # Ignore Byebug command history file. .byebug_history -config/zendesk.yml - # Ignore RSpec state file /spec/examples.txt diff --git a/Gemfile b/Gemfile index 0dcd1abb1..048b02101 100644 --- a/Gemfile +++ b/Gemfile @@ -9,7 +9,6 @@ gem "cancancan" gem "dartsass-rails" gem "gds-api-adapters" gem "gds-sso" -gem "gds_zendesk" gem "govuk_admin_template" gem "govuk_app_config" gem "govuk_publishing_components" diff --git a/Gemfile.lock b/Gemfile.lock index fbf51dd7e..fd88657b7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -154,8 +154,6 @@ GEM faraday (2.10.0) faraday-net_http (>= 2.0, < 3.2) logger - faraday-multipart (1.0.4) - multipart-post (~> 2) faraday-net_http (3.1.0) net-http ffi (1.17.0-aarch64-linux-gnu) @@ -176,9 +174,6 @@ GEM rails (>= 7) warden (~> 1.2) warden-oauth2 (~> 0.0.1) - gds_zendesk (3.7.0) - null_logger (~> 0) - zendesk_api (>= 1.37, < 4.0) globalid (1.2.1) activesupport (>= 6.1) google-protobuf (4.27.3-aarch64-linux) @@ -241,7 +236,6 @@ GEM domain_name (~> 0.5) i18n (1.14.5) concurrent-ruby (~> 1.0) - inflection (1.0.0) io-console (0.7.2) irb (1.14.0) rdoc (>= 4.0.0) @@ -296,7 +290,6 @@ GEM msgpack (1.7.2) multi_xml (0.7.1) bigdecimal (~> 3.1) - multipart-post (2.4.1) mutex_m (0.2.0) net-http (0.4.1) uri @@ -767,13 +760,6 @@ GEM xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.17) - zendesk_api (3.1.0) - faraday (> 2.0.0) - faraday-multipart - hashie (>= 3.5.2, < 6.0.0) - inflection - mini_mime - multipart-post (~> 2.0) PLATFORMS aarch64-linux @@ -789,7 +775,6 @@ DEPENDENCIES factory_bot_rails gds-api-adapters gds-sso - gds_zendesk govuk_admin_template govuk_app_config govuk_publishing_components diff --git a/app/controllers/change_existing_user_requests_controller.rb b/app/controllers/change_existing_user_requests_controller.rb index 3a72fad7c..b0c651bd0 100644 --- a/app/controllers/change_existing_user_requests_controller.rb +++ b/app/controllers/change_existing_user_requests_controller.rb @@ -1,6 +1,3 @@ -require "gds_zendesk/users" -require "zendesk_api/error" - class ChangeExistingUserRequestsController < RequestsController protected diff --git a/app/controllers/create_new_user_requests_controller.rb b/app/controllers/create_new_user_requests_controller.rb index 2a974e915..a14e16012 100644 --- a/app/controllers/create_new_user_requests_controller.rb +++ b/app/controllers/create_new_user_requests_controller.rb @@ -1,6 +1,3 @@ -require "gds_zendesk/users" -require "zendesk_api/error" - class CreateNewUserRequestsController < RequestsController include ExploreHelper diff --git a/app/models/support/requests/requester.rb b/app/models/support/requests/requester.rb index f4693aafd..7bf6926ca 100644 --- a/app/models/support/requests/requester.rb +++ b/app/models/support/requests/requester.rb @@ -8,6 +8,7 @@ class Requester attr_reader :email VALID_EMAIL_REGEX = /\A[\w+\-.']+@[a-z\d\-.]+\.[a-z]+\z/i + ZENDESK_ANONYMOUS_TICKETS_REQUESTER_EMAIL = ENV["ZENDESK_ANONYMOUS_TICKETS_REQUESTER_EMAIL"] || "api-user@example.com" validates :email, presence: true diff --git a/config/initializers/gds_zendesk.rb b/config/initializers/gds_zendesk.rb deleted file mode 100644 index 5e3696ec7..000000000 --- a/config/initializers/gds_zendesk.rb +++ /dev/null @@ -1,15 +0,0 @@ -require "yaml" -require "gds_zendesk/client" -require "gds_zendesk/dummy_client" - -ZENDESK_ANONYMOUS_TICKETS_REQUESTER_EMAIL = ENV["ZENDESK_ANONYMOUS_TICKETS_REQUESTER_EMAIL"] || "api-user@example.com" - -if Rails.env.development? - GDS_ZENDESK_CLIENT = GDSZendesk::DummyClient.new(logger: Rails.logger) -else - ZENDESK_CREDENTIALS = { - "username" => ENV["ZENDESK_CLIENT_USERNAME"] || "username", - "password" => ENV["ZENDESK_CLIENT_PASSWORD"] || "password", - }.freeze - GDS_ZENDESK_CLIENT = GDSZendesk::Client.new(username: ZENDESK_CREDENTIALS["username"], password: ZENDESK_CREDENTIALS["password"], logger: Rails.logger) -end diff --git a/docs/zendesk-routing.md b/docs/zendesk-routing.md index 292f7da46..3b6cfe4c0 100644 --- a/docs/zendesk-routing.md +++ b/docs/zendesk-routing.md @@ -2,7 +2,8 @@ ## How tickets are published to Zendesk -The [gds_zendesk](https://github.com/alphagov/gds_zendesk) gem provides a client to communicate with Zendesk. This `GDSZendesk::Client` is [initialised in `config/initializers/gds_zendesk.rb`](https://github.com/alphagov/support/blob/065e1596eb401806530a4e85cc4b70a15b9d4a7d/config/initializers/gds_zendesk.rb#L14). The client has a `ticket.create!` method, which is [invoked by the `ZendeskTicketWorker`](https://github.com/alphagov/support/blob/a57843ea587a296a90958b97e5b07baf194c5bf1/app/workers/zendesk_ticket_worker.rb#L27). +Support app uses Support API as a client to communicate with Zendesk by calling the [`/support-tickets` endpoint](https://github.com/alphagov/support-api/blob/c0b6ca3587f6673c9512573deeecd66a2aaa0d98/app/controllers/support_tickets_controller.rb). `Services.support_api` is [instantiated in `app/lib/services.rb`](app/lib/services.rb). +The endpoint is exposed via gds_api_adapters gem's [`.raise_support_ticket` method](https://github.com/alphagov/gds-api-adapters/blob/9aabf9d/lib/gds_api/support_api.rb#L25-L39), which is [invoked by the `ZendeskTicketWorker`](https://github.com/alphagov/support/blob/a57843ea587a296a90958b97e5b07baf194c5bf1/app/workers/zendesk_ticket_worker.rb#L27). The `ZendeskTicketWorker` is [created by the `ZendeskTickets` class](https://github.com/alphagov/support/blob/fdf8968f84231f2365207215e40cbaccad2fa6a1/app/models/zendesk/zendesk_tickets.rb#L15), which has a `raise_ticket` method that takes an object of type [`Zendesk::ZendeskTicket`](https://github.com/alphagov/support/blob/37fa7b05ec92511361b2a5e85f2c9f1a1bb3fb51/app/models/zendesk/zendesk_ticket.rb#L6) (or any child class thereof). `ZendeskTickets` is [instantiated in the `RequestsController`](https://github.com/alphagov/support/blob/564e53dc8a3d7a679b0c7f3ff52b91b3dd12e56d/app/controllers/requests_controller.rb#L36) on submission of one of the [live Support forms](https://support.publishing.service.gov.uk/) (one of the forms in the "User access", "Content request", "Technical support", "Campaigns", "Feedback for tools in Beta", "Topic taxonomy requests" or "Other requests" groups). The resulting ticket is tagged as per the `tag` method in whichever `Zendesk::ZendeskTicket` subclass it is, e.g. [`content_amend` tag for the `ContentChangeRequestTicket`](https://github.com/alphagov/support/blob/bcd9984967f70e5338b21455debb3ecd72684de3/app/models/zendesk/ticket/content_change_request_ticket.rb#L10-L12) as well as the default `govt_form` tag [present on the parent class](https://github.com/alphagov/support/blob/37fa7b05ec92511361b2a5e85f2c9f1a1bb3fb51/app/models/zendesk/zendesk_ticket.rb#L50-L52). diff --git a/spec/features/analytics_requests_spec.rb b/spec/features/analytics_requests_spec.rb index c6669ecf8..bd31d2c8b 100644 --- a/spec/features/analytics_requests_spec.rb +++ b/spec/features/analytics_requests_spec.rb @@ -8,7 +8,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Request for analytics", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form analytics], diff --git a/spec/features/campaign_requests_spec.rb b/spec/features/campaign_requests_spec.rb index 1ac7136fe..8091e4ebb 100644 --- a/spec/features/campaign_requests_spec.rb +++ b/spec/features/campaign_requests_spec.rb @@ -13,7 +13,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Campaign", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form campaign], diff --git a/spec/features/change_existing_user_requests_spec.rb b/spec/features/change_existing_user_requests_spec.rb index 036339db9..f25caee23 100644 --- a/spec/features/change_existing_user_requests_spec.rb +++ b/spec/features/change_existing_user_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "changing user permissions" do - ticket_request = expect_zendesk_to_receive_ticket( + ticket_request = expect_support_api_to_receive_raise_ticket( "subject" => "Change an existing user's account", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form change_user], diff --git a/spec/features/changes_to_publishing_apps_requests_spec.rb b/spec/features/changes_to_publishing_apps_requests_spec.rb index 7dbc64288..ddcbb3a5d 100644 --- a/spec/features/changes_to_publishing_apps_requests_spec.rb +++ b/spec/features/changes_to_publishing_apps_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Abc", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form new_feature_request], diff --git a/spec/features/content_advice_requests_spec.rb b/spec/features/content_advice_requests_spec.rb index 503245bad..b97a30176 100644 --- a/spec/features/content_advice_requests_spec.rb +++ b/spec/features/content_advice_requests_spec.rb @@ -13,7 +13,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Needed by 12 Jan: Which format - Advice on content", "tags" => %w[govt_form dept_content_advice], "description" => @@ -46,7 +46,7 @@ end scenario "successful request with other reaason" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Tricky query - Advice on content", "tags" => %w[govt_form dept_content_advice], "description" => diff --git a/spec/features/content_change_requests_spec.rb b/spec/features/content_change_requests_spec.rb index 3d0cbbd8a..784728373 100644 --- a/spec/features/content_change_requests_spec.rb +++ b/spec/features/content_change_requests_spec.rb @@ -13,7 +13,7 @@ end scenario "successful mainstream content change request " do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Update X", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form content_amend], diff --git a/spec/features/content_data_feedback_spec.rb b/spec/features/content_data_feedback_spec.rb index 5a724ff3f..58d0c7391 100644 --- a/spec/features/content_data_feedback_spec.rb +++ b/spec/features/content_data_feedback_spec.rb @@ -10,7 +10,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Content Data feedback", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form content_data_feedback], diff --git a/spec/features/create_new_user_requests_spec.rb b/spec/features/create_new_user_requests_spec.rb index b64602970..c6d00f2bc 100644 --- a/spec/features/create_new_user_requests_spec.rb +++ b/spec/features/create_new_user_requests_spec.rb @@ -22,7 +22,7 @@ }, ]) - ticket_request = expect_zendesk_to_receive_ticket( + ticket_request = expect_support_api_to_receive_raise_ticket( "subject" => "Create a new user account", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form create_new_user], diff --git a/spec/features/general_requests_spec.rb b/spec/features/general_requests_spec.rb index ee759873a..6dc58539c 100644 --- a/spec/features/general_requests_spec.rb +++ b/spec/features/general_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Downtime - Govt Agency General Issue", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form govt_agency_general], diff --git a/spec/features/live_campaign_requests_spec.rb b/spec/features/live_campaign_requests_spec.rb index 158aab49c..ca49e9ff6 100644 --- a/spec/features/live_campaign_requests_spec.rb +++ b/spec/features/live_campaign_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Live Campaign", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form live_campaign], diff --git a/spec/features/remove_user_requests_spec.rb b/spec/features/remove_user_requests_spec.rb index f07ba9ffc..f8d435714 100644 --- a/spec/features/remove_user_requests_spec.rb +++ b/spec/features/remove_user_requests_spec.rb @@ -13,7 +13,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Remove user", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form remove_user], diff --git a/spec/features/report_an_issue_with_govuk_search_results_spec.rb b/spec/features/report_an_issue_with_govuk_search_results_spec.rb index 404d00a2d..746cc0d94 100644 --- a/spec/features/report_an_issue_with_govuk_search_results_spec.rb +++ b/spec/features/report_an_issue_with_govuk_search_results_spec.rb @@ -8,7 +8,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Report an issue with GOV.UK search results", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@email.co.uk"), "tags" => %w[govt_form site_search], diff --git a/spec/features/taxonomy_change_topic_requests_spec.rb b/spec/features/taxonomy_change_topic_requests_spec.rb index ad2a8bca9..491540d58 100644 --- a/spec/features/taxonomy_change_topic_requests_spec.rb +++ b/spec/features/taxonomy_change_topic_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Taxonomy change topic request - \"Abc\"", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form taxonomy_change_topic_request], diff --git a/spec/features/taxonomy_new_topic_requests_spec.rb b/spec/features/taxonomy_new_topic_requests_spec.rb index e3236f6bf..967ed3b14 100644 --- a/spec/features/taxonomy_new_topic_requests_spec.rb +++ b/spec/features/taxonomy_new_topic_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "successful request" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Taxonomy new topic request - \"Abc\"", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form taxonomy_new_topic_request], diff --git a/spec/features/technical_fault_reports_spec.rb b/spec/features/technical_fault_reports_spec.rb index 5ec48e79d..8e034685a 100644 --- a/spec/features/technical_fault_reports_spec.rb +++ b/spec/features/technical_fault_reports_spec.rb @@ -12,7 +12,7 @@ end scenario "successful report" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Technical fault with GOV.UK: content", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form technical_fault fault_with_gov_uk_content], diff --git a/spec/features/unpublish_content_requests_spec.rb b/spec/features/unpublish_content_requests_spec.rb index 04ef01993..2a4d419e6 100644 --- a/spec/features/unpublish_content_requests_spec.rb +++ b/spec/features/unpublish_content_requests_spec.rb @@ -12,7 +12,7 @@ end scenario "request to unpublish in case of publishing error" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Published in error - Unpublish content request", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form unpublish_content published_in_error], @@ -37,7 +37,7 @@ end scenario "request to unpublish when page is a dupe" do - request = expect_zendesk_to_receive_ticket( + request = expect_support_api_to_receive_raise_ticket( "subject" => "Duplicate of another page - Unpublish content request", "requester" => hash_including("name" => "John Smith", "email" => "john.smith@agency.gov.uk"), "tags" => %w[govt_form unpublish_content duplicate_publication], diff --git a/spec/support/gds_zendesk_helpers.rb b/spec/support/gds_zendesk_helpers.rb index 5b57b4a8c..04da2203f 100644 --- a/spec/support/gds_zendesk_helpers.rb +++ b/spec/support/gds_zendesk_helpers.rb @@ -1,7 +1,5 @@ -require "gds_zendesk/test_helpers" - -module ZendeskRequestMockingExtensions - def expect_zendesk_to_receive_ticket(opts) +module SupportApiMockingExtensions + def expect_support_api_to_receive_raise_ticket(opts) stub_support_api_valid_raise_support_ticket(hash_including(opts)) end @@ -21,10 +19,5 @@ def stub_custom_fields_data(opts = []) end RSpec.configure do |c| - c.include GDSZendesk::TestHelpers - c.include ZendeskRequestMockingExtensions - - c.before(:context) do - self.valid_zendesk_credentials = ZENDESK_CREDENTIALS - end + c.include SupportApiMockingExtensions end diff --git a/spec/support/json_helpers.rb b/spec/support/json_helpers.rb index 6db3f7960..e4d8fc756 100644 --- a/spec/support/json_helpers.rb +++ b/spec/support/json_helpers.rb @@ -1,5 +1,3 @@ -require "gds_zendesk/test_helpers" - # rubocop:disable Rails/HttpPositionalArguments module JsonHelpers def json_response