discourse_api 0.39.2 → 0.43.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +54 -0
  3. data/.gitignore +0 -2
  4. data/.rubocop.yml +2 -6
  5. data/CHANGELOG.md +38 -8
  6. data/README.md +13 -2
  7. data/discourse_api.gemspec +4 -6
  8. data/examples/change_topic_status.rb +3 -4
  9. data/examples/create_topic.rb +10 -0
  10. data/lib/discourse_api/api/api_key.rb +0 -8
  11. data/lib/discourse_api/api/categories.rb +9 -2
  12. data/lib/discourse_api/api/groups.rb +10 -2
  13. data/lib/discourse_api/api/sso.rb +1 -15
  14. data/lib/discourse_api/api/topics.rb +8 -2
  15. data/lib/discourse_api/client.rb +20 -4
  16. data/lib/discourse_api/single_sign_on.rb +32 -3
  17. data/lib/discourse_api/version.rb +1 -1
  18. data/spec/discourse_api/api/api_key_spec.rb +2 -28
  19. data/spec/discourse_api/api/backups_spec.rb +2 -1
  20. data/spec/discourse_api/api/badges_spec.rb +2 -1
  21. data/spec/discourse_api/api/categories_spec.rb +9 -8
  22. data/spec/discourse_api/api/email_spec.rb +2 -1
  23. data/spec/discourse_api/api/groups_spec.rb +7 -6
  24. data/spec/discourse_api/api/notifications_spec.rb +1 -0
  25. data/spec/discourse_api/api/params_spec.rb +8 -7
  26. data/spec/discourse_api/api/polls_spec.rb +7 -6
  27. data/spec/discourse_api/api/posts_spec.rb +1 -0
  28. data/spec/discourse_api/api/private_messages_spec.rb +1 -0
  29. data/spec/discourse_api/api/search_spec.rb +4 -3
  30. data/spec/discourse_api/api/site_settings_spec.rb +2 -1
  31. data/spec/discourse_api/api/sso_spec.rb +46 -3
  32. data/spec/discourse_api/api/topics_spec.rb +20 -1
  33. data/spec/discourse_api/api/uploads_spec.rb +1 -0
  34. data/spec/discourse_api/api/user_actions_spec.rb +1 -0
  35. data/spec/discourse_api/api/users_spec.rb +4 -3
  36. data/spec/discourse_api/client_spec.rb +11 -10
  37. data/spec/fixtures/create_topic_with_tags.json +65 -0
  38. data/spec/spec_helper.rb +2 -1
  39. metadata +17 -45
  40. data/.travis.yml +0 -11
  41. data/spec/fixtures/generate_api_key.json +0 -12
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe DiscourseApi::Client do
@@ -90,26 +91,26 @@ describe DiscourseApi::Client do
90
91
 
91
92
  describe "#post" do
92
93
  before do
93
- stub_post("#{host}/test/post").with(body: { created: "object"})
94
+ stub_post("#{host}/test/post").with(body: { created: "object" })
94
95
  subject.api_key = 'test_d7fd0429940'
95
96
  subject.api_username = 'test_user'
96
97
  end
97
98
 
98
99
  it "allows custom post requests" do
99
100
  subject.post("/test/post", { created: "object" })
100
- expect(a_post("#{host}/test/post").with(body: { created: "object"})).to have_been_made
101
+ expect(a_post("#{host}/test/post").with(body: { created: "object" })).to have_been_made
101
102
  end
102
103
 
103
104
  context 'when using a host with a subdirectory' do
104
105
  subject { DiscourseApi::Client.new("#{host}/forum") }
105
106
 
106
107
  before do
107
- stub_post("#{host}/forum/test/post").with(body: { created: "object"})
108
+ stub_post("#{host}/forum/test/post").with(body: { created: "object" })
108
109
  end
109
110
 
110
111
  it "allows custom post requests" do
111
112
  subject.post("/test/post", { created: "object" })
112
- expect(a_post("#{host}/forum/test/post").with(body: { created: "object"})).to have_been_made
113
+ expect(a_post("#{host}/forum/test/post").with(body: { created: "object" })).to have_been_made
113
114
  end
114
115
  end
115
116
  end
@@ -144,18 +145,18 @@ describe DiscourseApi::Client do
144
145
  it "catches 500 errors" do
145
146
  connection = instance_double(Faraday::Connection)
146
147
  allow(connection).to receive(:get).and_return(OpenStruct.new(env: { body: 'error page html' }, status: 500))
147
- allow(subject).to receive(:connection).and_return(connection)
148
- expect{subject.send(:request, :get, "/test")}.to raise_error DiscourseApi::Error
148
+ allow(Faraday).to receive(:new).and_return(connection)
149
+ expect { subject.send(:request, :get, "/test") }.to raise_error DiscourseApi::Error
149
150
  end
150
151
 
151
152
  it "catches Faraday errors" do
152
- allow(subject).to receive(:connection).and_raise(Faraday::ClientError.new("BOOM!"))
153
- expect{subject.send(:request, :get, "/test")}.to raise_error DiscourseApi::Error
153
+ allow(Faraday).to receive(:new).and_raise(Faraday::ClientError.new("BOOM!"))
154
+ expect { subject.send(:request, :get, "/test") }.to raise_error DiscourseApi::Error
154
155
  end
155
156
 
156
157
  it "catches JSON::ParserError errors" do
157
- allow(subject).to receive(:connection).and_raise(JSON::ParserError.new("unexpected token"))
158
- expect{subject.send(:request, :get, "/test")}.to raise_error DiscourseApi::Error
158
+ allow(Faraday).to receive(:new).and_raise(JSON::ParserError.new("unexpected token"))
159
+ expect { subject.send(:request, :get, "/test") }.to raise_error DiscourseApi::Error
159
160
  end
160
161
  end
161
162
  end
@@ -0,0 +1,65 @@
1
+ {
2
+ "id": 29,
3
+ "name": null,
4
+ "username": "blake",
5
+ "avatar_template": "/user_avatar/localhost/blake/{size}/3_2.png",
6
+ "created_at": "2020-07-09T15:52:43.802Z",
7
+ "cooked": "<p>cb8ee24eb3c5a81139958cf2b6bee9bd 2a7f7ea218e24c9ee6528cd383527f99 5a3006b92918946230385393a83b6005</p>",
8
+ "post_number": 1,
9
+ "post_type": 1,
10
+ "updated_at": "2020-07-09T15:52:43.802Z",
11
+ "reply_count": 0,
12
+ "reply_to_post_number": null,
13
+ "quote_count": 0,
14
+ "incoming_link_count": 0,
15
+ "reads": 0,
16
+ "readers_count": 0,
17
+ "score": 0,
18
+ "yours": true,
19
+ "topic_id": 21,
20
+ "topic_slug": "1412a036bfe-6480718525e-9f71f98ef46",
21
+ "display_username": null,
22
+ "primary_group_name": null,
23
+ "primary_group_flair_url": null,
24
+ "primary_group_flair_bg_color": null,
25
+ "primary_group_flair_color": null,
26
+ "version": 1,
27
+ "can_edit": true,
28
+ "can_delete": false,
29
+ "can_recover": false,
30
+ "can_wiki": true,
31
+ "user_title": null,
32
+ "actions_summary": [
33
+ {
34
+ "id": 3,
35
+ "can_act": true
36
+ },
37
+ {
38
+ "id": 4,
39
+ "can_act": true
40
+ },
41
+ {
42
+ "id": 8,
43
+ "can_act": true
44
+ },
45
+ {
46
+ "id": 7,
47
+ "can_act": true
48
+ }
49
+ ],
50
+ "moderator": false,
51
+ "admin": true,
52
+ "staff": true,
53
+ "user_id": 1,
54
+ "draft_sequence": 0,
55
+ "hidden": false,
56
+ "trust_level": 1,
57
+ "deleted_at": null,
58
+ "user_deleted": false,
59
+ "edit_reason": null,
60
+ "can_view_edit_history": true,
61
+ "wiki": false,
62
+ "reviewable_id": null,
63
+ "reviewable_score_count": 0,
64
+ "reviewable_score_pending_count": 0
65
+ }
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'simplecov'
2
3
 
3
4
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
@@ -18,7 +19,7 @@ RSpec.configure do |config|
18
19
  end
19
20
  end
20
21
 
21
- WebMock.disable_net_connect!(:allow_localhost => true)
22
+ WebMock.disable_net_connect!(allow_localhost: true)
22
23
 
23
24
  def host
24
25
  'http://localhost:3000'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.39.2
4
+ version: 0.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-04-30 00:00:00.000000000 Z
14
+ date: 2020-11-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
@@ -19,28 +19,28 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: '0.9'
22
+ version: '1.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.9'
29
+ version: '1.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: faraday_middleware
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: '0.10'
36
+ version: '1.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: '0.10'
43
+ version: '1.0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: rack
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -101,16 +101,16 @@ dependencies:
101
101
  name: rake
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: '11.1'
106
+ version: 12.3.3
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - "~>"
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: '11.1'
113
+ version: 12.3.3
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rb-inotify
116
116
  requirement: !ruby/object:Gem::Requirement
@@ -139,20 +139,6 @@ dependencies:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
141
  version: '3.4'
142
- - !ruby/object:Gem::Dependency
143
- name: rubocop
144
- requirement: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '0.69'
149
- type: :development
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - "~>"
154
- - !ruby/object:Gem::Version
155
- version: '0.69'
156
142
  - !ruby/object:Gem::Dependency
157
143
  name: simplecov
158
144
  requirement: !ruby/object:Gem::Requirement
@@ -185,30 +171,16 @@ dependencies:
185
171
  name: rubocop-discourse
186
172
  requirement: !ruby/object:Gem::Requirement
187
173
  requirements:
188
- - - "~>"
189
- - !ruby/object:Gem::Version
190
- version: '1.0'
191
- type: :development
192
- prerelease: false
193
- version_requirements: !ruby/object:Gem::Requirement
194
- requirements:
195
- - - "~>"
196
- - !ruby/object:Gem::Version
197
- version: '1.0'
198
- - !ruby/object:Gem::Dependency
199
- name: rubocop-rspec
200
- requirement: !ruby/object:Gem::Requirement
201
- requirements:
202
- - - "~>"
174
+ - - ">="
203
175
  - !ruby/object:Gem::Version
204
- version: '1.0'
176
+ version: '0'
205
177
  type: :development
206
178
  prerelease: false
207
179
  version_requirements: !ruby/object:Gem::Requirement
208
180
  requirements:
209
- - - "~>"
181
+ - - ">="
210
182
  - !ruby/object:Gem::Version
211
- version: '1.0'
183
+ version: '0'
212
184
  description: Discourse API
213
185
  email:
214
186
  - sam.saffron@gmail.com
@@ -219,9 +191,9 @@ executables: []
219
191
  extensions: []
220
192
  extra_rdoc_files: []
221
193
  files:
194
+ - ".github/workflows/ci.yml"
222
195
  - ".gitignore"
223
196
  - ".rubocop.yml"
224
- - ".travis.yml"
225
197
  - CHANGELOG.md
226
198
  - Gemfile
227
199
  - Guardfile
@@ -305,9 +277,9 @@ files:
305
277
  - spec/fixtures/categories.json
306
278
  - spec/fixtures/category_latest_topics.json
307
279
  - spec/fixtures/category_topics.json
280
+ - spec/fixtures/create_topic_with_tags.json
308
281
  - spec/fixtures/email_list_all.json
309
282
  - spec/fixtures/email_settings.json
310
- - spec/fixtures/generate_api_key.json
311
283
  - spec/fixtures/generate_master_key.json
312
284
  - spec/fixtures/group.json
313
285
  - spec/fixtures/groups.json
@@ -399,9 +371,9 @@ test_files:
399
371
  - spec/fixtures/categories.json
400
372
  - spec/fixtures/category_latest_topics.json
401
373
  - spec/fixtures/category_topics.json
374
+ - spec/fixtures/create_topic_with_tags.json
402
375
  - spec/fixtures/email_list_all.json
403
376
  - spec/fixtures/email_settings.json
404
- - spec/fixtures/generate_api_key.json
405
377
  - spec/fixtures/generate_master_key.json
406
378
  - spec/fixtures/group.json
407
379
  - spec/fixtures/groups.json
@@ -1,11 +0,0 @@
1
- language: 'ruby'
2
-
3
- before_install:
4
- - 'gem update --system'
5
- - 'gem install bundler'
6
-
7
- rvm:
8
- - '2.5.5'
9
- - '2.6.2'
10
-
11
- script: 'bundle exec rake'
@@ -1,12 +0,0 @@
1
- {
2
- "api_key": {
3
- "id": 5,
4
- "key": "e722e04df8cf6d097d565ca04eea1ff8e9e8f09beb405bae6f0c79852916f334",
5
- "user": {
6
- "id": 2,
7
- "username": "robin",
8
- "uploaded_avatar_id": 3,
9
- "avatar_template": "/user_avatar/localhost/robin/{size}/3.png"
10
- }
11
- }
12
- }