gds_zendesk 3.5.0 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
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