gds_zendesk 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +3 -0
- data/gds_zendesk.gemspec +3 -4
- data/jenkins_branches.sh +20 -0
- data/lib/gds_zendesk/test_helpers.rb +12 -8
- data/lib/gds_zendesk/version.rb +1 -1
- data/spec/gds_zendesk/client_spec.rb +6 -6
- data/spec/gds_zendesk/dummy_client_spec.rb +11 -11
- data/spec/gds_zendesk/users_spec.rb +7 -7
- metadata +12 -26
data/CHANGELOG.md
ADDED
data/gds_zendesk.gemspec
CHANGED
@@ -18,11 +18,10 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
20
|
gem.add_dependency 'null_logger', '0.0.1'
|
21
|
-
gem.add_dependency 'zendesk_api', '1.
|
21
|
+
gem.add_dependency 'zendesk_api', '1.5.1'
|
22
22
|
|
23
23
|
gem.add_development_dependency 'rake', '10.0.3'
|
24
|
-
gem.add_development_dependency 'rspec', '
|
24
|
+
gem.add_development_dependency 'rspec', '3.1.0'
|
25
25
|
gem.add_development_dependency 'gem_publisher', '1.2.0'
|
26
|
-
gem.add_development_dependency
|
27
|
-
gem.add_development_dependency "webmock", '1.9.0'
|
26
|
+
gem.add_development_dependency "webmock", '1.18.0'
|
28
27
|
end
|
data/jenkins_branches.sh
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
VENV_PATH="${HOME}/venv/${JOB_NAME}"
|
5
|
+
|
6
|
+
[ -x ${VENV_PATH}/bin/pip ] || virtualenv ${VENV_PATH}
|
7
|
+
. ${VENV_PATH}/bin/activate
|
8
|
+
|
9
|
+
pip install -q ghtools
|
10
|
+
|
11
|
+
REPO="alphagov/gds_zendesk"
|
12
|
+
gh-status "$REPO" "$GIT_COMMIT" pending -d "\"Build #${BUILD_NUMBER} is running on Jenkins\"" -u "$BUILD_URL" >/dev/null
|
13
|
+
|
14
|
+
if ./jenkins.sh; then
|
15
|
+
gh-status "$REPO" "$GIT_COMMIT" success -d "\"Build #${BUILD_NUMBER} succeeded on Jenkins\"" -u "$BUILD_URL" >/dev/null
|
16
|
+
exit 0
|
17
|
+
else
|
18
|
+
gh-status "$REPO" "$GIT_COMMIT" failure -d "\"Build #${BUILD_NUMBER} failed on Jenkins\"" -u "$BUILD_URL" >/dev/null
|
19
|
+
exit 1
|
20
|
+
fi
|
@@ -4,39 +4,43 @@ module GDSZendesk
|
|
4
4
|
module TestHelpers
|
5
5
|
def zendesk_has_no_user_with_email(email)
|
6
6
|
stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{email}").
|
7
|
-
to_return(body: {users: [], previous_page: nil, next_page: nil, count: 0}.to_json,
|
7
|
+
to_return(body: {users: [], previous_page: nil, next_page: nil, count: 0}.to_json,
|
8
8
|
headers: {'Content-Type' => 'application/json'})
|
9
9
|
end
|
10
10
|
|
11
11
|
def zendesk_has_user(user_details)
|
12
12
|
stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{user_details[:email]}").
|
13
|
-
to_return(body: {users: [user_details], previous_page: nil, next_page: nil, count: 1}.to_json,
|
13
|
+
to_return(body: {users: [user_details], previous_page: nil, next_page: nil, count: 1}.to_json,
|
14
14
|
headers: {'Content-Type' => 'application/json'})
|
15
15
|
end
|
16
16
|
|
17
17
|
def stub_zendesk_user_creation(user_properties = nil)
|
18
18
|
stub = stub_http_request(:post, "#{zendesk_endpoint}/users")
|
19
19
|
stub.with(body: {user: user_properties}) unless user_properties.nil?
|
20
|
-
stub.to_return(status: 201, body: { user: { id: 12345, name: "abc" }}
|
20
|
+
stub.to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
|
21
|
+
headers: {'Content-Type' => 'application/json'})
|
21
22
|
end
|
22
23
|
|
23
24
|
def stub_zendesk_ticket_creation(ticket_properties = nil)
|
24
25
|
stub = stub_http_request(:post, "#{zendesk_endpoint}/tickets")
|
25
26
|
stub.with(body: {ticket: ticket_properties}) unless ticket_properties.nil?
|
26
|
-
stub.to_return(status: 201, body: { ticket: { id: 12345 }}
|
27
|
+
stub.to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
|
28
|
+
headers: {'Content-Type' => 'application/json'})
|
27
29
|
end
|
28
30
|
|
29
31
|
def stub_zendesk_ticket_creation_with_body(body)
|
30
32
|
stub_http_request(:post, "#{zendesk_endpoint}/tickets").
|
31
33
|
with(body: body).
|
32
|
-
to_return(status: 201, body: { ticket: { id: 12345 }}
|
34
|
+
to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
|
35
|
+
headers: {'Content-Type' => 'application/json'})
|
33
36
|
end
|
34
37
|
|
35
38
|
def stub_zendesk_user_update(user_id, user_properties)
|
36
39
|
stub_http_request(:put, "#{zendesk_endpoint}/users/#{user_id}").
|
37
40
|
with(body: {user: user_properties}).
|
38
|
-
to_return(status: 201, body: { user: { id: 12345, name: "abc" }}
|
39
|
-
|
41
|
+
to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
|
42
|
+
headers: {'Content-Type' => 'application/json'})
|
43
|
+
end
|
40
44
|
|
41
45
|
def zendesk_is_unavailable
|
42
46
|
stub_request(:any, /#{zendesk_endpoint}\/.*/).to_return(status: 503)
|
@@ -64,4 +68,4 @@ module GDSZendesk
|
|
64
68
|
body: { ticket: hash_including(requester: hash_including(requester_options)) }, times: 1
|
65
69
|
end
|
66
70
|
end
|
67
|
-
end
|
71
|
+
end
|
data/lib/gds_zendesk/version.rb
CHANGED
@@ -16,23 +16,23 @@ module GDSZendesk
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should raise an error if no username is provided" do
|
19
|
-
|
19
|
+
expect { Client.new(password: "abc") }.to raise_error(ArgumentError,
|
20
20
|
/username not provided/)
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should raise an error if no password is provided" do
|
24
|
-
|
24
|
+
expect { Client.new(username: "abc") }.to raise_error(ArgumentError,
|
25
25
|
/password not provided/)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should use a null logger if no logger has been provided" do
|
29
|
-
client.config_options[:logger].
|
29
|
+
expect(client.config_options[:logger]).to be_an_instance_of(NullLogger::Logger)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should use the passed logger if one has been provided" do
|
33
|
-
custom_logger =
|
33
|
+
custom_logger = double("logger")
|
34
34
|
|
35
|
-
client(logger: custom_logger).config_options[:logger].
|
35
|
+
expect(client(logger: custom_logger).config_options[:logger]).to eq(custom_logger)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should raise tickets in Zendesk" do
|
@@ -41,7 +41,7 @@ module GDSZendesk
|
|
41
41
|
|
42
42
|
client.ticket.create(some: "data")
|
43
43
|
|
44
|
-
post_stub.
|
44
|
+
expect(post_stub).to have_been_requested
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -6,25 +6,25 @@ module GDSZendesk
|
|
6
6
|
let(:ticket_options) { { opt1: "val1" } }
|
7
7
|
|
8
8
|
it "should log the ticket details" do
|
9
|
-
logger =
|
10
|
-
logger.
|
9
|
+
logger = double("logger")
|
10
|
+
expect(logger).to receive(:info).with("Zendesk ticket created: #{ticket_options.inspect}")
|
11
11
|
|
12
12
|
client = DummyClient.new(logger: logger)
|
13
13
|
client.ticket.create!(ticket_options)
|
14
14
|
end
|
15
15
|
|
16
16
|
it "can simulate failures, triggered by a specific description or comment" do
|
17
|
-
logger =
|
17
|
+
logger = double("logger")
|
18
18
|
client = DummyClient.new(logger: logger)
|
19
|
-
logger.
|
19
|
+
expect(logger).to receive(:info).with(/Simulating Zendesk ticket creation failure/).twice
|
20
20
|
|
21
|
-
|
21
|
+
expect {
|
22
22
|
client.ticket.create!(description: "break_zendesk")
|
23
|
-
}.
|
24
|
-
|
25
|
-
|
23
|
+
}.to raise_error(ZendeskAPI::Error::RecordInvalid)
|
24
|
+
|
25
|
+
expect {
|
26
26
|
client.ticket.create!(comment: { value: "break_zendesk" })
|
27
|
-
}.
|
27
|
+
}.to raise_error(ZendeskAPI::Error::RecordInvalid)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -32,8 +32,8 @@ module GDSZendesk
|
|
32
32
|
let(:created_user_options) { { email: "a@b.com" } }
|
33
33
|
|
34
34
|
it "should log the user details" do
|
35
|
-
logger =
|
36
|
-
logger.
|
35
|
+
logger = double("logger")
|
36
|
+
expect(logger).to receive(:info).with("Zendesk user created: #{created_user_options.inspect}")
|
37
37
|
|
38
38
|
client = DummyClient.new(logger: logger)
|
39
39
|
client.users.create!(created_user_options)
|
@@ -18,15 +18,15 @@ module GDSZendesk
|
|
18
18
|
context "creating/updating a user" do
|
19
19
|
it "should update the phone and job title if those are set" do
|
20
20
|
stub_post = stub_zendesk_user_update(123, phone: "12345", details: "Job title: Developer")
|
21
|
-
users.create_or_update_user(
|
21
|
+
users.create_or_update_user(double("requested user", email: "test@test.com", phone: "12345", job: "Developer"))
|
22
22
|
|
23
|
-
stub_post.
|
23
|
+
expect(stub_post).to have_been_requested
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should know whether the user is suspended or not" do
|
28
28
|
zendesk_has_user(email: "test@test.com", id: 123, suspended: "true")
|
29
|
-
users.suspended?("test@test.com").
|
29
|
+
expect(users.suspended?("test@test.com")).to be_truthy
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -36,7 +36,7 @@ module GDSZendesk
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should not be suspended" do
|
39
|
-
users.
|
39
|
+
expect(users).to_not be_suspended("test@test.com")
|
40
40
|
end
|
41
41
|
|
42
42
|
context "creating/updating" do
|
@@ -48,13 +48,13 @@ module GDSZendesk
|
|
48
48
|
phone: "12345",
|
49
49
|
details: "Job title: Developer"
|
50
50
|
)
|
51
|
-
user_being_requested =
|
51
|
+
user_being_requested = double("requested user",
|
52
52
|
name: "Abc", email: "test@test.com", phone: "12345", job: "Developer")
|
53
53
|
|
54
54
|
users.create_or_update_user(user_being_requested)
|
55
|
-
stub_post.
|
55
|
+
expect(stub_post).to have_been_requested
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
|
-
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds_zendesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: null_logger
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - '='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.
|
37
|
+
version: 1.5.1
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - '='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.5.1
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: rake
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 3.1.0
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - '='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 3.1.0
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: gem_publisher
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,22 +91,6 @@ dependencies:
|
|
91
91
|
- - '='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 1.2.0
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: faraday_middleware
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - '='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: 0.8.8
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - '='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.8.8
|
110
94
|
- !ruby/object:Gem::Dependency
|
111
95
|
name: webmock
|
112
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +98,7 @@ dependencies:
|
|
114
98
|
requirements:
|
115
99
|
- - '='
|
116
100
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
101
|
+
version: 1.18.0
|
118
102
|
type: :development
|
119
103
|
prerelease: false
|
120
104
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +106,7 @@ dependencies:
|
|
122
106
|
requirements:
|
123
107
|
- - '='
|
124
108
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.
|
109
|
+
version: 1.18.0
|
126
110
|
description: Client and models for communicating with Zendesk
|
127
111
|
email:
|
128
112
|
- benilov@gmail.com
|
@@ -131,12 +115,14 @@ extensions: []
|
|
131
115
|
extra_rdoc_files: []
|
132
116
|
files:
|
133
117
|
- .gitignore
|
118
|
+
- CHANGELOG.md
|
134
119
|
- Gemfile
|
135
120
|
- LICENCE.txt
|
136
121
|
- README.md
|
137
122
|
- Rakefile
|
138
123
|
- gds_zendesk.gemspec
|
139
124
|
- jenkins.sh
|
125
|
+
- jenkins_branches.sh
|
140
126
|
- lib/gds_zendesk.rb
|
141
127
|
- lib/gds_zendesk/client.rb
|
142
128
|
- lib/gds_zendesk/dummy_client.rb
|
@@ -163,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
149
|
version: '0'
|
164
150
|
segments:
|
165
151
|
- 0
|
166
|
-
hash:
|
152
|
+
hash: -991943749347888154
|
167
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
154
|
none: false
|
169
155
|
requirements:
|
@@ -172,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
158
|
version: '0'
|
173
159
|
segments:
|
174
160
|
- 0
|
175
|
-
hash:
|
161
|
+
hash: -991943749347888154
|
176
162
|
requirements: []
|
177
163
|
rubyforge_project:
|
178
164
|
rubygems_version: 1.8.23
|