gds_zendesk 3.5.0 → 3.7.0
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.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +3 -0
- data/.github/workflows/autorelease.yml +10 -0
- data/.github/workflows/ci.yml +11 -2
- data/.gitignore +3 -0
- data/.govuk_dependabot_merger.yml +4 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +8 -0
- data/gds_zendesk.gemspec +3 -2
- data/lib/gds_zendesk/test_helpers.rb +1 -1
- data/lib/gds_zendesk/users.rb +9 -8
- data/lib/gds_zendesk/version.rb +1 -1
- data/spec/gds_zendesk/dummy_client_spec.rb +3 -3
- data/spec/gds_zendesk/users_spec.rb +48 -9
- data/spec/spec_helper.rb +2 -0
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3b8b924b6a29f163773d9819d104880ff877ae25e331b2e3b027fda6e96cc26
|
4
|
+
data.tar.gz: 80a3824095e067b5abe96db1be6b543bb8ce519c836774a8142a2f715dad10f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a12ce9526eed49142cb3ada8b86304e2bb3e3c1223cb94d41b4acff728cfd5e447071e77cc78b3d2a1b14feada7c1c0800bf1953d7d5d4d6d52baa872ca7d88
|
7
|
+
data.tar.gz: fe80758c0da541e7e0a17cf0f6df4629a1d73f75b728787d964b509ff0249246bc8175c35792455cc3829750b0a89bd3f55aab64e0ff1b9a336b8f62ccc31ed8
|
@@ -0,0 +1,3 @@
|
|
1
|
+
⚠️ Make sure you [release a new version of this gem](https://github.com/alphagov/gds_zendesk/pull/67/files) after merging your changes. ⚠️
|
2
|
+
|
3
|
+
Refer to the [existing docs](https://docs.publishing.service.gov.uk/manual/publishing-a-ruby-gem.html#ruby-version-compatibility) if you are making changes to the supported Ruby versions.
|
@@ -0,0 +1,10 @@
|
|
1
|
+
on:
|
2
|
+
workflow_dispatch: {}
|
3
|
+
schedule:
|
4
|
+
- cron: '30 10 * * 1-5' # 10:30am UTC, Mon-Fri.
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
autorelease:
|
8
|
+
uses: alphagov/govuk-infrastructure/.github/workflows/autorelease-rubygem.yml@main
|
9
|
+
secrets:
|
10
|
+
GH_TOKEN: ${{ secrets.GOVUK_CI_GITHUB_API_TOKEN }}
|
data/.github/workflows/ci.yml
CHANGED
@@ -1,12 +1,21 @@
|
|
1
1
|
on: [push, pull_request]
|
2
2
|
|
3
3
|
jobs:
|
4
|
+
codeql-sast:
|
5
|
+
name: CodeQL SAST scan
|
6
|
+
uses: alphagov/govuk-infrastructure/.github/workflows/codeql-analysis.yml@main
|
7
|
+
permissions:
|
8
|
+
security-events: write
|
9
|
+
|
10
|
+
dependency-review:
|
11
|
+
name: Dependency Review scan
|
12
|
+
uses: alphagov/govuk-infrastructure/.github/workflows/dependency-review.yml@main
|
13
|
+
|
4
14
|
test_matrix:
|
5
15
|
strategy:
|
6
16
|
fail-fast: false
|
7
17
|
matrix:
|
8
|
-
|
9
|
-
ruby: ['3.0', 3.1, 3.2]
|
18
|
+
ruby: [3.1, 3.2]
|
10
19
|
runs-on: ubuntu-latest
|
11
20
|
steps:
|
12
21
|
- uses: actions/checkout@v4
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.1.5
|
data/CHANGELOG.md
CHANGED
data/gds_zendesk.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.summary = "Client and models for communicating with Zendesk"
|
12
12
|
gem.homepage = "https://github.com/alphagov/gds_zendesk"
|
13
13
|
|
14
|
-
gem.required_ruby_version = ">= 3.
|
14
|
+
gem.required_ruby_version = ">= 3.1"
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
|
|
23
23
|
|
24
24
|
gem.add_development_dependency "rake"
|
25
25
|
gem.add_development_dependency "rspec", "~> 3"
|
26
|
-
gem.add_development_dependency "rubocop-govuk", "4.
|
26
|
+
gem.add_development_dependency "rubocop-govuk", "4.17.1"
|
27
|
+
gem.add_development_dependency "simplecov"
|
27
28
|
gem.add_development_dependency "webmock", ">= 2"
|
28
29
|
end
|
@@ -34,7 +34,7 @@ module GDSZendesk
|
|
34
34
|
|
35
35
|
def stub_zendesk_ticket_creation_with_body(body)
|
36
36
|
stub_request(:post, "#{zendesk_endpoint}/tickets")
|
37
|
-
.with(body:
|
37
|
+
.with(body:)
|
38
38
|
.with(basic_auth: basic_auth_credentials)
|
39
39
|
.to_return(status: 201, body: { ticket: { id: 12_345 } }.to_json,
|
40
40
|
headers: { "Content-Type" => "application/json" })
|
data/lib/gds_zendesk/users.rb
CHANGED
@@ -31,18 +31,19 @@ module GDSZendesk
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def create(requested_user)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
verified: true)
|
34
|
+
attributes = { email: requested_user.email, name: requested_user.name, verified: true }
|
35
|
+
attributes[:details] = "Job title: #{requested_user.job}" if requested_user.respond_to?(:job)
|
36
|
+
attributes[:phone] = requested_user.phone if requested_user.respond_to?(:phone)
|
37
|
+
@client.users.create!(attributes)
|
39
38
|
end
|
40
39
|
|
41
40
|
def update(existing_user_in_zendesk, requested_user)
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
attributes = {}
|
42
|
+
attributes[:details] = "Job title: #{requested_user.job}" if requested_user.respond_to?(:job)
|
43
|
+
if requested_user.respond_to?(:phone) && !requested_user.phone.nil? && !requested_user.phone.empty?
|
44
|
+
attributes[:phone] = requested_user.phone
|
45
45
|
end
|
46
|
+
existing_user_in_zendesk.update(attributes)
|
46
47
|
existing_user_in_zendesk.save
|
47
48
|
existing_user_in_zendesk
|
48
49
|
end
|
data/lib/gds_zendesk/version.rb
CHANGED
@@ -9,13 +9,13 @@ module GDSZendesk
|
|
9
9
|
logger = instance_double("Logger")
|
10
10
|
expect(logger).to receive(:info).with("Zendesk ticket created: #{ticket_options.inspect}")
|
11
11
|
|
12
|
-
client = described_class.new(logger:
|
12
|
+
client = described_class.new(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
17
|
logger = instance_double("Logger")
|
18
|
-
client = described_class.new(logger:
|
18
|
+
client = described_class.new(logger:)
|
19
19
|
expect(logger).to receive(:info).with(/Simulating Zendesk ticket creation failure/).twice
|
20
20
|
|
21
21
|
expect {
|
@@ -35,7 +35,7 @@ module GDSZendesk
|
|
35
35
|
logger = instance_double("Logger")
|
36
36
|
expect(logger).to receive(:info).with("Zendesk user created or updated: #{options.inspect}")
|
37
37
|
|
38
|
-
client = described_class.new(logger:
|
38
|
+
client = described_class.new(logger:)
|
39
39
|
client.users.create_or_update_user(options)
|
40
40
|
end
|
41
41
|
end
|
@@ -23,6 +23,20 @@ module GDSZendesk
|
|
23
23
|
expect(stub_post).to have_been_requested
|
24
24
|
end
|
25
25
|
|
26
|
+
it "can update a user which doesn't respond to #job" do
|
27
|
+
stub_post = stub_zendesk_user_update(123, phone: "12345")
|
28
|
+
users.create_or_update_user(double("requested user", email: "test@test.com", phone: "12345"))
|
29
|
+
|
30
|
+
expect(stub_post).to have_been_requested
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can update a user which doesn't respond to #phone" do
|
34
|
+
stub_post = stub_zendesk_user_update(123, details: "Job title: Developer")
|
35
|
+
users.create_or_update_user(double("requested user", email: "test@test.com", job: "Developer"))
|
36
|
+
|
37
|
+
expect(stub_post).to have_been_requested
|
38
|
+
end
|
39
|
+
|
26
40
|
it "knows whether the user is suspended or not" do
|
27
41
|
zendesk_has_user(email: "test@test.com", id: 123, suspended: "true")
|
28
42
|
expect(users).to be_suspended("test@test.com")
|
@@ -30,6 +44,16 @@ module GDSZendesk
|
|
30
44
|
end
|
31
45
|
|
32
46
|
context "when a user doesn't exist" do
|
47
|
+
let(:expected_attributes) do
|
48
|
+
{
|
49
|
+
verified: true,
|
50
|
+
name: "Abc",
|
51
|
+
email: "test@test.com",
|
52
|
+
phone: "12345",
|
53
|
+
details: "Job title: Developer",
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
33
57
|
before do
|
34
58
|
zendesk_has_no_user_with_email("test@test.com")
|
35
59
|
end
|
@@ -39,15 +63,30 @@ module GDSZendesk
|
|
39
63
|
end
|
40
64
|
|
41
65
|
it "can create that user" do
|
42
|
-
stub_post = stub_zendesk_user_creation(
|
43
|
-
|
44
|
-
name: "Abc",
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
)
|
49
|
-
|
50
|
-
|
66
|
+
stub_post = stub_zendesk_user_creation(expected_attributes)
|
67
|
+
user_being_requested = double("requested user", {
|
68
|
+
name: "Abc", email: "test@test.com", phone: "12345", job: "Developer"
|
69
|
+
})
|
70
|
+
|
71
|
+
users.create_or_update_user(user_being_requested)
|
72
|
+
expect(stub_post).to have_been_requested
|
73
|
+
end
|
74
|
+
|
75
|
+
it "can create that user which doesn't respond to #job" do
|
76
|
+
stub_post = stub_zendesk_user_creation(expected_attributes.except(:details))
|
77
|
+
user_being_requested = double("requested user", {
|
78
|
+
name: "Abc", email: "test@test.com", phone: "12345"
|
79
|
+
})
|
80
|
+
|
81
|
+
users.create_or_update_user(user_being_requested)
|
82
|
+
expect(stub_post).to have_been_requested
|
83
|
+
end
|
84
|
+
|
85
|
+
it "can create that user which doesn't respond to #phone" do
|
86
|
+
stub_post = stub_zendesk_user_creation(expected_attributes.except(:phone))
|
87
|
+
user_being_requested = double("requested user", {
|
88
|
+
name: "Abc", email: "test@test.com", job: "Developer"
|
89
|
+
})
|
51
90
|
|
52
91
|
users.create_or_update_user(user_being_requested)
|
53
92
|
expect(stub_post).to have_been_requested
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds_zendesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: null_logger
|
@@ -78,14 +78,28 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - '='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 4.
|
81
|
+
version: 4.17.1
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - '='
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 4.
|
88
|
+
version: 4.17.1
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: simplecov
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
104
|
name: webmock
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,8 +122,11 @@ extensions: []
|
|
108
122
|
extra_rdoc_files: []
|
109
123
|
files:
|
110
124
|
- ".github/dependabot.yml"
|
125
|
+
- ".github/pull_request_template.md"
|
126
|
+
- ".github/workflows/autorelease.yml"
|
111
127
|
- ".github/workflows/ci.yml"
|
112
128
|
- ".gitignore"
|
129
|
+
- ".govuk_dependabot_merger.yml"
|
113
130
|
- ".rubocop.yml"
|
114
131
|
- ".ruby-version"
|
115
132
|
- CHANGELOG.md
|
@@ -140,14 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
157
|
requirements:
|
141
158
|
- - ">="
|
142
159
|
- !ruby/object:Gem::Version
|
143
|
-
version: '3.
|
160
|
+
version: '3.1'
|
144
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
162
|
requirements:
|
146
163
|
- - ">="
|
147
164
|
- !ruby/object:Gem::Version
|
148
165
|
version: '0'
|
149
166
|
requirements: []
|
150
|
-
rubygems_version: 3.
|
167
|
+
rubygems_version: 3.5.11
|
151
168
|
signing_key:
|
152
169
|
specification_version: 4
|
153
170
|
summary: Client and models for communicating with Zendesk
|