gds_zendesk 3.2.0 → 3.3.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: c2ce09664299a6802632a0dc10966d37c4adf67d53efbf2368240a4d96401139
4
- data.tar.gz: fe832fb5483d5d9363614b984f2d89903742be31175b5839ab9bf515a7164b62
3
+ metadata.gz: 212f75df35d4fbe686de231d98ea2bf37e38e135e58d80c92e1a650b4f393327
4
+ data.tar.gz: ab77b135f4a7e10107eef99fff1d221409902ca8458d73caedd3b760e553221d
5
5
  SHA512:
6
- metadata.gz: 20a8002750b0376ba9ec27ed501cf91f84372259918cb3aff80571e375bb8a1a81121d303da41cbd6f2ad5f175006871cbda40e43b5d332ff50cf64239fee619
7
- data.tar.gz: 3d68d792fa0e783e96761d04ca23c17d9b4b96ac71bb5d72e6f2a5a57177eef8fe3ed8466b572feca0dc2383b0163813a13146c331bee3269e77be19b322c49d
6
+ metadata.gz: fdaf04d4cdf2fa3fd2b5d7cc48f93130008a4cf134372e97bf622d38872d6d56655dfa7f232f3a52c0474e673b9dbd04c9571a72a2d04c7fbc139afb3284879b
7
+ data.tar.gz: 94112efde5839d160cdac16d10aa50cc60e665d1e33ee5ddf219fca4bf3ec837e2c7d3f36c44b930910e4932a25836816510e839021f7c003cbebf9508a58afe
data/.rubocop.yml ADDED
@@ -0,0 +1,7 @@
1
+ inherit_gem:
2
+ rubocop-govuk:
3
+ - config/default.yml
4
+
5
+ inherit_mode:
6
+ merge:
7
+ - Exclude
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 3.3.0
2
+
3
+ * Allow access to Zendesk::Client from GDSZendesk::Client
4
+
1
5
  # 3.2.0
2
6
 
3
7
  * Allow use of a token instead of password
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
data/README.md CHANGED
@@ -53,3 +53,11 @@ GDSZendesk::Client.new(config_options)
53
53
  ```
54
54
 
55
55
  to create a new client.
56
+
57
+ ## Running tests locally
58
+
59
+ To run the tests, use the follow:
60
+
61
+ ```
62
+ bundle exec rake default
63
+ ```
data/Rakefile CHANGED
@@ -1,7 +1,13 @@
1
1
  require "rake"
2
+ require "rubocop/rake_task"
2
3
  require "bundler/gem_tasks"
3
- require 'rspec/core/rake_task'
4
+ require "rspec/core/rake_task"
4
5
 
6
+ RuboCop::RakeTask.new
5
7
  RSpec::Core::RakeTask.new(:spec)
6
8
 
7
- task :default => :spec
9
+ desc "Linting for Ruby"
10
+ task lint: %i[rubocop] do
11
+ end
12
+
13
+ task default: %i[lint spec]
data/gds_zendesk.gemspec CHANGED
@@ -1,26 +1,26 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'gds_zendesk/version'
3
+ require "gds_zendesk/version"
5
4
 
6
5
  Gem::Specification.new do |gem|
7
6
  gem.name = "gds_zendesk"
8
7
  gem.version = GDSZendesk::VERSION
9
8
  gem.authors = ["GOV.UK Dev"]
10
9
  gem.email = ["govuk-dev@digital.cabinet-office.gov.uk"]
11
- gem.description = %q{Client and models for communicating with Zendesk}
12
- gem.summary = %q{Client and models for communicating with Zendesk}
10
+ gem.description = "Client and models for communicating with Zendesk"
11
+ gem.summary = "Client and models for communicating with Zendesk"
13
12
  gem.homepage = "https://github.com/alphagov/gds_zendesk"
14
13
 
15
- gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
17
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
17
+ gem.require_paths = %w[lib]
19
18
 
20
- gem.add_dependency 'null_logger', '~> 0'
21
- gem.add_dependency 'zendesk_api', '~> 1.27'
19
+ gem.add_dependency "null_logger", "~> 0"
20
+ gem.add_dependency "zendesk_api", "~> 1.27"
22
21
 
23
- gem.add_development_dependency 'rake', '~> 10'
24
- gem.add_development_dependency 'rspec', '~> 3'
25
- gem.add_development_dependency 'webmock', '~> 2'
22
+ gem.add_development_dependency "rake", "~> 10"
23
+ gem.add_development_dependency "rspec", "~> 3"
24
+ gem.add_development_dependency "rubocop-govuk", "~> 3"
25
+ gem.add_development_dependency "webmock", "~> 2"
26
26
  end
@@ -1,8 +1,8 @@
1
- require 'forwardable'
2
- require 'null_logger'
3
- require 'zendesk_api'
1
+ require "forwardable"
2
+ require "null_logger"
3
+ require "zendesk_api"
4
4
 
5
- require 'gds_zendesk/users'
5
+ require "gds_zendesk/users"
6
6
 
7
7
  module GDSZendesk
8
8
  class Client
@@ -10,6 +10,7 @@ module GDSZendesk
10
10
  def_delegators :@zendesk_client, :ticket
11
11
 
12
12
  attr_accessor :config_options
13
+ attr_reader :zendesk_client
13
14
 
14
15
  def initialize(config_options)
15
16
  @config_options = defaults.merge(config_options)
@@ -23,16 +24,17 @@ module GDSZendesk
23
24
  def build
24
25
  check_that_username_and_password_are_provided
25
26
 
26
- ZendeskAPI::Client.new { |config|
27
+ ZendeskAPI::Client.new do |config|
27
28
  config.url = url
28
29
  config.username = username
29
30
  config.token = token if token
30
31
  config.password = password if password
31
32
  config.logger = logger
32
- }
33
+ end
33
34
  end
34
35
 
35
- protected
36
+ protected
37
+
36
38
  def logger
37
39
  @config_options[:logger] || @config_options["logger"]
38
40
  end
@@ -61,9 +63,9 @@ module GDSZendesk
61
63
 
62
64
  def defaults
63
65
  {
64
- logger: NullLogger.instance,
65
- url: "https://govuk.zendesk.com/api/v2/"
66
+ logger: NullLogger.instance,
67
+ url: "https://govuk.zendesk.com/api/v2/",
66
68
  }
67
69
  end
68
70
  end
69
- end
71
+ end
@@ -1,5 +1,5 @@
1
- require 'null_logger'
2
- require 'zendesk_api/error'
1
+ require "null_logger"
2
+ require "zendesk_api/error"
3
3
 
4
4
  module GDSZendesk
5
5
  class DummyClient
@@ -23,13 +23,14 @@ module GDSZendesk
23
23
  @options = options
24
24
  if should_raise_error?
25
25
  @logger.info("Simulating Zendesk ticket creation failure: #{options.inspect}")
26
- raise ZendeskAPI::Error::RecordInvalid.new(body: {"details" => "sample error message from Zendesk"})
26
+ raise ZendeskAPI::Error::RecordInvalid.new(body: { "details" => "sample error message from Zendesk" })
27
27
  else
28
28
  @logger.info("Zendesk ticket created: #{options.inspect}")
29
29
  end
30
30
  end
31
31
 
32
- protected
32
+ protected
33
+
33
34
  def should_raise_error?
34
35
  description =~ /break_zendesk/ or comment =~ /break_zendesk/
35
36
  end
@@ -48,11 +49,11 @@ module GDSZendesk
48
49
  @logger = logger
49
50
  end
50
51
 
51
- def search(attributes)
52
+ def search(_attributes)
52
53
  []
53
54
  end
54
55
 
55
- def suspended?(user_email)
56
+ def suspended?(_user_email)
56
57
  false
57
58
  end
58
59
 
@@ -1,55 +1,55 @@
1
- require 'json'
1
+ require "json"
2
2
 
3
3
  module GDSZendesk
4
4
  module TestHelpers
5
5
  def zendesk_has_no_user_with_email(email)
6
- stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{email}").
7
- with(basic_auth: basic_auth_credentials).
8
- to_return(body: {users: [], previous_page: nil, next_page: nil, count: 0}.to_json,
9
- headers: {'Content-Type' => 'application/json'})
6
+ stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{email}")
7
+ .with(basic_auth: basic_auth_credentials)
8
+ .to_return(body: { users: [], previous_page: nil, next_page: nil, count: 0 }.to_json,
9
+ headers: { "Content-Type" => "application/json" })
10
10
  end
11
11
 
12
12
  def zendesk_has_user(user_details)
13
- stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{user_details[:email]}").
14
- with(basic_auth: basic_auth_credentials).
15
- to_return(body: {users: [user_details], previous_page: nil, next_page: nil, count: 1}.to_json,
16
- headers: {'Content-Type' => 'application/json'})
13
+ stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{user_details[:email]}")
14
+ .with(basic_auth: basic_auth_credentials)
15
+ .to_return(body: { users: [user_details], previous_page: nil, next_page: nil, count: 1 }.to_json,
16
+ headers: { "Content-Type" => "application/json" })
17
17
  end
18
18
 
19
19
  def stub_zendesk_user_creation(user_properties = nil)
20
20
  stub = stub_request(:post, "#{zendesk_endpoint}/users")
21
- stub.with(body: {user: user_properties}) unless user_properties.nil?
21
+ stub.with(body: { user: user_properties }) unless user_properties.nil?
22
22
  stub.with(basic_auth: basic_auth_credentials)
23
- stub.to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
24
- headers: {'Content-Type' => 'application/json'})
23
+ stub.to_return(status: 201, body: { user: { id: 12_345, name: "abc" } }.to_json,
24
+ headers: { "Content-Type" => "application/json" })
25
25
  end
26
26
 
27
27
  def stub_zendesk_ticket_creation(ticket_properties = nil)
28
28
  stub = stub_request(:post, "#{zendesk_endpoint}/tickets")
29
- stub.with(body: {ticket: ticket_properties}) unless ticket_properties.nil?
29
+ stub.with(body: { ticket: ticket_properties }) unless ticket_properties.nil?
30
30
  stub.with(basic_auth: basic_auth_credentials)
31
- stub.to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
32
- headers: {'Content-Type' => 'application/json'})
31
+ stub.to_return(status: 201, body: { ticket: { id: 12_345 } }.to_json,
32
+ headers: { "Content-Type" => "application/json" })
33
33
  end
34
34
 
35
35
  def stub_zendesk_ticket_creation_with_body(body)
36
- stub_request(:post, "#{zendesk_endpoint}/tickets").
37
- with(body: body).
38
- with(basic_auth: basic_auth_credentials).
39
- to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
40
- headers: {'Content-Type' => 'application/json'})
36
+ stub_request(:post, "#{zendesk_endpoint}/tickets")
37
+ .with(body: body)
38
+ .with(basic_auth: basic_auth_credentials)
39
+ .to_return(status: 201, body: { ticket: { id: 12_345 } }.to_json,
40
+ headers: { "Content-Type" => "application/json" })
41
41
  end
42
42
 
43
43
  def stub_zendesk_user_update(user_id, user_properties)
44
- stub_request(:put, "#{zendesk_endpoint}/users/#{user_id}").
45
- with(body: {user: user_properties}).
46
- with(basic_auth: basic_auth_credentials).
47
- to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
48
- headers: {'Content-Type' => 'application/json'})
44
+ stub_request(:put, "#{zendesk_endpoint}/users/#{user_id}")
45
+ .with(body: { user: user_properties })
46
+ .with(basic_auth: basic_auth_credentials)
47
+ .to_return(status: 201, body: { user: { id: 12_345, name: "abc" } }.to_json,
48
+ headers: { "Content-Type" => "application/json" })
49
49
  end
50
50
 
51
51
  def basic_auth_credentials
52
- [valid_zendesk_credentials['username'], valid_zendesk_credentials['password']]
52
+ [valid_zendesk_credentials["username"], valid_zendesk_credentials["password"]]
53
53
  end
54
54
 
55
55
  def zendesk_is_unavailable
@@ -78,12 +78,12 @@ module GDSZendesk
78
78
 
79
79
  def assert_created_ticket_has(ticket_options)
80
80
  assert_requested :post, %r{/api/v2/tickets},
81
- body: { ticket: hash_including(ticket_options) }, times: 1
81
+ body: { ticket: hash_including(ticket_options) }, times: 1
82
82
  end
83
83
 
84
84
  def assert_created_ticket_has_requester(requester_options)
85
85
  assert_requested :post, %r{/api/v2/tickets},
86
- body: { ticket: hash_including(requester: hash_including(requester_options)) }, times: 1
86
+ body: { ticket: hash_including(requester: hash_including(requester_options)) }, times: 1
87
87
  end
88
88
  end
89
89
  end
@@ -24,7 +24,8 @@ module GDSZendesk
24
24
  end
25
25
  end
26
26
 
27
- protected
27
+ protected
28
+
28
29
  def find_by_email(email)
29
30
  @client.users.search(query: email).to_a
30
31
  end
@@ -46,4 +47,4 @@ module GDSZendesk
46
47
  existing_user_in_zendesk
47
48
  end
48
49
  end
49
- end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module GDSZendesk
2
- VERSION = "3.2.0"
2
+ VERSION = "3.3.0".freeze
3
3
  end
@@ -1,19 +1,19 @@
1
- INITIALIZER = <<END
2
- require 'yaml'
3
- require 'gds_zendesk/client'
4
- require 'gds_zendesk/dummy_client'
5
-
6
- GDS_ZENDESK_CLIENT = if Rails.env.development? || Rails.env.test?
7
- GDSZendesk::DummyClient.new(logger: Rails.logger)
8
- else
9
- config_yaml_file = File.join(Rails.root, 'config', 'zendesk.yml')
10
- config = YAML.load_file(config_yaml_file)[Rails.env]
11
- GDSZendesk::Client.new(username: config['username'], password: config['password'], token: config['token'], logger: Rails.logger)
12
- end
13
- END
1
+ INITIALIZER = <<~RUBY.freeze
2
+ require 'yaml'
3
+ require 'gds_zendesk/client'
4
+ require 'gds_zendesk/dummy_client'
5
+
6
+ GDS_ZENDESK_CLIENT = if Rails.env.development? || Rails.env.test?
7
+ GDSZendesk::DummyClient.new(logger: Rails.logger)
8
+ else
9
+ config_yaml_file = File.join(Rails.root, 'config', 'zendesk.yml')
10
+ config = YAML.load_file(config_yaml_file)[Rails.env]
11
+ GDSZendesk::Client.new(username: config['username'], password: config['password'], token: config['token'], logger: Rails.logger)
12
+ end
13
+ RUBY
14
14
 
15
15
  # This module name is slightly differently capitalised to the main library module
16
- # The reason for this is that the module name is used by Rails within the
16
+ # The reason for this is that the module name is used by Rails within the
17
17
  # generator CLI tools, and the tools get confused if the module is called GDSZendesk
18
18
  module GdsZendesk
19
19
  class InstallGenerator < Rails::Generators::Base
@@ -1,7 +1,7 @@
1
- require 'spec_helper'
2
- require 'gds_zendesk/test_helpers'
3
- require 'gds_zendesk/client'
4
- require 'null_logger'
1
+ require "spec_helper"
2
+ require "gds_zendesk/test_helpers"
3
+ require "gds_zendesk/client"
4
+ require "null_logger"
5
5
 
6
6
  module GDSZendesk
7
7
  describe Client do
@@ -17,27 +17,27 @@ module GDSZendesk
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
- /username not provided/)
20
+ /username not provided/)
21
21
  end
22
22
 
23
23
  it "should raise an error if no password or token is provided" do
24
24
  expect { Client.new(username: "abc") }.to raise_error(ArgumentError,
25
- /password or token not provided/)
25
+ /password or token not provided/)
26
26
  end
27
27
 
28
28
  it "should raise an error if token and password are provided" do
29
29
  expect { Client.new(username: "abc", token: "def", password: "ghi") }.to raise_error(ArgumentError,
30
- /Provide only one of token or password/)
30
+ /Provide only one of token or password/)
31
31
  end
32
32
 
33
33
  it "should not raise an error if token is provided without password" do
34
34
  expect { Client.new(username: "abc", token: "def") }.not_to raise_error(ArgumentError,
35
- /password or token not provided/)
35
+ /password or token not provided/)
36
36
  end
37
37
 
38
38
  it "should not raise an error if password is provided without token" do
39
39
  expect { Client.new(username: "abc", password: "def") }.not_to raise_error(ArgumentError,
40
- /password or token not provided/)
40
+ /password or token not provided/)
41
41
  end
42
42
 
43
43
  it "should use a null logger if no logger has been provided" do
@@ -1,4 +1,4 @@
1
- require 'gds_zendesk/dummy_client'
1
+ require "gds_zendesk/dummy_client"
2
2
 
3
3
  module GDSZendesk
4
4
  describe DummyClient do
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- require 'gds_zendesk/client'
4
- require 'gds_zendesk/users'
5
- require 'gds_zendesk/test_helpers'
3
+ require "gds_zendesk/client"
4
+ require "gds_zendesk/users"
5
+ require "gds_zendesk/test_helpers"
6
6
 
7
7
  module GDSZendesk
8
8
  describe Users do
@@ -46,10 +46,10 @@ module GDSZendesk
46
46
  name: "Abc",
47
47
  email: "test@test.com",
48
48
  phone: "12345",
49
- details: "Job title: Developer"
49
+ details: "Job title: Developer",
50
50
  )
51
51
  user_being_requested = double("requested user",
52
- name: "Abc", email: "test@test.com", phone: "12345", job: "Developer")
52
+ name: "Abc", email: "test@test.com", phone: "12345", job: "Developer")
53
53
 
54
54
  users.create_or_update_user(user_being_requested)
55
55
  expect(stub_post).to have_been_requested
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,3 @@
1
- require 'webmock/rspec'
1
+ require "webmock/rspec"
2
2
 
3
- WebMock.disable_net_connect!(:allow_localhost => true)
3
+ 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.2.0
4
+ version: 3.3.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: 2020-09-29 00:00:00.000000000 Z
11
+ date: 2022-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: null_logger
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-govuk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: webmock
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +102,7 @@ extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
90
104
  - ".gitignore"
105
+ - ".rubocop.yml"
91
106
  - ".ruby-version"
92
107
  - CHANGELOG.md
93
108
  - Gemfile
@@ -125,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
140
  - !ruby/object:Gem::Version
126
141
  version: '0'
127
142
  requirements: []
128
- rubygems_version: 3.1.2
143
+ rubygems_version: 3.0.3
129
144
  signing_key:
130
145
  specification_version: 4
131
146
  summary: Client and models for communicating with Zendesk