Module: GDSZendesk::TestHelpers

Defined in:
lib/gds_zendesk/test_helpers.rb

Instance Method Summary collapse

Instance Method Details

#assert_created_ticket_has(ticket_options) ⇒ Object



79
80
81
82
# File 'lib/gds_zendesk/test_helpers.rb', line 79

def assert_created_ticket_has(ticket_options)
  assert_requested :post, %r{/api/v2/tickets},
    body: { ticket: hash_including(ticket_options) }, times: 1
end

#assert_created_ticket_has_requester(requester_options) ⇒ Object



84
85
86
87
# File 'lib/gds_zendesk/test_helpers.rb', line 84

def assert_created_ticket_has_requester(requester_options)
  assert_requested :post, %r{/api/v2/tickets},
    body: { ticket: hash_including(requester: hash_including(requester_options)) }, times: 1
end

#basic_auth_credentialsObject



51
52
53
# File 'lib/gds_zendesk/test_helpers.rb', line 51

def basic_auth_credentials
  [valid_zendesk_credentials['username'], valid_zendesk_credentials['password']]
end

#stub_zendesk_ticket_creation(ticket_properties = nil) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/gds_zendesk/test_helpers.rb', line 27

def stub_zendesk_ticket_creation(ticket_properties = nil)
  stub = stub_request(:post, "#{zendesk_endpoint}/tickets")
  stub.with(body: {ticket: ticket_properties}) unless ticket_properties.nil?
  stub.with(basic_auth: basic_auth_credentials)
  stub.to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
                 headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_ticket_creation_with_body(body) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/gds_zendesk/test_helpers.rb', line 35

def stub_zendesk_ticket_creation_with_body(body)
  stub_request(:post, "#{zendesk_endpoint}/tickets").
    with(body: body).
    with(basic_auth: basic_auth_credentials).
    to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_user_creation(user_properties = nil) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/gds_zendesk/test_helpers.rb', line 19

def stub_zendesk_user_creation(user_properties = nil)
  stub = stub_request(:post, "#{zendesk_endpoint}/users")
  stub.with(body: {user: user_properties}) unless user_properties.nil?
  stub.with(basic_auth: basic_auth_credentials)
  stub.to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
                 headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_user_update(user_id, user_properties) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/gds_zendesk/test_helpers.rb', line 43

def stub_zendesk_user_update(user_id, user_properties)
  stub_request(:put, "#{zendesk_endpoint}/users/#{user_id}").
    with(body: {user: user_properties}).
    with(basic_auth: basic_auth_credentials).
    to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#valid_zendesk_credentialsObject



75
76
77
# File 'lib/gds_zendesk/test_helpers.rb', line 75

def valid_zendesk_credentials
  @zendesk_credentials || { "username" => "abc", "password" => "def" }
end

#valid_zendesk_credentials=(credentials) ⇒ Object



71
72
73
# File 'lib/gds_zendesk/test_helpers.rb', line 71

def valid_zendesk_credentials=(credentials)
  @zendesk_credentials = credentials
end

#zendesk_endpointObject



67
68
69
# File 'lib/gds_zendesk/test_helpers.rb', line 67

def zendesk_endpoint
  "https://govuk.zendesk.com/api/v2"
end

#zendesk_has_no_user_with_email(email) ⇒ Object



5
6
7
8
9
10
# File 'lib/gds_zendesk/test_helpers.rb', line 5

def zendesk_has_no_user_with_email(email)
  stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{email}").
    with(basic_auth: basic_auth_credentials).
    to_return(body: {users: [], previous_page: nil, next_page: nil, count: 0}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#zendesk_has_user(user_details) ⇒ Object



12
13
14
15
16
17
# File 'lib/gds_zendesk/test_helpers.rb', line 12

def zendesk_has_user(user_details)
  stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{user_details[:email]}").
    with(basic_auth: basic_auth_credentials).
    to_return(body: {users: [user_details], previous_page: nil, next_page: nil, count: 1}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#zendesk_is_unavailableObject



55
56
57
# File 'lib/gds_zendesk/test_helpers.rb', line 55

def zendesk_is_unavailable
  stub_request(:any, /#{zendesk_endpoint}\/.*/).to_return(status: 503)
end

#zendesk_returns_conflictObject



59
60
61
# File 'lib/gds_zendesk/test_helpers.rb', line 59

def zendesk_returns_conflict
  stub_request(:any, /#{zendesk_endpoint}\/.*/).to_return(status: 409)
end

#zendesk_returns_redirectObject



63
64
65
# File 'lib/gds_zendesk/test_helpers.rb', line 63

def zendesk_returns_redirect
  stub_request(:any, /#{zendesk_endpoint}\/.*/).to_return(status: 302)
end