diff --git a/lib/gds_api/support_api.rb b/lib/gds_api/support_api.rb index 2b879076..95ab0f6f 100644 --- a/lib/gds_api/support_api.rb +++ b/lib/gds_api/support_api.rb @@ -31,9 +31,8 @@ def create_global_export_request(request_details) # SupportApi.raise_support_ticket( # subject: "Feedback for app", # tags: ["app_name"] - # body: { - # "User agent": "Safari", - # "Details": "Ticket details go here.", + # user_agent: "Safari", + # description: "Ticket details go here.", # } # ) def raise_support_ticket(params) diff --git a/test/pacts/support_api_pact_test.rb b/test/pacts/support_api_pact_test.rb new file mode 100644 index 00000000..1983d295 --- /dev/null +++ b/test/pacts/support_api_pact_test.rb @@ -0,0 +1,69 @@ +require "test_helper" +require "gds_api/support_api" + +describe "GdsApi::SupportApi pact tests" do + include PactTest + + describe "#raise_support_ticket" do + let(:api_client) { GdsApi::SupportApi.new(support_api_host) } + + it "responds with a 201 Success if the parameters provided are valid" do + support_api + .given("the parameters are valid") + .upon_receiving("a raise ticket request") + .with( + method: :post, + path: "/support-tickets", + headers: GdsApi::JsonClient.default_request_with_json_body_headers, + body: { + subject: "Feedback for app", + tags: %w[app_name], + user_agent: "Safari", + description: "There is something wrong with this page.", + }, + ) + .will_respond_with( + status: 201, + body: { + status: "success", + }, + headers: { + "Content-Type" => "application/json; charset=utf-8", + }, + ) + + api_client.raise_support_ticket( + subject: "Feedback for app", + tags: %w[app_name], + user_agent: "Safari", + description: "There is something wrong with this page.", + ) + end + + it "responds with 422 Error when required parameters are not provided" do + support_api + .given("the required parameters are not provided") + .upon_receiving("a raise ticket request") + .with( + method: :post, + path: "/support-tickets", + headers: GdsApi::JsonClient.default_request_with_json_body_headers, + body: { + subject: "Ticket without body", + }, + ) + .will_respond_with( + status: 422, + body: { + status: "error", + }, + ) + + begin + api_client.raise_support_ticket(subject: "Ticket without body") + rescue GdsApi::HTTPUnprocessableEntity + # expected outcome + end + end + end +end diff --git a/test/support_api_test.rb b/test/support_api_test.rb index 876858ab..6452b8ca 100644 --- a/test/support_api_test.rb +++ b/test/support_api_test.rb @@ -243,7 +243,12 @@ describe "POST /support-tickets" do it "makes a valid POST request to the support API" do - params = { subject: "Feedback for app", tags: "app_name", details: "Ticket details go here." } + params = { + subject: "Feedback for app", + tags: "app_name", + user_agent: "Safari", + description: "There is something wrong with this page.", + } stub_post = stub_support_api_valid_raise_support_ticket(params) @api.raise_support_ticket(params)