discourse_api 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +23 -10
  3. data/.rubocop.yml +1 -1
  4. data/.streerc +2 -0
  5. data/CHANGELOG.md +5 -0
  6. data/Gemfile +1 -1
  7. data/README.md +0 -4
  8. data/discourse_api.gemspec +7 -4
  9. data/examples/backups.rb +5 -5
  10. data/examples/badges.rb +5 -5
  11. data/examples/bookmark_topic.rb +5 -5
  12. data/examples/category.rb +10 -6
  13. data/examples/change_topic_status.rb +12 -11
  14. data/examples/create_private_message.rb +6 -6
  15. data/examples/create_topic.rb +9 -9
  16. data/examples/create_update_category.rb +13 -16
  17. data/examples/create_user.rb +12 -11
  18. data/examples/dashboard.rb +5 -5
  19. data/examples/disposable_invite_tokens.rb +9 -10
  20. data/examples/example.rb +5 -5
  21. data/examples/group_set_user_notification_level.rb +18 -19
  22. data/examples/groups.rb +7 -7
  23. data/examples/invite_users.rb +5 -5
  24. data/examples/manage_api_keys.rb +6 -11
  25. data/examples/notifications.rb +6 -6
  26. data/examples/polls.rb +12 -12
  27. data/examples/post_action.rb +5 -5
  28. data/examples/search.rb +5 -5
  29. data/examples/sent_private_messages.rb +6 -6
  30. data/examples/sso.rb +6 -6
  31. data/examples/topic_lists.rb +5 -5
  32. data/examples/update_user.rb +15 -7
  33. data/examples/upload_file.rb +7 -7
  34. data/lib/discourse_api/api/api_key.rb +1 -3
  35. data/lib/discourse_api/api/backups.rb +1 -1
  36. data/lib/discourse_api/api/badges.rb +21 -6
  37. data/lib/discourse_api/api/categories.rb +69 -37
  38. data/lib/discourse_api/api/dashboard.rb +2 -6
  39. data/lib/discourse_api/api/groups.rb +68 -73
  40. data/lib/discourse_api/api/invite.rb +30 -30
  41. data/lib/discourse_api/api/notifications.rb +2 -3
  42. data/lib/discourse_api/api/params.rb +4 -14
  43. data/lib/discourse_api/api/polls.rb +9 -12
  44. data/lib/discourse_api/api/posts.rb +5 -8
  45. data/lib/discourse_api/api/private_messages.rb +9 -8
  46. data/lib/discourse_api/api/search.rb +2 -2
  47. data/lib/discourse_api/api/topics.rb +20 -22
  48. data/lib/discourse_api/api/uploads.rb +7 -5
  49. data/lib/discourse_api/api/user_actions.rb +2 -2
  50. data/lib/discourse_api/api/users.rb +31 -19
  51. data/lib/discourse_api/client.rb +58 -56
  52. data/lib/discourse_api/example_helper.rb +2 -4
  53. data/lib/discourse_api/single_sign_on.rb +53 -57
  54. data/lib/discourse_api/version.rb +1 -1
  55. data/spec/discourse_api/api/api_key_spec.rb +39 -25
  56. data/spec/discourse_api/api/backups_spec.rb +8 -3
  57. data/spec/discourse_api/api/badges_spec.rb +17 -7
  58. data/spec/discourse_api/api/categories_spec.rb +95 -53
  59. data/spec/discourse_api/api/email_spec.rb +17 -7
  60. data/spec/discourse_api/api/groups_spec.rb +71 -52
  61. data/spec/discourse_api/api/invite_spec.rb +41 -21
  62. data/spec/discourse_api/api/notifications_spec.rb +8 -4
  63. data/spec/discourse_api/api/params_spec.rb +5 -3
  64. data/spec/discourse_api/api/polls_spec.rb +53 -44
  65. data/spec/discourse_api/api/posts_spec.rb +33 -16
  66. data/spec/discourse_api/api/private_messages_spec.rb +25 -12
  67. data/spec/discourse_api/api/search_spec.rb +8 -3
  68. data/spec/discourse_api/api/site_settings_spec.rb +2 -3
  69. data/spec/discourse_api/api/sso_spec.rb +29 -25
  70. data/spec/discourse_api/api/topics_spec.rb +100 -31
  71. data/spec/discourse_api/api/uploads_spec.rb +16 -7
  72. data/spec/discourse_api/api/user_actions_spec.rb +13 -3
  73. data/spec/discourse_api/api/users_spec.rb +137 -55
  74. data/spec/discourse_api/client_spec.rb +32 -32
  75. data/spec/discourse_api/single_sign_on_spec.rb +15 -15
  76. data/spec/fixtures/categories.json +1 -1
  77. data/spec/spec_helper.rb +10 -15
  78. metadata +55 -12
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
- require 'spec_helper'
2
+ require "spec_helper"
3
3
 
4
4
  describe DiscourseApi::API::Users do
5
5
  subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user") }
6
6
 
7
7
  describe "#user" do
8
8
  before do
9
- stub_get("#{host}/users/test.json").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
9
+ stub_get("#{host}/users/test.json").to_return(
10
+ body: fixture("user.json"),
11
+ headers: {
12
+ content_type: "application/json",
13
+ },
14
+ )
10
15
  end
11
16
 
12
17
  it "requests the correct resource" do
@@ -27,7 +32,12 @@ describe DiscourseApi::API::Users do
27
32
 
28
33
  describe "#user_sso" do
29
34
  before do
30
- stub_get("#{host}/admin/users/15.json").to_return(body: fixture("admin_user.json"), headers: { content_type: "application/json" })
35
+ stub_get("#{host}/admin/users/15.json").to_return(
36
+ body: fixture("admin_user.json"),
37
+ headers: {
38
+ content_type: "application/json",
39
+ },
40
+ )
31
41
  end
32
42
 
33
43
  it "requests the correct resource" do
@@ -44,21 +54,37 @@ describe DiscourseApi::API::Users do
44
54
 
45
55
  describe "#update_avatar" do
46
56
  before do
47
- stub_post("#{host}/uploads").to_return(body: fixture("upload_avatar.json"), headers: { content_type: "application/json" })
48
- stub_put("#{host}/u/test_user/preferences/avatar/pick").to_return(body: fixture("user_update_avatar_success.json"), headers: { content_type: "application/json" })
57
+ stub_post("#{host}/uploads").to_return(
58
+ body: fixture("upload_avatar.json"),
59
+ headers: {
60
+ content_type: "application/json",
61
+ },
62
+ )
63
+ stub_put("#{host}/u/test_user/preferences/avatar/pick").to_return(
64
+ body: fixture("user_update_avatar_success.json"),
65
+ headers: {
66
+ content_type: "application/json",
67
+ },
68
+ )
49
69
  end
50
70
 
51
71
  it "uploads an image" do
52
- sam = "https://meta-discourse.global.ssl.fastly.net/user_avatar/meta.discourse.org/sam/120/5243.png"
72
+ sam =
73
+ "https://meta-discourse.global.ssl.fastly.net/user_avatar/meta.discourse.org/sam/120/5243.png"
53
74
  args = { url: sam }
54
- response = subject.update_avatar('test_user', args)
55
- expect(response[:body]['success']).to eq('OK')
75
+ response = subject.update_avatar("test_user", args)
76
+ expect(response[:body]["success"]).to eq("OK")
56
77
  end
57
78
  end
58
79
 
59
80
  describe "#update_email" do
60
81
  before do
61
- stub_put("#{host}/u/fake_user/preferences/email").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
82
+ stub_put("#{host}/u/fake_user/preferences/email").to_return(
83
+ body: fixture("user_update_user.json"),
84
+ headers: {
85
+ content_type: "application/json",
86
+ },
87
+ )
62
88
  end
63
89
 
64
90
  it "makes the put request" do
@@ -68,33 +94,43 @@ describe DiscourseApi::API::Users do
68
94
 
69
95
  it "returns success" do
70
96
  response = subject.update_email("fake_user", "fake_user_2@example.com")
71
- expect(response[:body]['success']).to be_truthy
97
+ expect(response[:body]["success"]).to be_truthy
72
98
  end
73
99
  end
74
100
 
75
101
  describe "#update_user" do
76
102
  before do
77
- stub_put("#{host}/u/fake_user").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
103
+ stub_put("#{host}/u/fake_user").to_return(
104
+ body: fixture("user_update_user.json"),
105
+ headers: {
106
+ content_type: "application/json",
107
+ },
108
+ )
78
109
  end
79
110
 
80
111
  it "makes the put request" do
81
- subject.api_key = 'test_d7fd0429940'
82
- subject.api_username = 'test_user'
112
+ subject.api_key = "test_d7fd0429940"
113
+ subject.api_username = "test_user"
83
114
  subject.update_user("fake_user", name: "Fake User 2")
84
115
  expect(a_put("#{host}/u/fake_user")).to have_been_made
85
116
  end
86
117
 
87
118
  it "returns success" do
88
- subject.api_key = 'test_d7fd0429940'
89
- subject.api_username = 'test_user'
119
+ subject.api_key = "test_d7fd0429940"
120
+ subject.api_username = "test_user"
90
121
  response = subject.update_user("fake_user", name: "Fake User 2")
91
- expect(response[:body]['success']).to be_truthy
122
+ expect(response[:body]["success"]).to be_truthy
92
123
  end
93
124
  end
94
125
 
95
126
  describe "#update_username" do
96
127
  before do
97
- stub_put("#{host}/u/fake_user/preferences/username").to_return(body: fixture("user_update_username.json"), headers: { content_type: "application/json" })
128
+ stub_put("#{host}/u/fake_user/preferences/username").to_return(
129
+ body: fixture("user_update_username.json"),
130
+ headers: {
131
+ content_type: "application/json",
132
+ },
133
+ )
98
134
  end
99
135
 
100
136
  it "makes the put request" do
@@ -104,30 +140,47 @@ describe DiscourseApi::API::Users do
104
140
 
105
141
  it "returns the updated username" do
106
142
  response = subject.update_username("fake_user", "fake_user_2")
107
- expect(response[:body]['username']).to eq('fake_user_2')
143
+ expect(response[:body]["username"]).to eq("fake_user_2")
108
144
  end
109
145
  end
110
146
 
111
147
  describe "#create_user" do
112
148
  before do
113
- stub_post("#{host}/users").to_return(body: fixture("user_create_success.json"), headers: { content_type: "application/json" })
149
+ stub_post("#{host}/users").to_return(
150
+ body: fixture("user_create_success.json"),
151
+ headers: {
152
+ content_type: "application/json",
153
+ },
154
+ )
114
155
  end
115
156
 
116
157
  it "makes the post request" do
117
- subject.create_user name: "Test User", email: "test2@example.com", password: "P@ssword", username: "test2"
158
+ subject.create_user name: "Test User",
159
+ email: "test2@example.com",
160
+ password: "P@ssword",
161
+ username: "test2"
118
162
  expect(a_post("#{host}/users")).to have_been_made
119
163
  end
120
164
 
121
165
  it "returns success" do
122
- response = subject.create_user name: "Test User", email: "test2@example.com", password: "P@ssword", username: "test2"
166
+ response =
167
+ subject.create_user name: "Test User",
168
+ email: "test2@example.com",
169
+ password: "P@ssword",
170
+ username: "test2"
123
171
  expect(response).to be_a Hash
124
- expect(response['success']).to be_truthy
172
+ expect(response["success"]).to be_truthy
125
173
  end
126
174
  end
127
175
 
128
176
  describe "#activate_user" do
129
177
  before do
130
- stub_put("#{host}/admin/users/15/activate").to_return(body: fixture("user_activate_success.json"), headers: { content_type: "application/json" })
178
+ stub_put("#{host}/admin/users/15/activate").to_return(
179
+ body: fixture("user_activate_success.json"),
180
+ headers: {
181
+ content_type: "application/json",
182
+ },
183
+ )
131
184
  end
132
185
 
133
186
  it "makes the put request" do
@@ -137,13 +190,18 @@ describe DiscourseApi::API::Users do
137
190
 
138
191
  it "returns success" do
139
192
  response = subject.activate(15)
140
- expect(response[:body]['success']).to eq('OK')
193
+ expect(response[:body]["success"]).to eq("OK")
141
194
  end
142
195
  end
143
196
 
144
197
  describe "#log_out_success" do
145
198
  before do
146
- stub_post("#{host}/admin/users/4/log_out").to_return(body: fixture("user_log_out_success.json"), headers: { content_type: "application/json" })
199
+ stub_post("#{host}/admin/users/4/log_out").to_return(
200
+ body: fixture("user_log_out_success.json"),
201
+ headers: {
202
+ content_type: "application/json",
203
+ },
204
+ )
147
205
  end
148
206
 
149
207
  it "makes a post request" do
@@ -154,13 +212,18 @@ describe DiscourseApi::API::Users do
154
212
  it "returns success" do
155
213
  response = subject.log_out(4)
156
214
  expect(response).to be_a Hash
157
- expect(response['success']).to eq('OK')
215
+ expect(response["success"]).to eq("OK")
158
216
  end
159
217
  end
160
218
 
161
219
  describe "#log_out_unsuccessful" do
162
220
  before do
163
- stub_post("#{host}/admin/users/90/log_out").to_return(status: 404, headers: { content_type: "application/json" })
221
+ stub_post("#{host}/admin/users/90/log_out").to_return(
222
+ status: 404,
223
+ headers: {
224
+ content_type: "application/json",
225
+ },
226
+ )
164
227
  end
165
228
 
166
229
  it "Raises API Error" do
@@ -170,16 +233,21 @@ describe DiscourseApi::API::Users do
170
233
 
171
234
  describe "#list_users" do
172
235
  before do
173
- stub_get("#{host}/admin/users/list/active.json").to_return(body: fixture("user_list.json"), headers: { content_type: "application/json" })
236
+ stub_get("#{host}/admin/users/list/active.json").to_return(
237
+ body: fixture("user_list.json"),
238
+ headers: {
239
+ content_type: "application/json",
240
+ },
241
+ )
174
242
  end
175
243
 
176
244
  it "requests the correct resource" do
177
- subject.list_users('active')
245
+ subject.list_users("active")
178
246
  expect(a_get("#{host}/admin/users/list/active.json")).to have_been_made
179
247
  end
180
248
 
181
249
  it "returns the requested users" do
182
- users = subject.list_users('active')
250
+ users = subject.list_users("active")
183
251
  expect(users).to be_an Array
184
252
  expect(users.first).to be_a Hash
185
253
  end
@@ -188,8 +256,12 @@ describe DiscourseApi::API::Users do
188
256
  describe "#update_trust_level" do
189
257
  before do
190
258
  url = "#{host}/admin/users/2/trust_level"
191
- stub_put(url).to_return(body: fixture("update_trust_level.json"),
192
- headers: { content_type: "application/json" })
259
+ stub_put(url).to_return(
260
+ body: fixture("update_trust_level.json"),
261
+ headers: {
262
+ content_type: "application/json",
263
+ },
264
+ )
193
265
  end
194
266
 
195
267
  it "makes the correct put request" do
@@ -203,15 +275,19 @@ describe DiscourseApi::API::Users do
203
275
  params = { level: 2 }
204
276
  admin_user = subject.update_trust_level(2, params)
205
277
  expect(admin_user).to be_a Hash
206
- expect(admin_user['admin_user']).to have_key('trust_level')
278
+ expect(admin_user["admin_user"]).to have_key("trust_level")
207
279
  end
208
280
  end
209
281
 
210
282
  describe "#grant admin" do
211
283
  before do
212
284
  url = "#{host}/admin/users/11/grant_admin"
213
- stub_put(url).to_return(body: fixture("user_grant_admin.json"),
214
- headers: { content_type: "application/json" })
285
+ stub_put(url).to_return(
286
+ body: fixture("user_grant_admin.json"),
287
+ headers: {
288
+ content_type: "application/json",
289
+ },
290
+ )
215
291
  end
216
292
 
217
293
  it "makes the correct put request" do
@@ -223,15 +299,19 @@ describe DiscourseApi::API::Users do
223
299
  it "makes the user an admin" do
224
300
  result = subject.grant_admin(11)
225
301
  expect(result).to be_a Hash
226
- expect(result['admin_user']['admin']).to eq(true)
302
+ expect(result["admin_user"]["admin"]).to eq(true)
227
303
  end
228
304
  end
229
305
 
230
306
  describe "#grant moderation" do
231
307
  before do
232
308
  url = "#{host}/admin/users/11/grant_moderation"
233
- stub_put(url).to_return(body: fixture("user_grant_moderator.json"),
234
- headers: { content_type: "application/json" })
309
+ stub_put(url).to_return(
310
+ body: fixture("user_grant_moderator.json"),
311
+ headers: {
312
+ content_type: "application/json",
313
+ },
314
+ )
235
315
  end
236
316
 
237
317
  it "makes the correct put request" do
@@ -243,14 +323,14 @@ describe DiscourseApi::API::Users do
243
323
  it "makes the user a moderator" do
244
324
  result = subject.grant_moderation(11)
245
325
  expect(result).to be_a Hash
246
- expect(result['admin_user']['moderator']).to eq(true)
326
+ expect(result["admin_user"]["moderator"]).to eq(true)
247
327
  end
248
328
  end
249
329
 
250
330
  describe "#revoke moderation" do
251
331
  before do
252
332
  url = "#{host}/admin/users/11/revoke_moderation"
253
- stub_put(url).to_return(body: '', status: 200)
333
+ stub_put(url).to_return(body: "", status: 200)
254
334
  end
255
335
 
256
336
  it "makes the correct put request" do
@@ -259,12 +339,16 @@ describe DiscourseApi::API::Users do
259
339
  expect(a_put(url)).to have_been_made
260
340
  expect(result.status).to eq(200)
261
341
  end
262
-
263
342
  end
264
343
 
265
344
  describe "#by_external_id" do
266
345
  before do
267
- stub_get("#{host}/users/by-external/1").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
346
+ stub_get("#{host}/users/by-external/1").to_return(
347
+ body: fixture("user.json"),
348
+ headers: {
349
+ content_type: "application/json",
350
+ },
351
+ )
268
352
  end
269
353
 
270
354
  it "requests the correct resource" do
@@ -274,18 +358,18 @@ describe DiscourseApi::API::Users do
274
358
 
275
359
  it "returns the requested user" do
276
360
  user = subject.by_external_id(1)
277
- expect(user['id']).to eq 1
361
+ expect(user["id"]).to eq 1
278
362
  end
279
363
  end
280
364
 
281
365
  describe "#suspend" do
282
366
  before do
283
367
  url = "#{host}/admin/users/11/suspend"
284
- stub_put(url).to_return(body: '', status: 200)
368
+ stub_put(url).to_return(body: "", status: 200)
285
369
  end
286
370
 
287
371
  it "makes the correct put request" do
288
- result = subject.suspend(11, '2030-01-01', "no reason")
372
+ result = subject.suspend(11, "2030-01-01", "no reason")
289
373
  url = "#{host}/admin/users/11/suspend"
290
374
  expect(a_put(url)).to have_been_made
291
375
  expect(result.status).to eq(200)
@@ -295,7 +379,7 @@ describe DiscourseApi::API::Users do
295
379
  describe "#unsuspend" do
296
380
  before do
297
381
  url = "#{host}/admin/users/11/unsuspend"
298
- stub_put(url).to_return(body: '', status: 200)
382
+ stub_put(url).to_return(body: "", status: 200)
299
383
  end
300
384
 
301
385
  it "makes the correct put request" do
@@ -309,7 +393,7 @@ describe DiscourseApi::API::Users do
309
393
  describe "#anonymize" do
310
394
  before do
311
395
  url = "#{host}/admin/users/11/anonymize"
312
- stub_put(url).to_return(body: '', status: 200)
396
+ stub_put(url).to_return(body: "", status: 200)
313
397
  end
314
398
 
315
399
  it "makes the correct put request" do
@@ -339,9 +423,7 @@ describe DiscourseApi::API::Users do
339
423
  let(:url) { "#{host}/users/check_username.json?username=sparrow" }
340
424
  let(:body) { '{"available":false,"suggestion":"sparrow1"}' }
341
425
 
342
- before do
343
- stub_get(url).to_return(body: body, headers: { content_type: "application/json" })
344
- end
426
+ before { stub_get(url).to_return(body: body, headers: { content_type: "application/json" }) }
345
427
 
346
428
  it "requests the correct resource" do
347
429
  subject.check_username("sparrow")
@@ -350,7 +432,7 @@ describe DiscourseApi::API::Users do
350
432
 
351
433
  it "returns the result" do
352
434
  result = subject.check_username("sparrow")
353
- expect(result['available']).to eq false
435
+ expect(result["available"]).to eq false
354
436
  end
355
437
 
356
438
  context "when non-URI characters are used" do
@@ -364,15 +446,15 @@ describe DiscourseApi::API::Users do
364
446
 
365
447
  it "returns the result" do
366
448
  result = subject.check_username("1_[4]! @the$#?")
367
- expect(result['errors'].first).to eq "must only include numbers, letters, dashes, and underscores"
449
+ expect(
450
+ result["errors"].first,
451
+ ).to eq "must only include numbers, letters, dashes, and underscores"
368
452
  end
369
453
  end
370
454
  end
371
455
 
372
456
  describe "#deactivate" do
373
- before do
374
- stub_put("#{host}/admin/users/15/deactivate").to_return(body: nil)
375
- end
457
+ before { stub_put("#{host}/admin/users/15/deactivate").to_return(body: nil) }
376
458
 
377
459
  it "makes the put request" do
378
460
  subject.deactivate(15)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'spec_helper'
2
+ require "spec_helper"
3
3
 
4
4
  describe DiscourseApi::Client do
5
5
  subject { DiscourseApi::Client.new(host) }
@@ -18,24 +18,24 @@ describe DiscourseApi::Client do
18
18
  end
19
19
 
20
20
  it "accepts an api key argument" do
21
- client = DiscourseApi::Client.new(host, 'test')
22
- expect(client.api_key).to eq('test')
21
+ client = DiscourseApi::Client.new(host, "test")
22
+ expect(client.api_key).to eq("test")
23
23
  end
24
24
 
25
25
  it "accepts an api username argument" do
26
- client = DiscourseApi::Client.new(host, 'test', 'test_user')
27
- expect(client.api_username).to eq('test_user')
26
+ client = DiscourseApi::Client.new(host, "test", "test_user")
27
+ expect(client.api_username).to eq("test_user")
28
28
  end
29
29
  end
30
30
 
31
31
  describe "#timeout" do
32
- context 'custom timeout' do
32
+ context "with a custom timeout" do
33
33
  it "is set to Faraday connection" do
34
34
  expect(subject.send(:connection).options.timeout).to eq(30)
35
35
  end
36
36
  end
37
37
 
38
- context 'default timeout' do
38
+ context "with the default timeout" do
39
39
  it "is set to Faraday connection" do
40
40
  subject.timeout = 25
41
41
  expect(subject.send(:connection).options.timeout).to eq(25)
@@ -50,25 +50,25 @@ describe DiscourseApi::Client do
50
50
  end
51
51
 
52
52
  describe "#api_key" do
53
- it "is publically accessible" do
53
+ it "is publicly accessible" do
54
54
  subject.api_key = "test_d7fd0429940"
55
55
  expect(subject.api_key).to eq("test_d7fd0429940")
56
56
  end
57
57
  end
58
58
 
59
59
  describe "#api_username" do
60
- it "is publically accessible" do
60
+ it "is publicly accessible" do
61
61
  subject.api_username = "test_user"
62
62
  expect(subject.api_username).to eq("test_user")
63
63
  end
64
64
  end
65
65
 
66
66
  describe "#host" do
67
- it "is publically readable" do
67
+ it "is publicly readable" do
68
68
  expect(subject.host).to eq("#{host}")
69
69
  end
70
70
 
71
- it "is not publically writeable" do
71
+ it "is not publicly writeable" do
72
72
  expect(subject).not_to respond_to(:host=)
73
73
  end
74
74
  end
@@ -87,8 +87,8 @@ describe DiscourseApi::Client do
87
87
  describe "#delete" do
88
88
  before do
89
89
  stub_delete("#{host}/test/delete").with(query: { deleted: "object" })
90
- subject.api_key = 'test_d7fd0429940'
91
- subject.api_username = 'test_user'
90
+ subject.api_key = "test_d7fd0429940"
91
+ subject.api_username = "test_user"
92
92
  end
93
93
 
94
94
  it "allows custom delete requests" do
@@ -96,16 +96,16 @@ describe DiscourseApi::Client do
96
96
  expect(a_delete("#{host}/test/delete").with(query: { deleted: "object" })).to have_been_made
97
97
  end
98
98
 
99
- context 'when using a host with a subdirectory' do
99
+ context "when using a host with a subdirectory" do
100
100
  subject { DiscourseApi::Client.new("#{host}/forum") }
101
101
 
102
- before do
103
- stub_delete("#{host}/forum/test/delete").with(query: { deleted: "object" })
104
- end
102
+ before { stub_delete("#{host}/forum/test/delete").with(query: { deleted: "object" }) }
105
103
 
106
104
  it "allows custom delete requests" do
107
105
  subject.delete("/test/delete", { deleted: "object" })
108
- expect(a_delete("#{host}/forum/test/delete").with(query: { deleted: "object" })).to have_been_made
106
+ expect(
107
+ a_delete("#{host}/forum/test/delete").with(query: { deleted: "object" }),
108
+ ).to have_been_made
109
109
  end
110
110
  end
111
111
  end
@@ -113,8 +113,8 @@ describe DiscourseApi::Client do
113
113
  describe "#post" do
114
114
  before do
115
115
  stub_post("#{host}/test/post").with(body: { created: "object" })
116
- subject.api_key = 'test_d7fd0429940'
117
- subject.api_username = 'test_user'
116
+ subject.api_key = "test_d7fd0429940"
117
+ subject.api_username = "test_user"
118
118
  end
119
119
 
120
120
  it "allows custom post requests" do
@@ -122,16 +122,16 @@ describe DiscourseApi::Client do
122
122
  expect(a_post("#{host}/test/post").with(body: { created: "object" })).to have_been_made
123
123
  end
124
124
 
125
- context 'when using a host with a subdirectory' do
125
+ context "when using a host with a subdirectory" do
126
126
  subject { DiscourseApi::Client.new("#{host}/forum") }
127
127
 
128
- before do
129
- stub_post("#{host}/forum/test/post").with(body: { created: "object" })
130
- end
128
+ before { stub_post("#{host}/forum/test/post").with(body: { created: "object" }) }
131
129
 
132
130
  it "allows custom post requests" do
133
131
  subject.post("/test/post", { created: "object" })
134
- expect(a_post("#{host}/forum/test/post").with(body: { created: "object" })).to have_been_made
132
+ expect(
133
+ a_post("#{host}/forum/test/post").with(body: { created: "object" }),
134
+ ).to have_been_made
135
135
  end
136
136
  end
137
137
  end
@@ -139,8 +139,8 @@ describe DiscourseApi::Client do
139
139
  describe "#put" do
140
140
  before do
141
141
  stub_put("#{host}/test/put").with(body: { updated: "object" })
142
- subject.api_key = 'test_d7fd0429940'
143
- subject.api_username = 'test_user'
142
+ subject.api_key = "test_d7fd0429940"
143
+ subject.api_username = "test_user"
144
144
  end
145
145
 
146
146
  it "allows custom put requests" do
@@ -148,12 +148,10 @@ describe DiscourseApi::Client do
148
148
  expect(a_put("#{host}/test/put").with(body: { updated: "object" })).to have_been_made
149
149
  end
150
150
 
151
- context 'when using a host with a subdirectory' do
151
+ context "when using a host with a subdirectory" do
152
152
  subject { DiscourseApi::Client.new("#{host}/forum") }
153
153
 
154
- before do
155
- stub_put("#{host}/forum/test/put").with(body: { updated: "object" })
156
- end
154
+ before { stub_put("#{host}/forum/test/put").with(body: { updated: "object" }) }
157
155
 
158
156
  it "allows custom post requests" do
159
157
  subject.put("/test/put", { updated: "object" })
@@ -165,7 +163,9 @@ describe DiscourseApi::Client do
165
163
  describe "#request" do
166
164
  it "catches 500 errors" do
167
165
  connection = instance_double(Faraday::Connection)
168
- allow(connection).to receive(:get).and_return(OpenStruct.new(env: { body: 'error page html' }, status: 500))
166
+ allow(connection).to receive(:get).and_return(
167
+ OpenStruct.new(env: { body: "error page html" }, status: 500),
168
+ )
169
169
  allow(Faraday).to receive(:new).and_return(connection)
170
170
  expect { subject.send(:request, :get, "/test") }.to raise_error DiscourseApi::Error
171
171
  end
@@ -1,43 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe DiscourseApi::SingleSignOn do
6
- context "::MissingConfigError" do
6
+ describe DiscourseApi::SingleSignOn::MissingConfigError do
7
7
  it "inherits from RuntimeError for backward compatibility" do
8
8
  expect(DiscourseApi::SingleSignOn::MissingConfigError).to be < RuntimeError
9
9
  end
10
10
  end
11
11
 
12
- context "::ParseError" do
12
+ describe DiscourseApi::SingleSignOn::ParseError do
13
13
  it "inherits from RuntimeError for backward compatibility" do
14
14
  expect(DiscourseApi::SingleSignOn::ParseError).to be < RuntimeError
15
15
  end
16
16
  end
17
17
 
18
- context ".sso_secret" do
18
+ describe ".sso_secret" do
19
19
  it "raises MissingConfigError when sso_secret is not present" do
20
- expect {
21
- described_class.sso_secret
22
- }.to raise_error(DiscourseApi::SingleSignOn::MissingConfigError)
20
+ expect { described_class.sso_secret }.to raise_error(
21
+ DiscourseApi::SingleSignOn::MissingConfigError,
22
+ )
23
23
  end
24
24
  end
25
25
 
26
- context ".sso_url" do
26
+ describe ".sso_url" do
27
27
  it "raises MissingConfigError when sso_url is not present" do
28
- expect {
29
- described_class.sso_url
30
- }.to raise_error(DiscourseApi::SingleSignOn::MissingConfigError)
28
+ expect { described_class.sso_url }.to raise_error(
29
+ DiscourseApi::SingleSignOn::MissingConfigError,
30
+ )
31
31
  end
32
32
  end
33
33
 
34
- context ".parse" do
34
+ describe ".parse" do
35
35
  it "raises ParseError when there's a signature mismatch" do
36
36
  sso = described_class.new
37
37
  sso.sso_secret = "abcd"
38
- expect {
39
- described_class.parse(sso.payload, "dcba")
40
- }.to raise_error(DiscourseApi::SingleSignOn::ParseError)
38
+ expect { described_class.parse(sso.payload, "dcba") }.to raise_error(
39
+ DiscourseApi::SingleSignOn::ParseError,
40
+ )
41
41
  end
42
42
  end
43
43
  end
@@ -9,7 +9,7 @@
9
9
  "categories": [
10
10
  {
11
11
  "id": 1,
12
- "n ame": "test1",
12
+ "name": "test1",
13
13
  "color": "0000FF",
14
14
  "text_color": "FFFFFF",
15
15
  "slug": "test1",