discourse_api 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +21 -21
  3. data/.travis.yml +5 -5
  4. data/CHANGELOG.md +105 -99
  5. data/Gemfile +4 -4
  6. data/Guardfile +5 -5
  7. data/LICENSE.txt +22 -22
  8. data/README.md +73 -73
  9. data/Rakefile +7 -7
  10. data/discourse_api.gemspec +35 -35
  11. data/examples/backups.rb +18 -18
  12. data/examples/category.rb +21 -21
  13. data/examples/change_topic_status.rb +33 -33
  14. data/examples/create_topic.rb +23 -23
  15. data/examples/create_user.rb +14 -14
  16. data/examples/dashboard.rb +13 -13
  17. data/examples/disposable_invite_tokens.rb +18 -18
  18. data/examples/example.rb +9 -9
  19. data/examples/groups.rb +25 -25
  20. data/examples/invite_users.rb +15 -15
  21. data/examples/post_action.rb +25 -25
  22. data/examples/search.rb +9 -9
  23. data/examples/sso.rb +14 -14
  24. data/examples/topic_lists.rb +15 -15
  25. data/examples/update_user.rb +22 -22
  26. data/lib/discourse_api.rb +5 -5
  27. data/lib/discourse_api/api/api_key.rb +31 -31
  28. data/lib/discourse_api/api/backups.rb +24 -24
  29. data/lib/discourse_api/api/badges.rb +28 -28
  30. data/lib/discourse_api/api/categories.rb +57 -57
  31. data/lib/discourse_api/api/dashboard.rb +24 -24
  32. data/lib/discourse_api/api/email.rb +15 -15
  33. data/lib/discourse_api/api/groups.rb +52 -52
  34. data/lib/discourse_api/api/invite.rb +17 -17
  35. data/lib/discourse_api/api/notifications.rb +9 -9
  36. data/lib/discourse_api/api/params.rb +55 -55
  37. data/lib/discourse_api/api/posts.rb +41 -41
  38. data/lib/discourse_api/api/private_messages.rb +10 -10
  39. data/lib/discourse_api/api/search.rb +19 -19
  40. data/lib/discourse_api/api/sso.rb +22 -22
  41. data/lib/discourse_api/api/tags.rb +10 -10
  42. data/lib/discourse_api/api/topics.rb +78 -78
  43. data/lib/discourse_api/api/users.rb +93 -85
  44. data/lib/discourse_api/client.rb +133 -133
  45. data/lib/discourse_api/error.rb +17 -17
  46. data/lib/discourse_api/single_sign_on.rb +110 -110
  47. data/lib/discourse_api/version.rb +3 -3
  48. data/routes.txt +203 -203
  49. data/spec/discourse_api/api/api_key_spec.rb +121 -121
  50. data/spec/discourse_api/api/backups_spec.rb +23 -23
  51. data/spec/discourse_api/api/badges_spec.rb +40 -40
  52. data/spec/discourse_api/api/categories_spec.rb +87 -87
  53. data/spec/discourse_api/api/email_spec.rb +39 -39
  54. data/spec/discourse_api/api/groups_spec.rb +94 -94
  55. data/spec/discourse_api/api/notifications_spec.rb +24 -24
  56. data/spec/discourse_api/api/params_spec.rb +32 -32
  57. data/spec/discourse_api/api/posts_spec.rb +41 -41
  58. data/spec/discourse_api/api/private_messages_spec.rb +22 -22
  59. data/spec/discourse_api/api/search_spec.rb +30 -30
  60. data/spec/discourse_api/api/sso_spec.rb +16 -16
  61. data/spec/discourse_api/api/topics_spec.rb +113 -113
  62. data/spec/discourse_api/api/users_spec.rb +255 -227
  63. data/spec/discourse_api/client_spec.rb +115 -115
  64. data/spec/fixtures/api.json +12 -12
  65. data/spec/fixtures/backups.json +12 -12
  66. data/spec/fixtures/badges.json +569 -569
  67. data/spec/fixtures/categories.json +72 -72
  68. data/spec/fixtures/category_latest_topics.json +92 -92
  69. data/spec/fixtures/category_topics.json +91 -91
  70. data/spec/fixtures/email_list_all.json +749 -749
  71. data/spec/fixtures/email_settings.json +13 -13
  72. data/spec/fixtures/generate_api_key.json +12 -12
  73. data/spec/fixtures/generate_master_key.json +7 -7
  74. data/spec/fixtures/groups.json +18 -18
  75. data/spec/fixtures/hot.json +113 -113
  76. data/spec/fixtures/latest.json +115 -115
  77. data/spec/fixtures/members_0.json +403 -403
  78. data/spec/fixtures/members_1.json +363 -363
  79. data/spec/fixtures/new.json +113 -113
  80. data/spec/fixtures/notifications.json +16 -16
  81. data/spec/fixtures/post.json +94 -94
  82. data/spec/fixtures/post_action_users.json +18 -18
  83. data/spec/fixtures/private_messages.json +69 -69
  84. data/spec/fixtures/regenerate_api_key.json +7 -7
  85. data/spec/fixtures/search.json +24 -24
  86. data/spec/fixtures/topic.json +739 -739
  87. data/spec/fixtures/topic_invite_user.json +3 -3
  88. data/spec/fixtures/topics_created_by.json +49 -49
  89. data/spec/fixtures/update_trust_level.json +37 -37
  90. data/spec/fixtures/upload_avatar.json +13 -13
  91. data/spec/fixtures/user.json +65 -65
  92. data/spec/fixtures/user_activate_success.json +3 -3
  93. data/spec/fixtures/user_badges.json +170 -170
  94. data/spec/fixtures/user_create_success.json +5 -5
  95. data/spec/fixtures/user_grant_admin.json +37 -37
  96. data/spec/fixtures/user_list.json +583 -583
  97. data/spec/fixtures/user_log_out_success.json +3 -3
  98. data/spec/fixtures/user_update_avatar_success.json +3 -3
  99. data/spec/fixtures/user_update_user.json +3 -3
  100. data/spec/fixtures/user_update_username.json +4 -4
  101. data/spec/spec_helper.rb +61 -61
  102. metadata +2 -2
@@ -1,22 +1,22 @@
1
- require 'spec_helper'
2
-
3
- describe DiscourseApi::API::PrivateMessages do
4
- subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
-
6
- describe "#private_messages" do
7
- before do
8
- stub_get("http://localhost:3000/topics/private-messages/test_user.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("private_messages.json"), headers: { content_type: "application/json" })
9
- end
10
-
11
- it "requests the correct resource" do
12
- subject.private_messages('test_user')
13
- expect(a_get("http://localhost:3000/topics/private-messages/test_user.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
- end
15
-
16
- it "returns the requested private messages" do
17
- private_messages = subject.private_messages('test_user')
18
- expect(private_messages).to be_an Array
19
- end
20
- end
21
-
22
- end
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::PrivateMessages do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
+
6
+ describe "#private_messages" do
7
+ before do
8
+ stub_get("http://localhost:3000/topics/private-messages/test_user.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("private_messages.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.private_messages('test_user')
13
+ expect(a_get("http://localhost:3000/topics/private-messages/test_user.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
+ end
15
+
16
+ it "returns the requested private messages" do
17
+ private_messages = subject.private_messages('test_user')
18
+ expect(private_messages).to be_an Array
19
+ end
20
+ end
21
+
22
+ end
@@ -1,30 +1,30 @@
1
- require 'spec_helper'
2
-
3
- describe DiscourseApi::API::Search do
4
- subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user" )}
5
-
6
- describe "#search" do
7
- before do
8
- stub_get("http://localhost:3000/search/query?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} ).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
9
- end
10
-
11
- it "requests the correct resource" do
12
- subject.search("test")
13
- expect(a_get("http://localhost:3000/search/query?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} )).to have_been_made
14
- end
15
-
16
- it "returns the requested search" do
17
- results = subject.search("test")
18
- expect(results).to be_an Array
19
- expect(results.first).to be_a Hash
20
- end
21
-
22
- it "raises an ArgumentError for nil" do
23
- expect { subject.search(nil) }.to raise_error(ArgumentError)
24
- end
25
-
26
- it "raises an ArgumentError for empty string" do
27
- expect { subject.search('') }.to raise_error(ArgumentError)
28
- end
29
- end
30
- end
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::Search do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user" )}
5
+
6
+ describe "#search" do
7
+ before do
8
+ stub_get("http://localhost:3000/search/query?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} ).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.search("test")
13
+ expect(a_get("http://localhost:3000/search/query?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} )).to have_been_made
14
+ end
15
+
16
+ it "returns the requested search" do
17
+ results = subject.search("test")
18
+ expect(results).to be_an Array
19
+ expect(results.first).to be_a Hash
20
+ end
21
+
22
+ it "raises an ArgumentError for nil" do
23
+ expect { subject.search(nil) }.to raise_error(ArgumentError)
24
+ end
25
+
26
+ it "raises an ArgumentError for empty string" do
27
+ expect { subject.search('') }.to raise_error(ArgumentError)
28
+ end
29
+ end
30
+ end
@@ -1,16 +1,16 @@
1
- require 'spec_helper'
2
-
3
- describe DiscourseApi::API::SSO do
4
- subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user" )}
5
-
6
- describe "#sync_sso" do
7
- before do
8
- stub_post(/.*sync_sso.*/).to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
9
- end
10
-
11
- it "requests the correct resource" do
12
- subject.sync_sso({sso_secret: "test_d7fd0429940", "custom.riffle_url" => "test"})
13
- expect(a_post(/.*sync_sso.*/)).to have_been_made
14
- end
15
- end
16
- end
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::SSO do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user" )}
5
+
6
+ describe "#sync_sso" do
7
+ before do
8
+ stub_post(/.*sync_sso.*/).to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.sync_sso({sso_secret: "test_d7fd0429940", "custom.riffle_url" => "test"})
13
+ expect(a_post(/.*sync_sso.*/)).to have_been_made
14
+ end
15
+ end
16
+ end
@@ -1,113 +1,113 @@
1
- require 'spec_helper'
2
-
3
- describe DiscourseApi::API::Topics do
4
- subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
-
6
- describe "#invite_user_to_topic" do
7
- before do
8
- stub_post("http://localhost:3000/t/12/invite?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic_invite_user.json"), headers: { content_type: "application/json" })
9
- end
10
-
11
- it "requests the correct resource" do
12
- subject.invite_user_to_topic(email: "fake_user@example.com", topic_id: 12)
13
- expect(a_post("http://localhost:3000/t/12/invite?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
- end
15
-
16
- it "returns success" do
17
- response = subject.invite_user_to_topic(email: "fake_user@example.com", topic_id: 12)
18
- expect(response).to be_a Hash
19
- expect(response['success']).to be_truthy
20
- end
21
- end
22
-
23
- describe "#latest_topics" do
24
- before do
25
- stub_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("latest.json"), headers: { content_type: "application/json" })
26
- end
27
-
28
- it "requests the correct resource" do
29
- subject.latest_topics
30
- expect(a_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
31
- end
32
-
33
- it "returns the requested topics" do
34
- topics = subject.latest_topics
35
- expect(topics).to be_an Array
36
- expect(topics.first).to be_a Hash
37
- end
38
-
39
- it "can take a hash param" do
40
- topics = subject.latest_topics({})
41
- expect(topics).to be_an Array
42
- expect(topics.first).to be_a Hash
43
- end
44
- end
45
-
46
- describe "#new_topics" do
47
- before do
48
- stub_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
49
- end
50
-
51
- it "requests the correct resource" do
52
- subject.new_topics
53
- expect(a_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
54
- end
55
-
56
- it "returns the requested topics" do
57
- subject.api_username = 'test_user'
58
- topics = subject.new_topics
59
- expect(topics).to be_an Array
60
- expect(topics.first).to be_a Hash
61
- end
62
- end
63
-
64
- describe "#topic" do
65
- before do
66
- stub_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
67
- end
68
-
69
- it "requests the correct resource" do
70
- subject.topic(57)
71
- expect(a_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
72
- end
73
-
74
- it "returns the requested topic" do
75
- topic = subject.topic(57)
76
- expect(topic).to be_a Hash
77
- expect(topic["id"]).to eq(57)
78
- end
79
- end
80
-
81
- describe "#update_topic" do
82
- before do
83
- stub_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
84
- end
85
-
86
- it "renames the topic" do
87
- subject.rename_topic(57, "A new title!")
88
- expect(a_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
89
- end
90
-
91
- it "assigns the topic a new category" do
92
- subject.recategorize_topic(57, 3)
93
- expect(a_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
94
- end
95
- end
96
-
97
- describe "#topics_by" do
98
- before do
99
- stub_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topics_created_by.json"), headers: { content_type: "application/json" })
100
- end
101
-
102
- it "requests the correct resource" do
103
- subject.topics_by('test')
104
- expect(a_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
105
- end
106
-
107
- it "returns the requested topics" do
108
- topics = subject.topics_by('test')
109
- expect(topics).to be_an Array
110
- expect(topics.first).to be_a Hash
111
- end
112
- end
113
- end
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::Topics do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
+
6
+ describe "#invite_user_to_topic" do
7
+ before do
8
+ stub_post("http://localhost:3000/t/12/invite?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic_invite_user.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.invite_user_to_topic(email: "fake_user@example.com", topic_id: 12)
13
+ expect(a_post("http://localhost:3000/t/12/invite?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
+ end
15
+
16
+ it "returns success" do
17
+ response = subject.invite_user_to_topic(email: "fake_user@example.com", topic_id: 12)
18
+ expect(response).to be_a Hash
19
+ expect(response['success']).to be_truthy
20
+ end
21
+ end
22
+
23
+ describe "#latest_topics" do
24
+ before do
25
+ stub_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("latest.json"), headers: { content_type: "application/json" })
26
+ end
27
+
28
+ it "requests the correct resource" do
29
+ subject.latest_topics
30
+ expect(a_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
31
+ end
32
+
33
+ it "returns the requested topics" do
34
+ topics = subject.latest_topics
35
+ expect(topics).to be_an Array
36
+ expect(topics.first).to be_a Hash
37
+ end
38
+
39
+ it "can take a hash param" do
40
+ topics = subject.latest_topics({})
41
+ expect(topics).to be_an Array
42
+ expect(topics.first).to be_a Hash
43
+ end
44
+ end
45
+
46
+ describe "#new_topics" do
47
+ before do
48
+ stub_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
49
+ end
50
+
51
+ it "requests the correct resource" do
52
+ subject.new_topics
53
+ expect(a_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
54
+ end
55
+
56
+ it "returns the requested topics" do
57
+ subject.api_username = 'test_user'
58
+ topics = subject.new_topics
59
+ expect(topics).to be_an Array
60
+ expect(topics.first).to be_a Hash
61
+ end
62
+ end
63
+
64
+ describe "#topic" do
65
+ before do
66
+ stub_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
67
+ end
68
+
69
+ it "requests the correct resource" do
70
+ subject.topic(57)
71
+ expect(a_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
72
+ end
73
+
74
+ it "returns the requested topic" do
75
+ topic = subject.topic(57)
76
+ expect(topic).to be_a Hash
77
+ expect(topic["id"]).to eq(57)
78
+ end
79
+ end
80
+
81
+ describe "#update_topic" do
82
+ before do
83
+ stub_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
84
+ end
85
+
86
+ it "renames the topic" do
87
+ subject.rename_topic(57, "A new title!")
88
+ expect(a_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
89
+ end
90
+
91
+ it "assigns the topic a new category" do
92
+ subject.recategorize_topic(57, 3)
93
+ expect(a_put("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
94
+ end
95
+ end
96
+
97
+ describe "#topics_by" do
98
+ before do
99
+ stub_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topics_created_by.json"), headers: { content_type: "application/json" })
100
+ end
101
+
102
+ it "requests the correct resource" do
103
+ subject.topics_by('test')
104
+ expect(a_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
105
+ end
106
+
107
+ it "returns the requested topics" do
108
+ topics = subject.topics_by('test')
109
+ expect(topics).to be_an Array
110
+ expect(topics.first).to be_a Hash
111
+ end
112
+ end
113
+ end
@@ -1,227 +1,255 @@
1
- require 'spec_helper'
2
-
3
- describe DiscourseApi::API::Users do
4
- subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
-
6
- describe "#user" do
7
- before do
8
- stub_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
9
- end
10
-
11
- it "requests the correct resource" do
12
- subject.user("test")
13
- expect(a_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
- end
15
-
16
- it "returns the requested user" do
17
- user = subject.user("test")
18
- expect(user).to be_a Hash
19
- end
20
-
21
- it "works with optional params" do
22
- user = subject.user("test", {})
23
- expect(user).to be_a Hash
24
- end
25
- end
26
-
27
- describe "#update_avatar" do
28
- before do
29
- stub_post("http://localhost:3000/uploads?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("upload_avatar.json"), headers: { content_type: "application/json" })
30
- stub_put("http://localhost:3000/users/test_user/preferences/avatar/pick?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_avatar_success.json"), headers: { content_type: "application/json" })
31
- end
32
-
33
- it "uploads an image" do
34
- sam = "https://meta-discourse.global.ssl.fastly.net/user_avatar/meta.discourse.org/sam/120/5243.png"
35
- args = { username: 'test_user', url: sam }
36
- response = subject.update_avatar(args)
37
- expect(response[:body]['success']).to eq('OK')
38
- end
39
- end
40
-
41
- describe "#update_email" do
42
- before do
43
- stub_put("http://localhost:3000/users/fake_user/preferences/email?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
44
- end
45
-
46
- it "makes the put request" do
47
- subject.update_email("fake_user", "fake_user_2@example.com")
48
- expect(a_put("http://localhost:3000/users/fake_user/preferences/email?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
49
- end
50
-
51
- it "returns success" do
52
- response = subject.update_email("fake_user", "fake_user_2@example.com")
53
- expect(response[:body]['success']).to be_truthy
54
- end
55
- end
56
-
57
- describe "#update_user" do
58
- before do
59
- stub_put("http://localhost:3000/users/fake_user?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
60
- end
61
-
62
- it "makes the put request" do
63
- subject.api_key = 'test_d7fd0429940'
64
- subject.api_username = 'test_user'
65
- subject.update_user("fake_user", name: "Fake User 2")
66
- expect(a_put("http://localhost:3000/users/fake_user?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
67
- end
68
-
69
- it "returns success" do
70
- subject.api_key = 'test_d7fd0429940'
71
- subject.api_username = 'test_user'
72
- response = subject.update_user("fake_user", name: "Fake User 2")
73
- expect(response[:body]['success']).to be_truthy
74
- end
75
- end
76
-
77
- describe "#update_username" do
78
- before do
79
- stub_put("http://localhost:3000/users/fake_user/preferences/username?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_username.json"), headers: { content_type: "application/json" })
80
- end
81
-
82
- it "makes the put request" do
83
- subject.update_username("fake_user", "fake_user_2")
84
- expect(a_put("http://localhost:3000/users/fake_user/preferences/username?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
85
- end
86
-
87
- it "returns the updated username" do
88
- response = subject.update_username("fake_user", "fake_user_2")
89
- expect(response[:body]['username']).to eq('fake_user_2')
90
- end
91
- end
92
-
93
- describe "#create_user" do
94
- before do
95
- stub_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_create_success.json"), headers: { content_type: "application/json" })
96
- end
97
-
98
- it "makes the post request" do
99
- subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
100
- expect(a_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
101
- end
102
-
103
- it "returns success" do
104
- response = subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
105
- expect(response).to be_a Hash
106
- expect(response['success']).to be_truthy
107
- end
108
- end
109
-
110
- describe "#activate_user" do
111
- before do
112
- stub_put("http://localhost:3000/admin/users/15/activate?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_activate_success.json"), headers: { content_type: "application/json" })
113
- end
114
-
115
- it "makes the put request" do
116
- subject.activate(15)
117
- expect(a_put("http://localhost:3000/admin/users/15/activate?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
118
- end
119
-
120
- it "returns success" do
121
- response = subject.activate(15)
122
- expect(response[:body]['success']).to eq('OK')
123
- end
124
- end
125
-
126
- describe "#log_out_success" do
127
- before do
128
- stub_post("http://localhost:3000/admin/users/4/log_out?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_log_out_success.json"), headers: { content_type: "application/json" })
129
- end
130
-
131
- it "makes a post request" do
132
- subject.log_out(4)
133
- expect(a_post("http://localhost:3000/admin/users/4/log_out?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
134
- end
135
-
136
- it "returns success" do
137
- response = subject.log_out(4)
138
- expect(response).to be_a Hash
139
- expect(response['success']).to eq('OK')
140
- end
141
- end
142
-
143
- describe "#log_out_unsuccessful" do
144
- before do
145
- stub_post("http://localhost:3000/admin/users/90/log_out?api_key=test_d7fd0429940&api_username=test_user").to_return(status: 404, headers: { content_type: "application/json" })
146
- end
147
-
148
- it "Raises API Error" do
149
- expect{subject.log_out(90)}.to raise_error DiscourseApi::Error
150
- end
151
- end
152
-
153
- describe "#list_users" do
154
- before do
155
- stub_get("http://localhost:3000/admin/users/list/active.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_list.json"), headers: { content_type: "application/json" })
156
- end
157
-
158
- it "requests the correct resource" do
159
- subject.list_users('active')
160
- expect(a_get("http://localhost:3000/admin/users/list/active.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
161
- end
162
-
163
- it "returns the requested users" do
164
- users = subject.list_users('active')
165
- expect(users).to be_an Array
166
- expect(users.first).to be_a Hash
167
- end
168
- end
169
-
170
- describe "#update_trust_level" do
171
- before do
172
- url = "http://localhost:3000/admin/users/2/trust_level?api_key=test_d7fd0429940&api_username=test_user"
173
- stub_put(url).to_return(body: fixture("update_trust_level.json"),
174
- headers: { content_type: "application/json" })
175
- end
176
-
177
- it "makes the correct put request" do
178
- params = { user_id: 2, level: 2 }
179
- subject.update_trust_level(params)
180
- url = "http://localhost:3000/admin/users/2/trust_level?api_key=test_d7fd0429940&api_username=test_user"
181
- expect(a_put(url)).to have_been_made
182
- end
183
-
184
- it "updates the trust_level" do
185
- params = { user_id: 2, level: 2 }
186
- admin_user = subject.update_trust_level(params)
187
- expect(admin_user).to be_a Hash
188
- expect(admin_user['admin_user']).to have_key('trust_level')
189
- end
190
- end
191
-
192
- describe "#grant admin" do
193
- before do
194
- url = "http://localhost:3000/admin/users/11/grant_admin?api_key=test_d7fd0429940&api_username=test_user"
195
- stub_put(url).to_return(body: fixture("user_grant_admin.json"),
196
- headers: { content_type: "application/json" })
197
- end
198
-
199
- it "makes the correct put request" do
200
- result = subject.grant_admin(11)
201
- url = "http://localhost:3000/admin/users/11/grant_admin?api_key=test_d7fd0429940&api_username=test_user"
202
- expect(a_put(url)).to have_been_made
203
- end
204
-
205
- it "makes the user an admin" do
206
- result = subject.grant_admin(11)
207
- expect(result).to be_a Hash
208
- expect(result['admin_user']['admin']).to eq(true)
209
- end
210
- end
211
-
212
- describe "#by_external_id" do
213
- before do
214
- stub_get("http://localhost:3000/users/by-external/1?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
215
- end
216
-
217
- it "requests the correct resource" do
218
- subject.by_external_id(1)
219
- expect(a_get("http://localhost:3000/users/by-external/1?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
220
- end
221
-
222
- it "returns the requested user" do
223
- user = subject.by_external_id(1)
224
- expect(user['id']).to eq 1
225
- end
226
- end
227
- end
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::Users do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
+
6
+ describe "#user" do
7
+ before do
8
+ stub_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "requests the correct resource" do
12
+ subject.user("test")
13
+ expect(a_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
14
+ end
15
+
16
+ it "returns the requested user" do
17
+ user = subject.user("test")
18
+ expect(user).to be_a Hash
19
+ end
20
+
21
+ it "works with optional params" do
22
+ user = subject.user("test", {})
23
+ expect(user).to be_a Hash
24
+ end
25
+ end
26
+
27
+ describe "#update_avatar" do
28
+ before do
29
+ stub_post("http://localhost:3000/uploads?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("upload_avatar.json"), headers: { content_type: "application/json" })
30
+ stub_put("http://localhost:3000/users/test_user/preferences/avatar/pick?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_avatar_success.json"), headers: { content_type: "application/json" })
31
+ end
32
+
33
+ it "uploads an image" do
34
+ sam = "https://meta-discourse.global.ssl.fastly.net/user_avatar/meta.discourse.org/sam/120/5243.png"
35
+ args = { username: 'test_user', url: sam }
36
+ response = subject.update_avatar(args)
37
+ expect(response[:body]['success']).to eq('OK')
38
+ end
39
+ end
40
+
41
+ describe "#update_email" do
42
+ before do
43
+ stub_put("http://localhost:3000/users/fake_user/preferences/email?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
44
+ end
45
+
46
+ it "makes the put request" do
47
+ subject.update_email("fake_user", "fake_user_2@example.com")
48
+ expect(a_put("http://localhost:3000/users/fake_user/preferences/email?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
49
+ end
50
+
51
+ it "returns success" do
52
+ response = subject.update_email("fake_user", "fake_user_2@example.com")
53
+ expect(response[:body]['success']).to be_truthy
54
+ end
55
+ end
56
+
57
+ describe "#update_user" do
58
+ before do
59
+ stub_put("http://localhost:3000/users/fake_user?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_user.json"), headers: { content_type: "application/json" })
60
+ end
61
+
62
+ it "makes the put request" do
63
+ subject.api_key = 'test_d7fd0429940'
64
+ subject.api_username = 'test_user'
65
+ subject.update_user("fake_user", name: "Fake User 2")
66
+ expect(a_put("http://localhost:3000/users/fake_user?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
67
+ end
68
+
69
+ it "returns success" do
70
+ subject.api_key = 'test_d7fd0429940'
71
+ subject.api_username = 'test_user'
72
+ response = subject.update_user("fake_user", name: "Fake User 2")
73
+ expect(response[:body]['success']).to be_truthy
74
+ end
75
+ end
76
+
77
+ describe "#update_username" do
78
+ before do
79
+ stub_put("http://localhost:3000/users/fake_user/preferences/username?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_update_username.json"), headers: { content_type: "application/json" })
80
+ end
81
+
82
+ it "makes the put request" do
83
+ subject.update_username("fake_user", "fake_user_2")
84
+ expect(a_put("http://localhost:3000/users/fake_user/preferences/username?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
85
+ end
86
+
87
+ it "returns the updated username" do
88
+ response = subject.update_username("fake_user", "fake_user_2")
89
+ expect(response[:body]['username']).to eq('fake_user_2')
90
+ end
91
+ end
92
+
93
+ describe "#create_user" do
94
+ before do
95
+ stub_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_create_success.json"), headers: { content_type: "application/json" })
96
+ end
97
+
98
+ it "makes the post request" do
99
+ subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
100
+ expect(a_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
101
+ end
102
+
103
+ it "returns success" do
104
+ response = subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
105
+ expect(response).to be_a Hash
106
+ expect(response['success']).to be_truthy
107
+ end
108
+ end
109
+
110
+ describe "#activate_user" do
111
+ before do
112
+ stub_put("http://localhost:3000/admin/users/15/activate?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_activate_success.json"), headers: { content_type: "application/json" })
113
+ end
114
+
115
+ it "makes the put request" do
116
+ subject.activate(15)
117
+ expect(a_put("http://localhost:3000/admin/users/15/activate?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
118
+ end
119
+
120
+ it "returns success" do
121
+ response = subject.activate(15)
122
+ expect(response[:body]['success']).to eq('OK')
123
+ end
124
+ end
125
+
126
+ describe "#log_out_success" do
127
+ before do
128
+ stub_post("http://localhost:3000/admin/users/4/log_out?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_log_out_success.json"), headers: { content_type: "application/json" })
129
+ end
130
+
131
+ it "makes a post request" do
132
+ subject.log_out(4)
133
+ expect(a_post("http://localhost:3000/admin/users/4/log_out?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
134
+ end
135
+
136
+ it "returns success" do
137
+ response = subject.log_out(4)
138
+ expect(response).to be_a Hash
139
+ expect(response['success']).to eq('OK')
140
+ end
141
+ end
142
+
143
+ describe "#log_out_unsuccessful" do
144
+ before do
145
+ stub_post("http://localhost:3000/admin/users/90/log_out?api_key=test_d7fd0429940&api_username=test_user").to_return(status: 404, headers: { content_type: "application/json" })
146
+ end
147
+
148
+ it "Raises API Error" do
149
+ expect{subject.log_out(90)}.to raise_error DiscourseApi::Error
150
+ end
151
+ end
152
+
153
+ describe "#list_users" do
154
+ before do
155
+ stub_get("http://localhost:3000/admin/users/list/active.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_list.json"), headers: { content_type: "application/json" })
156
+ end
157
+
158
+ it "requests the correct resource" do
159
+ subject.list_users('active')
160
+ expect(a_get("http://localhost:3000/admin/users/list/active.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
161
+ end
162
+
163
+ it "returns the requested users" do
164
+ users = subject.list_users('active')
165
+ expect(users).to be_an Array
166
+ expect(users.first).to be_a Hash
167
+ end
168
+ end
169
+
170
+ describe "#update_trust_level" do
171
+ before do
172
+ url = "http://localhost:3000/admin/users/2/trust_level?api_key=test_d7fd0429940&api_username=test_user"
173
+ stub_put(url).to_return(body: fixture("update_trust_level.json"),
174
+ headers: { content_type: "application/json" })
175
+ end
176
+
177
+ it "makes the correct put request" do
178
+ params = { user_id: 2, level: 2 }
179
+ subject.update_trust_level(params)
180
+ url = "http://localhost:3000/admin/users/2/trust_level?api_key=test_d7fd0429940&api_username=test_user"
181
+ expect(a_put(url)).to have_been_made
182
+ end
183
+
184
+ it "updates the trust_level" do
185
+ params = { user_id: 2, level: 2 }
186
+ admin_user = subject.update_trust_level(params)
187
+ expect(admin_user).to be_a Hash
188
+ expect(admin_user['admin_user']).to have_key('trust_level')
189
+ end
190
+ end
191
+
192
+ describe "#grant admin" do
193
+ before do
194
+ url = "http://localhost:3000/admin/users/11/grant_admin?api_key=test_d7fd0429940&api_username=test_user"
195
+ stub_put(url).to_return(body: fixture("user_grant_admin.json"),
196
+ headers: { content_type: "application/json" })
197
+ end
198
+
199
+ it "makes the correct put request" do
200
+ result = subject.grant_admin(11)
201
+ url = "http://localhost:3000/admin/users/11/grant_admin?api_key=test_d7fd0429940&api_username=test_user"
202
+ expect(a_put(url)).to have_been_made
203
+ end
204
+
205
+ it "makes the user an admin" do
206
+ result = subject.grant_admin(11)
207
+ expect(result).to be_a Hash
208
+ expect(result['admin_user']['admin']).to eq(true)
209
+ end
210
+ end
211
+
212
+ describe "#by_external_id" do
213
+ before do
214
+ stub_get("http://localhost:3000/users/by-external/1?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
215
+ end
216
+
217
+ it "requests the correct resource" do
218
+ subject.by_external_id(1)
219
+ expect(a_get("http://localhost:3000/users/by-external/1?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
220
+ end
221
+
222
+ it "returns the requested user" do
223
+ user = subject.by_external_id(1)
224
+ expect(user['id']).to eq 1
225
+ end
226
+ end
227
+
228
+ describe "#suspend" do
229
+ before do
230
+ url = "http://localhost:3000/admin/users/11/suspend?api_key=test_d7fd0429940&api_username=test_user"
231
+ stub_put(url).to_return(body: '', status: 200)
232
+ end
233
+
234
+ it "makes the correct put request" do
235
+ result = subject.suspend(11, 1, "no reason")
236
+ url = "http://localhost:3000/admin/users/11/suspend?api_key=test_d7fd0429940&api_username=test_user"
237
+ expect(a_put(url)).to have_been_made
238
+ expect(result.status).to eq(200)
239
+ end
240
+ end
241
+
242
+ describe "#unsuspend" do
243
+ before do
244
+ url = "http://localhost:3000/admin/users/11/unsuspend?api_key=test_d7fd0429940&api_username=test_user"
245
+ stub_put(url).to_return(body: '', status: 200)
246
+ end
247
+
248
+ it "makes the correct put request" do
249
+ result = subject.unsuspend(11)
250
+ url = "http://localhost:3000/admin/users/11/unsuspend?api_key=test_d7fd0429940&api_username=test_user"
251
+ expect(a_put(url)).to have_been_made
252
+ expect(result.status).to eq(200)
253
+ end
254
+ end
255
+ end