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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 295c904eb9989c554f38965497034a3bde4198704a877c5cee12bcbdeb9ebe0f
4
- data.tar.gz: 81eed2876f42175f4340ccf711183e56f90855af12ba5082d991121442fabf12
3
+ metadata.gz: e3b8b924b6a29f163773d9819d104880ff877ae25e331b2e3b027fda6e96cc26
4
+ data.tar.gz: 80a3824095e067b5abe96db1be6b543bb8ce519c836774a8142a2f715dad10f0
5
5
  SHA512:
6
- metadata.gz: fe800f77bdccf1620913dc2f9b0b599eb6f733ab73211846ece1db93246eaa700373cc8d266f77728e3a53bcc0297b40e6c1033b1b4a8b718fe6ef0b89bebacb
7
- data.tar.gz: c6c3086942dce3330f55e61b96175359d102ef6fab1cf7b8787c328fd95d6646e0fea38c69ac75ea2ef26aa034d866d52cdb9a42ef26c44517568d9c7c5e501e
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 }}
@@ -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
- # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
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
@@ -1,2 +1,5 @@
1
1
  *.gem
2
2
  Gemfile.lock
3
+
4
+ # simplecov
5
+ coverage/
@@ -0,0 +1,4 @@
1
+ api_version: 2
2
+ defaults:
3
+ auto_merge: true
4
+ update_external_dependencies: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.6
1
+ 3.1.5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 3.7.0
2
+
3
+ * Drop support for Ruby 3.0.
4
+
5
+ # 3.6.0
6
+
7
+ * Don't require requested user object to respond to `#job` or `#phone` in calls to `Users#create_or_update_user`
8
+
1
9
  # 3.5.0
2
10
 
3
11
  * Add support for `zendesk_api` v3.x
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.0"
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.12.0"
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: 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" })
@@ -31,18 +31,19 @@ module GDSZendesk
31
31
  end
32
32
 
33
33
  def create(requested_user)
34
- @client.users.create!(email: requested_user.email,
35
- name: requested_user.name,
36
- details: "Job title: #{requested_user.job}",
37
- phone: requested_user.phone,
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
- existing_user_in_zendesk.update(details: "Job title: #{requested_user.job}")
43
- if !requested_user.phone.nil? && !requested_user.phone.empty?
44
- existing_user_in_zendesk.update(phone: requested_user.phone)
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
@@ -1,3 +1,3 @@
1
1
  module GDSZendesk
2
- VERSION = "3.5.0".freeze
2
+ VERSION = "3.7.0".freeze
3
3
  end
@@ -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: 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: 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: 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
- verified: true,
44
- name: "Abc",
45
- email: "test@test.com",
46
- phone: "12345",
47
- details: "Job title: Developer",
48
- )
49
- user_being_requested = double("requested user",
50
- name: "Abc", email: "test@test.com", phone: "12345", job: "Developer")
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
@@ -1,3 +1,5 @@
1
1
  require "webmock/rspec"
2
+ require "simplecov"
3
+ SimpleCov.start
2
4
 
3
5
  WebMock.disable_net_connect!(allow_localhost: true)
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.5.0
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: 2023-10-11 00:00:00.000000000 Z
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.12.0
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.12.0
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.0'
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.4.20
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