discourse_api 0.2.5 → 0.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 831e6a472cbcaff97004039ba2eea26f3a21fd75
4
- data.tar.gz: afcaa7863e713f022e40bc5b4677d69334870800
3
+ metadata.gz: 1f21e1da09f27385b726a7a6da00b6fd67a73bdb
4
+ data.tar.gz: b637a2ef55860b8024718f0b74453b1a1ff71f8d
5
5
  SHA512:
6
- metadata.gz: 60dfe37fc068b570befdd131e3ccc58f458a362e565e17b6d12371b7340abda526c3dd63c52a58d69a742ad8c10e566a5402c6945e0cf39d3013e700ba93c3d7
7
- data.tar.gz: 4df138687be5cb12299ac0f66bce1b7bce60d51f086894cbc0411ee756c1d7ebea76b94bbe002079be1ed8037cda2f9ba0f5ae3a308c0524a269843f08c6fae2
6
+ metadata.gz: 425557b85eb7f8b55607297b10b1ff2429004ba0b3de9956c983b273661a9a16f24a17574d2157b0abe2ba162f131a5288233d062584b213f1d86969bdc14c77
7
+ data.tar.gz: a0bec4403e81185fe7a990c0bf585e30f02381283bd567bda29ad9b79b26bb633bce7ffd5a79e2e7d935e82137e6e05aaf9b790a3d9d52548aeed342e564faac
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require File.expand_path('../../lib/discourse_api', __FILE__)
3
+
4
+ Dotenv.load
5
+ client = DiscourseApi::Client.new
6
+
7
+ response = client.create_group(name: "engineering_team")
8
+ group_id = response["basic_group"]["id"]
9
+
10
+ client.group_add(group_id, "sam")
11
+ client.group_add(group_id, "jeff")
12
+ client.group_add(group_id, "neil")
13
+
14
+ client.group_remove(group_id, "neil")
@@ -14,4 +14,4 @@ puts client.update_email("batman", "batman@gotham.com")
14
14
  # update avatar of user whose username is "batman"
15
15
  puts client.update_avatar("batman", "http://meta-discourse.r.worldssl.net/uploads/default/2497/724a6ef2e79d2bc7.png")
16
16
  # log out everywhere and refresh browser of user whose id is "2"
17
- puts client.log_out_and_refresh_browser(2)
17
+ puts client.log_out(2)
@@ -1,14 +1,22 @@
1
1
  module DiscourseApi
2
2
  module API
3
3
  module Groups
4
- def create_group(name:, visible: false)
4
+ def create_group(name:, visible: true)
5
5
  post("/admin/groups", group: {name: name, visible: visible.to_s})
6
6
  end
7
7
 
8
8
  def groups
9
- response = get("/admin/groups")
9
+ response = get("/admin/groups.json")
10
10
  response.body
11
11
  end
12
+
13
+ def group_add(group_id, *usernames)
14
+ patch("/admin/groups/#{group_id}", changes: {add: usernames})
15
+ end
16
+
17
+ def group_remove(group_id, *usernames)
18
+ patch("/admin/groups/#{group_id}", changes: {delete: usernames})
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -29,6 +29,7 @@ module DiscourseApi
29
29
  # Create a user
30
30
  def create_user(args={})
31
31
  # First retrieve the honeypot values
32
+ # TODO, none of this should be needed via API
32
33
  response = get("/users/hp.json")
33
34
  args[:password_confirmation] = response[:body]['value']
34
35
  args[:challenge] = response[:body]['challenge'].reverse
@@ -37,8 +38,12 @@ module DiscourseApi
37
38
  post("/users", args)
38
39
  end
39
40
 
40
- def log_out_and_refresh_browser(id)
41
- post("/admin/users/#{id}/log_out_and_refresh_browser")
41
+ def log_out(id)
42
+ post("/admin/users/#{id}/log_out")
43
+ end
44
+
45
+ def invite_admin(args={})
46
+ post("/admin/users/invite_admin", args)
42
47
  end
43
48
  end
44
49
  end
@@ -71,6 +71,10 @@ module DiscourseApi
71
71
  request(:put, path, params)
72
72
  end
73
73
 
74
+ def patch(path, params={})
75
+ request(:patch, path, params)
76
+ end
77
+
74
78
  def user_agent
75
79
  @user_agent ||= "DiscourseAPI Ruby Gem #{DiscourseApi::VERSION}"
76
80
  end
@@ -1,3 +1,3 @@
1
1
  module DiscourseApi
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.7"
3
3
  end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::Groups do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user" )}
5
+
6
+ describe "#groups" do
7
+ before do
8
+ stub_get("http://localhost:3000/admin/groups.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("groups.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.groups
13
+ expect(a_get("http://localhost:3000/admin/groups.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
+ end
15
+
16
+ it "returns the requested groups" do
17
+ groups = subject.groups
18
+ expect(groups).to be_an Array
19
+ groups.each { |g| expect(g).to be_a Hash }
20
+ end
21
+
22
+ it "create new groups" do
23
+ stub_post("http://localhost:3000/admin/groups?api_key=test_d7fd0429940&api_username=test_user")
24
+ subject.create_group(name: "test_group")
25
+ expect(a_post("http://localhost:3000/admin/groups?api_key=test_d7fd0429940&api_username=test_user").
26
+ with(body: {group: {name: "test_group", visible: "true"}})
27
+ ).to have_been_made
28
+ end
29
+
30
+ it "adds members" do
31
+ stub_request(:patch, "http://localhost:3000/admin/groups/123?api_key=test_d7fd0429940&api_username=test_user")
32
+ subject.group_add(123, "sam")
33
+ expect(a_request(:patch, "http://localhost:3000/admin/groups/123?api_key=test_d7fd0429940&api_username=test_user").
34
+ with(body: {changes: {add: [ "sam" ]}})
35
+ ).to have_been_made
36
+ end
37
+
38
+ it "removes members" do
39
+ stub_request(:patch, "http://localhost:3000/admin/groups/123?api_key=test_d7fd0429940&api_username=test_user")
40
+ subject.group_remove(123, "sam")
41
+ expect(a_request(:patch, "http://localhost:3000/admin/groups/123?api_key=test_d7fd0429940&api_username=test_user").
42
+ with(body: {changes: {delete: [ "sam" ]}})
43
+ ).to have_been_made
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "id": 101,
4
+ "name": "group_1",
5
+ "user_count": 17,
6
+ "automatic": false,
7
+ "alias_level": 0,
8
+ "visible": true
9
+ },
10
+ {
11
+ "id": 102,
12
+ "name": "group_2",
13
+ "user_count": 4,
14
+ "automatic": false,
15
+ "alias_level": 0,
16
+ "visible": true
17
+ }
18
+ ]
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.2.5
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-11-21 00:00:00.000000000 Z
13
+ date: 2014-11-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -201,6 +201,7 @@ files:
201
201
  - examples/create_topic.rb
202
202
  - examples/disposable_invite_tokens.rb
203
203
  - examples/example.rb
204
+ - examples/groups.rb
204
205
  - examples/invite_users.rb
205
206
  - examples/sso.rb
206
207
  - examples/topic_lists.rb
@@ -222,6 +223,7 @@ files:
222
223
  - lib/single_sign_on.rb
223
224
  - routes.txt
224
225
  - spec/discourse_api/api/categories_spec.rb
226
+ - spec/discourse_api/api/groups_spec.rb
225
227
  - spec/discourse_api/api/notifications_spec.rb
226
228
  - spec/discourse_api/api/private_messages_spec.rb
227
229
  - spec/discourse_api/api/search_spec.rb
@@ -230,6 +232,7 @@ files:
230
232
  - spec/discourse_api/client_spec.rb
231
233
  - spec/fixtures/categories.json
232
234
  - spec/fixtures/category_latest_topics.json
235
+ - spec/fixtures/groups.json
233
236
  - spec/fixtures/hot.json
234
237
  - spec/fixtures/latest.json
235
238
  - spec/fixtures/new.json
@@ -270,6 +273,7 @@ specification_version: 4
270
273
  summary: Allows access to the Discourse API
271
274
  test_files:
272
275
  - spec/discourse_api/api/categories_spec.rb
276
+ - spec/discourse_api/api/groups_spec.rb
273
277
  - spec/discourse_api/api/notifications_spec.rb
274
278
  - spec/discourse_api/api/private_messages_spec.rb
275
279
  - spec/discourse_api/api/search_spec.rb
@@ -278,6 +282,7 @@ test_files:
278
282
  - spec/discourse_api/client_spec.rb
279
283
  - spec/fixtures/categories.json
280
284
  - spec/fixtures/category_latest_topics.json
285
+ - spec/fixtures/groups.json
281
286
  - spec/fixtures/hot.json
282
287
  - spec/fixtures/latest.json
283
288
  - spec/fixtures/new.json