-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add worker spec for 302 response from Zendesk
In 2015 there was a case where 302 responses from the Zendesk API were apparently not being raised to the error notifcation service. This commit adds a spec to cover this case. Also: - Rework the existing specs to use 'context' blocks as I feel it's a little clearer.
- Loading branch information
1 parent
a557ead
commit e54297c
Showing
1 changed file
with
43 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,61 @@ | ||
require 'rails_helper' | ||
|
||
describe ZendeskTicketWorker do | ||
it "raises a ticket successfully" do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
context 'normal ticket creation' do | ||
before do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
end | ||
|
||
stub = stub_zendesk_ticket_creation("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
it "creates a ticket successfully" do | ||
stub = stub_zendesk_ticket_creation("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
|
||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
|
||
expect(stub).to have_been_made | ||
expect(stub).to have_been_made | ||
end | ||
end | ||
|
||
it "doesn't raise a ticket if the user is suspended" do | ||
zendesk_has_user(email: "a@b.com", suspended: true) | ||
|
||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
context 'with a suspended requesting user' do | ||
before do | ||
zendesk_has_user(email: "a@b.com", suspended: true) | ||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
end | ||
|
||
expect(a_request(:post, %r{.*/tickets/.*})).to_not have_been_made | ||
it 'does not create a ticket' do | ||
expect(a_request(:post, %r{.*/tickets/.*})).to_not have_been_made | ||
end | ||
end | ||
|
||
it "discards the ticket if it receives a 409 response" do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
context 'with a 409 response' do | ||
before do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
zendesk_returns_conflict | ||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
end | ||
|
||
zendesk_returns_conflict | ||
it "discards the ticket" do | ||
expect(a_request(:post, %r{.*/tickets/.*})).to_not have_been_made | ||
end | ||
end | ||
|
||
ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" }) | ||
context 'with a 503 response' do | ||
before do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
zendesk_is_unavailable | ||
end | ||
|
||
expect(a_request(:post, %r{.*/tickets/.*})).to_not have_been_made | ||
it "raises the error" do | ||
expect{ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" })}.to raise_error(ZendeskAPI::Error::NetworkError) | ||
end | ||
end | ||
|
||
it "raises the ticket if it receives a 503 response" do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
context 'with a 302 response' do | ||
before do | ||
zendesk_has_user(email: "a@b.com", suspended: false) | ||
zendesk_returns_redirect | ||
end | ||
|
||
zendesk_is_unavailable | ||
|
||
expect{ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" })}.to raise_error(ZendeskAPI::Error::NetworkError) | ||
it "raises the error" do | ||
expect{ZendeskTicketWorker.new.perform("some" => "options", "requester" => { "email" => "a@b.com" })}.to raise_error(ZendeskAPI::Error::NetworkError) | ||
end | ||
end | ||
|
||
end |