zendesk_api 1.13.1 → 1.13.2
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/lib/zendesk_api/client.rb +1 -1
- data/lib/zendesk_api/middleware/response/parse_json.rb +0 -1
- data/lib/zendesk_api/version.rb +1 -1
- metadata +10 -205
- data/.gitignore +0 -15
- data/.rspec +0 -2
- data/.travis.yml +0 -10
- data/.yardopts +0 -10
- data/Gemfile +0 -14
- data/LICENSE +0 -176
- data/README.md +0 -425
- data/Rakefile +0 -52
- data/spec/core/association_spec.rb +0 -256
- data/spec/core/bulk_actions_spec.rb +0 -69
- data/spec/core/client_spec.rb +0 -280
- data/spec/core/collection_spec.rb +0 -901
- data/spec/core/configuration_spec.rb +0 -28
- data/spec/core/create_resource_spec.rb +0 -39
- data/spec/core/data_namespace_spec.rb +0 -15
- data/spec/core/data_resource_spec.rb +0 -239
- data/spec/core/inflection_spec.rb +0 -7
- data/spec/core/lru_cache_spec.rb +0 -26
- data/spec/core/middleware/request/encode_json_spec.rb +0 -73
- data/spec/core/middleware/request/etag_cache_spec.rb +0 -21
- data/spec/core/middleware/request/retry_spec.rb +0 -49
- data/spec/core/middleware/request/test.jpg +0 -0
- data/spec/core/middleware/request/upload_spec.rb +0 -164
- data/spec/core/middleware/response/callback_spec.rb +0 -17
- data/spec/core/middleware/response/deflate_spec.rb +0 -21
- data/spec/core/middleware/response/gzip_spec.rb +0 -25
- data/spec/core/middleware/response/parse_iso_dates_spec.rb +0 -44
- data/spec/core/middleware/response/parse_json_spec.rb +0 -53
- data/spec/core/middleware/response/raise_error_spec.rb +0 -128
- data/spec/core/middleware/response/sanitize_response_spec.rb +0 -19
- data/spec/core/read_resource_spec.rb +0 -97
- data/spec/core/resource_spec.rb +0 -541
- data/spec/core/resources/automation_spec.rb +0 -81
- data/spec/core/resources/macro_spec.rb +0 -27
- data/spec/core/resources/trigger_spec.rb +0 -67
- data/spec/core/resources/view_spec.rb +0 -97
- data/spec/core/search_spec.rb +0 -23
- data/spec/core/spec_helper.rb +0 -162
- data/spec/core/trackie_spec.rb +0 -129
- data/spec/fixtures/Argentina.gif +0 -0
- data/spec/fixtures/Argentina2.gif +0 -0
- data/spec/fixtures/credentials.yml.example +0 -3
- data/spec/fixtures/sample_app.zip +0 -0
- data/spec/fixtures/test_resources.rb +0 -22
- data/spec/fixtures/zendesk.rb +0 -109
- data/spec/live/Readme.md +0 -4
- data/spec/live/activity_spec.rb +0 -12
- data/spec/live/app_installation_spec.rb +0 -58
- data/spec/live/app_spec.rb +0 -58
- data/spec/live/audit_spec.rb +0 -15
- data/spec/live/automation_spec.rb +0 -23
- data/spec/live/bookmark_spec.rb +0 -11
- data/spec/live/brand_spec.rb +0 -14
- data/spec/live/category_spec.rb +0 -12
- data/spec/live/collection_spec.rb +0 -64
- data/spec/live/custom_role_spec.rb +0 -5
- data/spec/live/dynamic_content/item_spec.rb +0 -16
- data/spec/live/dynamic_content/variant_spec.rb +0 -19
- data/spec/live/forum_spec.rb +0 -14
- data/spec/live/forum_subscription_spec.rb +0 -12
- data/spec/live/group_membership_spec.rb +0 -18
- data/spec/live/group_spec.rb +0 -32
- data/spec/live/identity_spec.rb +0 -14
- data/spec/live/locale_spec.rb +0 -9
- data/spec/live/macro_spec.rb +0 -44
- data/spec/live/organization_field_spec.rb +0 -12
- data/spec/live/organization_membership_spec.rb +0 -11
- data/spec/live/organization_spec.rb +0 -12
- data/spec/live/push_notification_device_spec.rb +0 -21
- data/spec/live/request_spec.rb +0 -38
- data/spec/live/satisfaction_rating_spec.rb +0 -6
- data/spec/live/setting_spec.rb +0 -25
- data/spec/live/suspended_ticket_spec.rb +0 -8
- data/spec/live/tag_spec.rb +0 -58
- data/spec/live/target_spec.rb +0 -17
- data/spec/live/ticket_field_spec.rb +0 -12
- data/spec/live/ticket_form_spec.rb +0 -14
- data/spec/live/ticket_metrics_spec.rb +0 -6
- data/spec/live/ticket_spec.rb +0 -136
- data/spec/live/topic_comment_spec.rb +0 -52
- data/spec/live/topic_spec.rb +0 -46
- data/spec/live/topic_subscription_spec.rb +0 -12
- data/spec/live/topic_vote_spec.rb +0 -13
- data/spec/live/trigger_spec.rb +0 -23
- data/spec/live/upload_spec.rb +0 -10
- data/spec/live/user_field_spec.rb +0 -12
- data/spec/live/user_spec.rb +0 -71
- data/spec/live/user_view_spec.rb +0 -16
- data/spec/live/view_spec.rb +0 -22
- data/spec/live/voice/phone_number_spec.rb +0 -13
- data/spec/macros/resource_macros.rb +0 -169
- data/zendesk_api.gemspec +0 -38
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
require 'core/spec_helper'
|
|
2
|
-
|
|
3
|
-
describe ZendeskAPI::Association do
|
|
4
|
-
let(:instance) { ZendeskAPI::TestResource.new(client, :id => 1) }
|
|
5
|
-
let(:child) { ZendeskAPI::TestResource::TestChild.new(client, :id => 1, :test_resource_id => 2) }
|
|
6
|
-
|
|
7
|
-
describe "setting/getting" do
|
|
8
|
-
context "has" do
|
|
9
|
-
before do
|
|
10
|
-
ZendeskAPI::TestResource.associations.clear
|
|
11
|
-
ZendeskAPI::TestResource.has :child, :class => ZendeskAPI::TestResource::TestChild
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should not try and fetch nil child" do
|
|
15
|
-
instance.child_id = nil
|
|
16
|
-
expect(instance.child).to be_nil
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should cache an set object" do
|
|
20
|
-
instance.child = child
|
|
21
|
-
expect(instance.child).to eq(child)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should set id on set if it was there" do
|
|
25
|
-
instance.child_id = nil
|
|
26
|
-
instance.child = child
|
|
27
|
-
expect(instance.child_id).to eq(child.id)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should build a object set via hash" do
|
|
31
|
-
instance.child = {:id => 2}
|
|
32
|
-
expect(instance.child.id).to eq(2)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should build a object set via id" do
|
|
36
|
-
instance.child = 2
|
|
37
|
-
expect(instance.child.id).to eq(2)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should not fetch an unknown object" do
|
|
41
|
-
expect(instance.child).to be_nil
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it "should fetch an object known by id" do
|
|
45
|
-
stub_json_request(:get, %r{test_resources/1/child/5}, json(:test_child => {:id => 5}))
|
|
46
|
-
instance.child_id = 5
|
|
47
|
-
expect(instance.child.id).to eq(5)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should handle client errors" do
|
|
51
|
-
stub_request(:get, %r{test_resources/1/child/5}).to_return(:status => 500)
|
|
52
|
-
instance.child_id = 5
|
|
53
|
-
expect { silence_logger { instance.child } }.to_not raise_error
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it "should handle resource not found errors" do
|
|
57
|
-
stub_request(:get, %r{test_resources/1/child/5}).to_return(:status => 404)
|
|
58
|
-
instance.child_id = 5
|
|
59
|
-
silence_logger{ expect(instance.child).to be_nil }
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "is not used when not used" do
|
|
63
|
-
expect(instance.child_used?).to eq(false)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "is used when used" do
|
|
67
|
-
instance.child = child
|
|
68
|
-
expect(instance.child_used?).to eq(true)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
context "has_many" do
|
|
73
|
-
it "should cache a set object" do
|
|
74
|
-
instance.children = [child]
|
|
75
|
-
expect(instance.children.map(&:id)).to eq([1])
|
|
76
|
-
expect(instance.children).to be_instance_of(ZendeskAPI::Collection)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should set ids" do
|
|
80
|
-
instance.children_ids = []
|
|
81
|
-
instance.children = [child]
|
|
82
|
-
expect(instance.children_ids).to eq([child.id])
|
|
83
|
-
expect(instance.children).to be_instance_of(ZendeskAPI::Collection)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
it "should build and cache objects set via hash" do
|
|
87
|
-
instance.children = [{:id => 2}]
|
|
88
|
-
expect(instance.children.map(&:id)).to eq([2])
|
|
89
|
-
expect(instance.children).to be_instance_of(ZendeskAPI::Collection)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "should build a object set via id" do
|
|
93
|
-
instance.children = [2]
|
|
94
|
-
expect(instance.children.map(&:id)).to eq([2])
|
|
95
|
-
expect(instance.children).to be_instance_of(ZendeskAPI::Collection)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it "should fetch unknown objects" do
|
|
99
|
-
stub_json_request(:get, %r{test_resources/1/children}, json(:test_children => [{:id => 2}, {:id => 3}]))
|
|
100
|
-
expect(instance.children.map(&:id)).to eq([2,3])
|
|
101
|
-
expect(instance.children).to be_instance_of(ZendeskAPI::Collection)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "should not change objects" do
|
|
105
|
-
child = 'foo'
|
|
106
|
-
children = [child]
|
|
107
|
-
instance.children = children
|
|
108
|
-
expect(children[0]).to eq('foo')
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it "is not used when not used" do
|
|
112
|
-
expect(instance.children_used?).to eq(false)
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "is used when used" do
|
|
116
|
-
instance.children = [child]
|
|
117
|
-
expect(instance.children_used?).to eq(true)
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
context "class only" do
|
|
123
|
-
subject { described_class.new(:class => ZendeskAPI::TestResource) }
|
|
124
|
-
|
|
125
|
-
it "should generate resource path" do
|
|
126
|
-
expect(subject.generate_path).to eq("test_resources")
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
context "with an instance" do
|
|
130
|
-
it "should generate a specific resource path" do
|
|
131
|
-
expect(subject.generate_path(instance)).to eq("test_resources/1")
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
context "with_id => false" do
|
|
135
|
-
it "should generate general resource path" do
|
|
136
|
-
expect(subject.generate_path(instance, :with_id => false)).to eq("test_resources")
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
context "with an instance that is a new record" do
|
|
141
|
-
it "should generate general resource path" do
|
|
142
|
-
expect(subject.generate_path(ZendeskAPI::TestResource.new(client))).to eq("test_resources")
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
context "with a specified path" do
|
|
148
|
-
before(:each) { subject.options[:path] = "blergh" }
|
|
149
|
-
|
|
150
|
-
it "should generate general resource path" do
|
|
151
|
-
expect(subject.generate_path).to eq("blergh")
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
context "with a passed in id" do
|
|
156
|
-
it "should generate specific resource path" do
|
|
157
|
-
opts = { :id => 1 }
|
|
158
|
-
expect(subject.generate_path(opts)).to eq("test_resources/1")
|
|
159
|
-
expect(opts).to be_empty
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
context "class with a specified parent" do
|
|
165
|
-
subject { described_class.new(:class => ZendeskAPI::TestResource::TestChild, :parent => instance, :name => :children) }
|
|
166
|
-
|
|
167
|
-
it "should generate nested resource path" do
|
|
168
|
-
expect(subject.generate_path).to eq("test_resources/1/children")
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
context "with an instance" do
|
|
172
|
-
it "should generate a specific nested resource path" do
|
|
173
|
-
expect(subject.generate_path(child)).to eq("test_resources/1/children/1")
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
context "with_id => false" do
|
|
177
|
-
it "should generate nested resource path" do
|
|
178
|
-
expect(subject.generate_path(child, :with_id => false)).to eq("test_resources/1/children")
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
context "when parent has a namespace" do
|
|
184
|
-
before(:each) do
|
|
185
|
-
instance.class.namespace 'hello'
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
after(:each) do
|
|
189
|
-
instance.class.namespace nil
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
it "should generate a specific nested resource path" do
|
|
193
|
-
expect(subject.generate_path(child)).to eq("hello/test_resources/1/children/1")
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
context "with a specified path" do
|
|
198
|
-
before(:each) { subject.options[:path] = "blergh" }
|
|
199
|
-
|
|
200
|
-
it "should generate nested resource path" do
|
|
201
|
-
expect(subject.generate_path).to eq("test_resources/1/blergh")
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
context "with a path on the association" do
|
|
206
|
-
before(:each) do
|
|
207
|
-
association = ZendeskAPI::TestResource.associations.detect {|a| a[:name] == :children}
|
|
208
|
-
association[:path] = "blergh"
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
it "should generate nested resource path" do
|
|
212
|
-
expect(subject.generate_path).to eq("test_resources/1/blergh")
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
context "with no association" do
|
|
217
|
-
before(:each) do
|
|
218
|
-
ZendeskAPI::TestResource.associations.clear
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it "should generate nested resource path" do
|
|
222
|
-
expect(subject.generate_path).to eq("test_resources/1/test_children")
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
context "class with a parent id" do
|
|
228
|
-
subject { described_class.new(:class => ZendeskAPI::TestResource::TestChild, :name => :children) }
|
|
229
|
-
|
|
230
|
-
it "should raise an error if not passed an instance or id" do
|
|
231
|
-
expect { subject.generate_path }.to raise_error(ArgumentError)
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
it "should generate specific nested resource path" do
|
|
235
|
-
expect(subject.generate_path(child)).to eq("test_resources/2/children/1")
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
context "with parent id passed in" do
|
|
239
|
-
it "should generate nested resource path" do
|
|
240
|
-
opts = { :test_resource_id => 3 }
|
|
241
|
-
expect(subject.generate_path(opts)).to eq("test_resources/3/children")
|
|
242
|
-
expect(opts).to be_empty
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
context "with a singular resource" do
|
|
248
|
-
subject { described_class.new(:class => ZendeskAPI::SingularTestResource) }
|
|
249
|
-
|
|
250
|
-
context "with an instance" do
|
|
251
|
-
it "should not generate a specific resource path" do
|
|
252
|
-
expect(subject.generate_path(ZendeskAPI::SingularTestResource.new(client, :id => 1))).to eq("singular_test_resources")
|
|
253
|
-
end
|
|
254
|
-
end
|
|
255
|
-
end
|
|
256
|
-
end
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
require 'core/spec_helper'
|
|
2
|
-
|
|
3
|
-
describe ZendeskAPI::DestroyMany do
|
|
4
|
-
subject { ZendeskAPI::BulkTestResource }
|
|
5
|
-
|
|
6
|
-
context "destroy_many!" do
|
|
7
|
-
before(:each) do
|
|
8
|
-
stub_json_request(:delete, %r{bulk_test_resources/destroy_many}, json(:job_status => {:id => 'abc'}))
|
|
9
|
-
@response = subject.destroy_many!(client, [1,2,3])
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'calls the destroy_many endpoint' do
|
|
13
|
-
assert_requested(:delete, %r{bulk_test_resources/destroy_many\?ids=1,2,3$})
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it 'returns a JobStatus' do
|
|
17
|
-
expect(@response).to be_instance_of(ZendeskAPI::JobStatus)
|
|
18
|
-
expect(@response.id).to eq('abc')
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe ZendeskAPI::CreateMany do
|
|
24
|
-
subject { ZendeskAPI::BulkTestResource }
|
|
25
|
-
|
|
26
|
-
context "create_many!" do
|
|
27
|
-
let(:attributes) { [{:name => 'A'}, {:name => 'B'}] }
|
|
28
|
-
|
|
29
|
-
before(:each) do
|
|
30
|
-
stub_json_request(:post, %r{bulk_test_resources/create_many}, json(:job_status => {:id => 'def'}))
|
|
31
|
-
@response = subject.create_many!(client, attributes)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'calls the create_many endpoint' do
|
|
35
|
-
assert_requested(:post, %r{bulk_test_resources/create_many},
|
|
36
|
-
:body => json(:bulk_test_resources => attributes)
|
|
37
|
-
)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'returns a JobStatus' do
|
|
41
|
-
expect(@response).to be_instance_of(ZendeskAPI::JobStatus)
|
|
42
|
-
expect(@response.id).to eq('def')
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe ZendeskAPI::UpdateMany do
|
|
47
|
-
subject { ZendeskAPI::BulkTestResource }
|
|
48
|
-
|
|
49
|
-
context "update_many!" do
|
|
50
|
-
let(:attributes) { {:name => 'A', :age => 25} }
|
|
51
|
-
|
|
52
|
-
before(:each) do
|
|
53
|
-
stub_json_request(:put, %r{bulk_test_resources/update_many}, json(:job_status => {:id => 'ghi'}))
|
|
54
|
-
@response = subject.update_many!(client, [1,2,3], attributes)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it 'calls the update_many endpoint' do
|
|
58
|
-
assert_requested(:put, %r{bulk_test_resources/update_many\?ids=1,2,3$},
|
|
59
|
-
:body => json(:bulk_test_resource => attributes)
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it 'returns a JobStatus' do
|
|
64
|
-
expect(@response).to be_instance_of(ZendeskAPI::JobStatus)
|
|
65
|
-
expect(@response.id).to eq('ghi')
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
data/spec/core/client_spec.rb
DELETED
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
require 'core/spec_helper'
|
|
2
|
-
|
|
3
|
-
class SimpleClient < ZendeskAPI::Client
|
|
4
|
-
def build_connection
|
|
5
|
-
"FOO"
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
describe ZendeskAPI::Client do
|
|
10
|
-
subject { client }
|
|
11
|
-
|
|
12
|
-
context "#initialize" do
|
|
13
|
-
it "should require a block" do
|
|
14
|
-
expect { ZendeskAPI::Client.new }.to raise_error(ArgumentError)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should raise an exception when url isn't ssl" do
|
|
18
|
-
expect do
|
|
19
|
-
ZendeskAPI::Client.new do |config|
|
|
20
|
-
config.url = "http://www.google.com"
|
|
21
|
-
end
|
|
22
|
-
end.to raise_error(ArgumentError)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should not raise an exception when url isn't ssl and allow_http is set to true" do
|
|
26
|
-
expect do
|
|
27
|
-
ZendeskAPI::Client.new do |config|
|
|
28
|
-
config.allow_http = true
|
|
29
|
-
config.url = "http://www.google.com/"
|
|
30
|
-
end
|
|
31
|
-
end.to_not raise_error
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should handle valid url" do
|
|
35
|
-
expect do
|
|
36
|
-
ZendeskAPI::Client.new do |config|
|
|
37
|
-
config.url = "https://example.zendesk.com/api/v2"
|
|
38
|
-
end.to_not raise_error
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
context "basic_auth" do
|
|
43
|
-
subject do
|
|
44
|
-
ZendeskAPI::Client.new do |config|
|
|
45
|
-
config.url = "https://example.zendesk.com/api/v2"
|
|
46
|
-
config.username = "hello"
|
|
47
|
-
config.password = "token"
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it "should build basic auth middleware" do
|
|
52
|
-
expect(subject.connection.builder.handlers.index(Faraday::Request::BasicAuthentication)).to_not be_nil
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "should not build token middleware" do
|
|
56
|
-
expect(subject.connection.headers["Authorization"]).to be_nil
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
context "access token" do
|
|
61
|
-
subject do
|
|
62
|
-
ZendeskAPI::Client.new do |config|
|
|
63
|
-
config.url = "https://example.zendesk.com/api/v2"
|
|
64
|
-
config.access_token = "hello"
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should not build basic auth middleware" do
|
|
69
|
-
expect(subject.connection.builder.handlers.index(Faraday::Request::BasicAuthentication)).to be_nil
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "should build token middleware" do
|
|
73
|
-
expect(subject.connection.headers["Authorization"]).to match(/Bearer/)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
context "#token" do
|
|
78
|
-
let(:client) do
|
|
79
|
-
ZendeskAPI::Client.new do |config|
|
|
80
|
-
config.url = "https://example.zendesk.com/api/v2"
|
|
81
|
-
config.username = username
|
|
82
|
-
config.token = "token"
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
subject { client.config }
|
|
87
|
-
let(:username) { "hello" }
|
|
88
|
-
|
|
89
|
-
context "with a username with /token" do
|
|
90
|
-
let(:username) { "hello/token" }
|
|
91
|
-
|
|
92
|
-
it "should not add /token to the username" do
|
|
93
|
-
expect(subject.username).to eq("hello/token")
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "with no password" do
|
|
98
|
-
it "should build basic auth middleware" do
|
|
99
|
-
expect(client.connection.builder.handlers.index(Faraday::Request::BasicAuthentication)).to_not be_nil
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it "should not build token middleware" do
|
|
103
|
-
expect(client.connection.builder.handlers.index(Faraday::Request::TokenAuthentication)).to be_nil
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it "should copy token to password" do
|
|
107
|
-
expect(subject.token).to eq(subject.password)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it "should add /token to the username" do
|
|
111
|
-
expect(subject.username).to eq("hello/token")
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
context "#logger" do
|
|
117
|
-
before(:each) do
|
|
118
|
-
@client = ZendeskAPI::Client.new do |config|
|
|
119
|
-
config.url = "https://example.zendesk.com/api/v2"
|
|
120
|
-
config.logger = subject
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
stub_request(:get, %r{/bs$}).to_return(:status => 200)
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
context "with true value" do
|
|
127
|
-
subject { true }
|
|
128
|
-
|
|
129
|
-
it "should log in faraday" do
|
|
130
|
-
expect(@client.connection.builder.handlers).to include(ZendeskAPI::Middleware::Response::Logger)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
context "with a request" do
|
|
134
|
-
it "should log" do
|
|
135
|
-
expect(client.config.logger).to receive(:info).at_least(:once)
|
|
136
|
-
@client.connection.get('/bs')
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
context "with false value" do
|
|
142
|
-
subject { false }
|
|
143
|
-
|
|
144
|
-
it "should not log" do
|
|
145
|
-
expect(@client.connection.builder.handlers).to_not include(ZendeskAPI::Middleware::Response::Logger)
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
context "with a nil value" do
|
|
150
|
-
subject { nil }
|
|
151
|
-
|
|
152
|
-
it "should log" do
|
|
153
|
-
expect(@client.connection.builder.handlers).to include(ZendeskAPI::Middleware::Response::Logger)
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
context "with a logger" do
|
|
158
|
-
let(:out){ StringIO.new }
|
|
159
|
-
subject { Logger.new(out) }
|
|
160
|
-
|
|
161
|
-
it "should log" do
|
|
162
|
-
expect(@client.connection.builder.handlers).to include(ZendeskAPI::Middleware::Response::Logger)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
context "with a request" do
|
|
166
|
-
it "should log to the subject" do
|
|
167
|
-
expect(out).to receive(:write).at_least(:once)
|
|
168
|
-
@client.connection.get('/bs')
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
context "#current_user" do
|
|
176
|
-
before(:each) do
|
|
177
|
-
stub_json_request(:get, %r{users/me}, json("user" => {}))
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
it "should be a user instance" do
|
|
181
|
-
expect(client.current_user).to be_instance_of(ZendeskAPI::User)
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
context "#connection" do
|
|
186
|
-
it "should initially be false" do
|
|
187
|
-
expect(subject.instance_variable_get(:@connection)).to be_falsey
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
it "connection should be initialized on first call to #connection" do
|
|
191
|
-
expect(subject.connection).to be_instance_of(Faraday::Connection)
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
context "resources" do
|
|
196
|
-
it "should return an instance of ZendeskAPI::Collection if there is no method" do
|
|
197
|
-
expect(subject.instance_variable_get(:@resource_cache)["tickets"]).to be_nil
|
|
198
|
-
|
|
199
|
-
expect(subject.tickets).to be_instance_of(ZendeskAPI::Collection)
|
|
200
|
-
|
|
201
|
-
expect(subject.instance_variable_get(:@resource_cache)["tickets"]).to_not be_empty
|
|
202
|
-
expect(subject.instance_variable_get(:@resource_cache)["tickets"][:class]).to eq(ZendeskAPI::Ticket)
|
|
203
|
-
expect(subject.instance_variable_get(:@resource_cache)["tickets"][:cache]).to be_instance_of(ZendeskAPI::LRUCache)
|
|
204
|
-
|
|
205
|
-
expect(ZendeskAPI).to_not receive(:const_get)
|
|
206
|
-
expect(subject.tickets).to be_instance_of(ZendeskAPI::Collection)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
it "should not cache calls with different options" do
|
|
210
|
-
expect(subject.search(:query => 'abc')).to_not eq(subject.search(:query => '123'))
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
it "should not cache calls with :reload => true options" do
|
|
214
|
-
expect(subject.search(:query => 'abc')).to_not eq(subject.search(:query => 'abc', :reload => true))
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
it "should not pass reload to the underlying collection" do
|
|
218
|
-
collection = subject.search(:query => 'abc', :reload => true)
|
|
219
|
-
expect(collection.options.key?(:reload)).to be(false)
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
it "should cache calls with the same options" do
|
|
223
|
-
expect(subject.search(:query => 'abc')).to eq(subject.search(:query => 'abc'))
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
it "should respond_to? for valid resources" do
|
|
227
|
-
expect(subject.respond_to?(:tickets)).to eq(true)
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
it "should respond_to? for valid cached resources" do
|
|
231
|
-
subject.tickets
|
|
232
|
-
|
|
233
|
-
expect(subject.respond_to?(:tickets)).to eq(true)
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
it "should respond_to? for actual instance methods" do
|
|
237
|
-
expect(subject.respond_to?(:set_default_logger, true)).to eq(true)
|
|
238
|
-
expect(subject.respond_to?(:set_default_logger)).to eq(false)
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
it "should not respond_to? invalid resources" do
|
|
242
|
-
expect(subject.respond_to?(:nope)).to eq(false)
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
it "delegates voice correctly" do
|
|
246
|
-
expect(subject.voice.greetings).to be_instance_of(ZendeskAPI::Collection)
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
it "looks in the appropriate namespaces" do
|
|
250
|
-
expect(subject.greetings.association.options['class']).to eq(ZendeskAPI::Voice::Greeting)
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
it 'raises if the resource does not exist' do
|
|
254
|
-
expect { subject.random_resource }.to raise_error(RuntimeError)
|
|
255
|
-
end
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
it "can be subclassed" do
|
|
259
|
-
client = SimpleClient.new do |config|
|
|
260
|
-
config.allow_http = true
|
|
261
|
-
end
|
|
262
|
-
expect(client.config.allow_http).to eq(true)
|
|
263
|
-
expect(client.connection).to eq("FOO")
|
|
264
|
-
expect(client.connection.object_id).to eq(client.connection.object_id) # it's cached
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
context ZendeskAPI::Voice do
|
|
268
|
-
it "defers to voice delegator" do
|
|
269
|
-
expect(subject).to receive(:phone_numbers).once
|
|
270
|
-
subject.voice.phone_numbers
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
it "manages namespace correctly" do
|
|
274
|
-
expect(client.addresses.path).to match(/channels\/voice\/addresses/)
|
|
275
|
-
expect(client.phone_numbers.path).to match(/channels\/voice\/phone_numbers/)
|
|
276
|
-
expect(client.greetings.path).to match(/channels\/voice\/greetings/)
|
|
277
|
-
expect(client.greeting_categories.path).to match(/channels\/voice\/greeting_categories/)
|
|
278
|
-
end
|
|
279
|
-
end
|
|
280
|
-
end
|