slack-ruby-client 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +2 -0
  3. data/.github/workflows/test.yml +6 -0
  4. data/.github/workflows/update_api.yml +76 -0
  5. data/.gitignore +1 -0
  6. data/.rubocop_todo.yml +17 -29
  7. data/CHANGELOG.md +23 -1
  8. data/CONTRIBUTING.md +35 -32
  9. data/Gemfile +2 -0
  10. data/README.md +123 -14
  11. data/bin/commands/admin_apps_activities.rb +32 -0
  12. data/bin/commands/admin_apps_approved.rb +1 -0
  13. data/bin/commands/admin_apps_config.rb +31 -0
  14. data/bin/commands/admin_apps_requests.rb +1 -0
  15. data/bin/commands/admin_apps_restricted.rb +1 -0
  16. data/bin/commands/admin_functions.rb +23 -0
  17. data/bin/commands/admin_functions_permissions.rb +31 -0
  18. data/bin/commands/admin_roles.rb +1 -1
  19. data/bin/commands/admin_teams.rb +1 -1
  20. data/bin/commands/admin_users.rb +2 -2
  21. data/bin/commands/admin_workflows.rb +38 -0
  22. data/bin/commands/admin_workflows_collaborators.rb +31 -0
  23. data/bin/commands/admin_workflows_permissions.rb +21 -0
  24. data/bin/commands/apps_activities.rb +32 -0
  25. data/bin/commands/apps_auth_external.rb +32 -0
  26. data/bin/commands/apps_datastore.rb +70 -0
  27. data/bin/commands/auth_teams.rb +2 -2
  28. data/bin/commands/calls.rb +1 -1
  29. data/bin/commands/chat.rb +6 -6
  30. data/bin/commands/chat_scheduledMessages.rb +2 -2
  31. data/bin/commands/conversations.rb +3 -3
  32. data/bin/commands/dnd.rb +1 -1
  33. data/bin/commands/functions_workflows_steps.rb +2 -1
  34. data/bin/commands/functions_workflows_steps_responses.rb +2 -1
  35. data/bin/commands/reminders.rb +1 -1
  36. data/bin/commands/stars.rb +4 -4
  37. data/bin/commands/team.rb +3 -1
  38. data/bin/commands/users.rb +1 -1
  39. data/lib/slack/messages/formatting.rb +44 -0
  40. data/lib/slack/real_time/client.rb +14 -2
  41. data/lib/slack/real_time/concurrency/async.rb +4 -0
  42. data/lib/slack/real_time/config.rb +3 -0
  43. data/lib/slack/real_time/socket.rb +4 -0
  44. data/lib/slack/real_time/stores/starter.rb +2 -2
  45. data/lib/slack/real_time/stores/store.rb +2 -2
  46. data/lib/slack/version.rb +1 -1
  47. data/lib/slack/web/api/endpoints/admin_apps_activities.rb +53 -0
  48. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +2 -0
  49. data/lib/slack/web/api/endpoints/admin_apps_config.rb +40 -0
  50. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +2 -0
  51. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +2 -0
  52. data/lib/slack/web/api/endpoints/admin_conversations.rb +1 -0
  53. data/lib/slack/web/api/endpoints/admin_functions.rb +36 -0
  54. data/lib/slack/web/api/endpoints/admin_functions_permissions.rb +41 -0
  55. data/lib/slack/web/api/endpoints/admin_roles.rb +1 -1
  56. data/lib/slack/web/api/endpoints/admin_teams.rb +1 -1
  57. data/lib/slack/web/api/endpoints/admin_users.rb +2 -2
  58. data/lib/slack/web/api/endpoints/admin_workflows.rb +59 -0
  59. data/lib/slack/web/api/endpoints/admin_workflows_collaborators.rb +42 -0
  60. data/lib/slack/web/api/endpoints/admin_workflows_permissions.rb +26 -0
  61. data/lib/slack/web/api/endpoints/apps_activities.rb +54 -0
  62. data/lib/slack/web/api/endpoints/apps_auth_external.rb +41 -0
  63. data/lib/slack/web/api/endpoints/apps_datastore.rb +110 -0
  64. data/lib/slack/web/api/endpoints/apps_manifest.rb +2 -0
  65. data/lib/slack/web/api/endpoints/auth_teams.rb +1 -1
  66. data/lib/slack/web/api/endpoints/calls.rb +1 -1
  67. data/lib/slack/web/api/endpoints/chat.rb +14 -45
  68. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +2 -2
  69. data/lib/slack/web/api/endpoints/conversations.rb +3 -3
  70. data/lib/slack/web/api/endpoints/dialog.rb +1 -6
  71. data/lib/slack/web/api/endpoints/dnd.rb +1 -1
  72. data/lib/slack/web/api/endpoints/functions_workflows_steps.rb +3 -1
  73. data/lib/slack/web/api/endpoints/functions_workflows_steps_responses.rb +3 -1
  74. data/lib/slack/web/api/endpoints/reminders.rb +1 -1
  75. data/lib/slack/web/api/endpoints/stars.rb +2 -2
  76. data/lib/slack/web/api/endpoints/team.rb +12 -2
  77. data/lib/slack/web/api/endpoints/users.rb +1 -1
  78. data/lib/slack/web/api/endpoints/users_profile.rb +1 -0
  79. data/lib/slack/web/api/endpoints/views.rb +7 -23
  80. data/lib/slack/web/api/endpoints/workflows.rb +2 -0
  81. data/lib/slack/web/api/endpoints.rb +20 -0
  82. data/lib/slack/web/api/errors.rb +66 -4
  83. data/lib/slack/web/api/options.rb +26 -0
  84. data/lib/slack/web/api/patches/chat.attachments-blocks.patch +7 -55
  85. data/lib/slack/web/api/templates/method.erb +12 -0
  86. data/lib/slack/web/api/templates/method_spec.erb +40 -4
  87. data/lib/slack/web/client.rb +1 -0
  88. data/lib/slack-ruby-client.rb +1 -0
  89. data/lib/tasks/web.rake +2 -4
  90. data/slack-ruby-client.gemspec +1 -0
  91. data/spec/slack/messages/formatting_spec.rb +60 -0
  92. data/spec/slack/real_time/client_spec.rb +25 -7
  93. data/spec/slack/real_time/concurrency/clients/async_spec.rb +16 -0
  94. data/spec/slack/web/api/endpoints/admin_apps_activities_spec.rb +8 -0
  95. data/spec/slack/web/api/endpoints/admin_apps_config_spec.rb +18 -0
  96. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +6 -6
  97. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +14 -10
  98. data/spec/slack/web/api/endpoints/admin_functions_permissions_spec.rb +21 -0
  99. data/spec/slack/web/api/endpoints/admin_functions_spec.rb +13 -0
  100. data/spec/slack/web/api/endpoints/admin_roles_spec.rb +6 -6
  101. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +1 -1
  102. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +6 -6
  103. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +2 -2
  104. data/spec/slack/web/api/endpoints/admin_users_spec.rb +8 -8
  105. data/spec/slack/web/api/endpoints/admin_workflows_collaborators_spec.rb +24 -0
  106. data/spec/slack/web/api/endpoints/admin_workflows_permissions_spec.rb +13 -0
  107. data/spec/slack/web/api/endpoints/admin_workflows_spec.rb +13 -0
  108. data/spec/slack/web/api/endpoints/apps_activities_spec.rb +13 -0
  109. data/spec/slack/web/api/endpoints/apps_auth_external_spec.rb +13 -0
  110. data/spec/slack/web/api/endpoints/apps_datastore_spec.rb +45 -0
  111. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +8 -0
  112. data/spec/slack/web/api/endpoints/apps_spec.rb +2 -2
  113. data/spec/slack/web/api/endpoints/auth_spec.rb +8 -0
  114. data/spec/slack/web/api/endpoints/bookmarks_spec.rb +4 -4
  115. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +4 -4
  116. data/spec/slack/web/api/endpoints/calls_spec.rb +2 -2
  117. data/spec/slack/web/api/endpoints/chat_spec.rb +62 -0
  118. data/spec/slack/web/api/endpoints/conversations_spec.rb +8 -0
  119. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +3 -3
  120. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +1 -1
  121. data/spec/slack/web/api/endpoints/dialog_spec.rb +14 -0
  122. data/spec/slack/web/api/endpoints/files_comments_spec.rb +2 -2
  123. data/spec/slack/web/api/endpoints/files_remote_spec.rb +3 -3
  124. data/spec/slack/web/api/endpoints/files_spec.rb +2 -2
  125. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +2 -2
  126. data/spec/slack/web/api/endpoints/reactions_spec.rb +3 -3
  127. data/spec/slack/web/api/endpoints/reminders_spec.rb +2 -2
  128. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +2 -2
  129. data/spec/slack/web/api/endpoints/users_profile_spec.rb +6 -0
  130. data/spec/slack/web/api/endpoints/users_spec.rb +8 -0
  131. data/spec/slack/web/api/endpoints/views_spec.rb +65 -0
  132. data/spec/slack/web/api/endpoints/workflows_spec.rb +8 -0
  133. data/spec/slack/web/api/options_spec.rb +69 -0
  134. data/spec/spec_helper.rb +9 -0
  135. metadata +45 -5
  136. data/lib/slack/web/api/patches/dialog.encoded-json.patch +0 -17
  137. data/lib/slack/web/api/patches/views.view-json.patch +0 -55
@@ -7,10 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Apps do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'apps_uninstall' do
9
9
  it 'requires client_id' do
10
- expect { client.apps_uninstall(client_secret: %q[]) }.to raise_error ArgumentError, /Required arguments :client_id missing/
10
+ expect { client.apps_uninstall(client_secret: %q[f25b5ceaf8a3c2a2c4f52bb4f0b0499e]) }.to raise_error ArgumentError, /Required arguments :client_id missing/
11
11
  end
12
12
  it 'requires client_secret' do
13
- expect { client.apps_uninstall(client_id: %q[]) }.to raise_error ArgumentError, /Required arguments :client_secret missing/
13
+ expect { client.apps_uninstall(client_id: %q[56579136444.26251006572]) }.to raise_error ArgumentError, /Required arguments :client_secret missing/
14
14
  end
15
15
  end
16
16
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Auth do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -10,15 +10,15 @@ RSpec.describe Slack::Web::Api::Endpoints::Bookmarks do
10
10
  expect { client.bookmarks_add(title: %q[], type: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
11
11
  end
12
12
  it 'requires title' do
13
- expect { client.bookmarks_add(channel_id: %q[], type: %q[]) }.to raise_error ArgumentError, /Required arguments :title missing/
13
+ expect { client.bookmarks_add(channel_id: %q[C1234567890], type: %q[]) }.to raise_error ArgumentError, /Required arguments :title missing/
14
14
  end
15
15
  it 'requires type' do
16
- expect { client.bookmarks_add(channel_id: %q[], title: %q[]) }.to raise_error ArgumentError, /Required arguments :type missing/
16
+ expect { client.bookmarks_add(channel_id: %q[C1234567890], title: %q[]) }.to raise_error ArgumentError, /Required arguments :type missing/
17
17
  end
18
18
  end
19
19
  context 'bookmarks_edit' do
20
20
  it 'requires bookmark_id' do
21
- expect { client.bookmarks_edit(channel_id: %q[]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
21
+ expect { client.bookmarks_edit(channel_id: %q[C1234567890]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
22
22
  end
23
23
  it 'requires channel_id' do
24
24
  expect { client.bookmarks_edit(bookmark_id: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
@@ -31,7 +31,7 @@ RSpec.describe Slack::Web::Api::Endpoints::Bookmarks do
31
31
  end
32
32
  context 'bookmarks_remove' do
33
33
  it 'requires bookmark_id' do
34
- expect { client.bookmarks_remove(channel_id: %q[]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
34
+ expect { client.bookmarks_remove(channel_id: %q[C1234567890]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
35
35
  end
36
36
  it 'requires channel_id' do
37
37
  expect { client.bookmarks_remove(bookmark_id: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
@@ -7,18 +7,18 @@ RSpec.describe Slack::Web::Api::Endpoints::CallsParticipants do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'calls.participants_add' do
9
9
  it 'requires id' do
10
- expect { client.calls_participants_add(users: %q[]) }.to raise_error ArgumentError, /Required arguments :id missing/
10
+ expect { client.calls_participants_add(users: %q[[{"slack_id": "U1H77"}, {"external_id": "54321678", "display_name": "External User", "avatar_url": "https://example.com/users/avatar1234.jpg"}]]) }.to raise_error ArgumentError, /Required arguments :id missing/
11
11
  end
12
12
  it 'requires users' do
13
- expect { client.calls_participants_add(id: %q[]) }.to raise_error ArgumentError, /Required arguments :users missing/
13
+ expect { client.calls_participants_add(id: %q[R0E69JAIF]) }.to raise_error ArgumentError, /Required arguments :users missing/
14
14
  end
15
15
  end
16
16
  context 'calls.participants_remove' do
17
17
  it 'requires id' do
18
- expect { client.calls_participants_remove(users: %q[]) }.to raise_error ArgumentError, /Required arguments :id missing/
18
+ expect { client.calls_participants_remove(users: %q[[{"slack_id": "U1H77"}, {"external_id": "54321678", "display_name": "External User", "avatar_url": "https://example.com/users/avatar1234.jpg"}]]) }.to raise_error ArgumentError, /Required arguments :id missing/
19
19
  end
20
20
  it 'requires users' do
21
- expect { client.calls_participants_remove(id: %q[]) }.to raise_error ArgumentError, /Required arguments :users missing/
21
+ expect { client.calls_participants_remove(id: %q[R0E69JAIF]) }.to raise_error ArgumentError, /Required arguments :users missing/
22
22
  end
23
23
  end
24
24
  end
@@ -7,10 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Calls do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'calls_add' do
9
9
  it 'requires external_unique_id' do
10
- expect { client.calls_add(join_url: %q[]) }.to raise_error ArgumentError, /Required arguments :external_unique_id missing/
10
+ expect { client.calls_add(join_url: %q[https://example.com/calls/1234567890]) }.to raise_error ArgumentError, /Required arguments :external_unique_id missing/
11
11
  end
12
12
  it 'requires join_url' do
13
- expect { client.calls_add(external_unique_id: %q[]) }.to raise_error ArgumentError, /Required arguments :join_url missing/
13
+ expect { client.calls_add(external_unique_id: %q[025169F6-E37A-4E62-BB54-7F93A0FC4C1F]) }.to raise_error ArgumentError, /Required arguments :join_url missing/
14
14
  end
15
15
  end
16
16
  context 'calls_end' do
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Chat do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'chat_postEphemeral' do
9
+ it 'encodes attachments, blocks as json' do
10
+ expect(client).to receive(:post).with('chat.postEphemeral', {channel: %q[C1234567890], text: %q[Hello world], user: %q[U0BPQUNTA], attachments: %q[{"data":["data"]}], blocks: %q[{"data":["data"]}]})
11
+ client.chat_postEphemeral(channel: %q[C1234567890], text: %q[Hello world], user: %q[U0BPQUNTA], attachments: {:data=>["data"]}, blocks: {:data=>["data"]})
12
+ end
13
+ end
14
+ context 'chat_postMessage' do
15
+ it 'requires one of attachments, blocks, text' do
16
+ expect { client.chat_postMessage(channel: %q[C1234567890]) }.to raise_error ArgumentError, /At least one of/
17
+
18
+ expect(client).to receive(:post).with('chat.postMessage', {attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], channel: %q[C1234567890]})
19
+ client.chat_postMessage(attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], channel: %q[C1234567890])
20
+
21
+ expect(client).to receive(:post).with('chat.postMessage', {blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], channel: %q[C1234567890]})
22
+ client.chat_postMessage(blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], channel: %q[C1234567890])
23
+
24
+ expect(client).to receive(:post).with('chat.postMessage', {text: %q[Hello world], channel: %q[C1234567890]})
25
+ client.chat_postMessage(text: %q[Hello world], channel: %q[C1234567890])
26
+
27
+ expect(client).to receive(:post).with('chat.postMessage', {attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], channel: %q[C1234567890]})
28
+ client.chat_postMessage(attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], channel: %q[C1234567890])
29
+
30
+ expect(client).to receive(:post).with('chat.postMessage', {attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], text: %q[Hello world], channel: %q[C1234567890]})
31
+ client.chat_postMessage(attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], text: %q[Hello world], channel: %q[C1234567890])
32
+
33
+ expect(client).to receive(:post).with('chat.postMessage', {blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], text: %q[Hello world], channel: %q[C1234567890]})
34
+ client.chat_postMessage(blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], text: %q[Hello world], channel: %q[C1234567890])
35
+
36
+ expect(client).to receive(:post).with('chat.postMessage', {attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], text: %q[Hello world], channel: %q[C1234567890]})
37
+ client.chat_postMessage(attachments: %q[[{"pretext": "pre-hello", "text": "text-world"}]], blocks: %q[[{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]], text: %q[Hello world], channel: %q[C1234567890])
38
+ end
39
+ it 'encodes attachments, blocks, metadata as json' do
40
+ expect(client).to receive(:post).with('chat.postMessage', {channel: %q[C1234567890], attachments: %q[{"data":["data"]}], blocks: %q[{"data":["data"]}], metadata: %q[{"data":["data"]}]})
41
+ client.chat_postMessage(channel: %q[C1234567890], attachments: {:data=>["data"]}, blocks: {:data=>["data"]}, metadata: {:data=>["data"]})
42
+ end
43
+ end
44
+ context 'chat_scheduleMessage' do
45
+ it 'encodes attachments, blocks, metadata as json' do
46
+ expect(client).to receive(:post).with('chat.scheduleMessage', {channel: %q[C1234567890], post_at: %q[299876400], text: %q[Hello world], attachments: %q[{"data":["data"]}], blocks: %q[{"data":["data"]}], metadata: %q[{"data":["data"]}]})
47
+ client.chat_scheduleMessage(channel: %q[C1234567890], post_at: %q[299876400], text: %q[Hello world], attachments: {:data=>["data"]}, blocks: {:data=>["data"]}, metadata: {:data=>["data"]})
48
+ end
49
+ end
50
+ context 'chat_unfurl' do
51
+ it 'encodes unfurls, user_auth_blocks as json' do
52
+ expect(client).to receive(:post).with('chat.unfurl', {channel: %q[C1234567890], ts: %q[], unfurls: %q[{"data":["data"]}], user_auth_blocks: %q[{"data":["data"]}]})
53
+ client.chat_unfurl(channel: %q[C1234567890], ts: %q[], unfurls: {:data=>["data"]}, user_auth_blocks: {:data=>["data"]})
54
+ end
55
+ end
56
+ context 'chat_update' do
57
+ it 'encodes attachments, blocks, metadata as json' do
58
+ expect(client).to receive(:post).with('chat.update', {channel: %q[C1234567890], ts: %q["1405894322.002768"], attachments: %q[{"data":["data"]}], blocks: %q[{"data":["data"]}], metadata: %q[{"data":["data"]}]})
59
+ client.chat_update(channel: %q[C1234567890], ts: %q["1405894322.002768"], attachments: {:data=>["data"]}, blocks: {:data=>["data"]}, metadata: {:data=>["data"]})
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Conversations do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -34,7 +34,7 @@ RSpec.describe Slack::Web::Api::Endpoints::Chat do
34
34
  context 'text and user arguments' do
35
35
  it 'requires text or attachments' do
36
36
  expect { client.chat_postEphemeral(channel: 'channel') }.to(
37
- raise_error(ArgumentError, /Required arguments :text, :attachments or :blocks missing/)
37
+ raise_error(ArgumentError, /At least one of :attachments, :blocks, :text is required/)
38
38
  )
39
39
  end
40
40
 
@@ -108,7 +108,7 @@ RSpec.describe Slack::Web::Api::Endpoints::Chat do
108
108
  context 'text, attachment and blocks arguments' do
109
109
  it 'requires text, attachments or blocks' do
110
110
  expect { client.chat_postMessage(channel: 'channel') }.to(
111
- raise_error(ArgumentError, /Required arguments :text, :attachments or :blocks missing/)
111
+ raise_error(ArgumentError, /At least one of :attachments, :blocks, :text is required/)
112
112
  )
113
113
  end
114
114
 
@@ -167,7 +167,7 @@ RSpec.describe Slack::Web::Api::Endpoints::Chat do
167
167
  context 'text, attachment and blocks arguments' do
168
168
  it 'requires text, attachments, blocks or reply_broadcast' do
169
169
  expect { client.chat_update(channel: 'channel', ts: ts) }.to(
170
- raise_error(ArgumentError, /Required arguments :text, :attachments, :blocks or :reply_broadcast missing/)
170
+ raise_error(ArgumentError, /At least one of :attachments, :blocks, :text, :reply_broadcast is required/)
171
171
  )
172
172
  end
173
173
 
@@ -104,7 +104,7 @@ RSpec.describe Slack::Web::Api::Endpoints::Views do
104
104
  it 'raises error' do
105
105
  expect do
106
106
  client.views_update(external_id: trigger_id, view_id: view_id, view: 'celery man')
107
- end.to raise_error ArgumentError, 'One of :external_id, :view_id is required'
107
+ end.to raise_error ArgumentError, 'Exactly one of :external_id, :view_id is required'
108
108
  end
109
109
  end
110
110
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Dialog do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'dialog_open' do
9
+ it 'encodes dialog as json' do
10
+ expect(client).to receive(:post).with('dialog.open', {dialog: %q[{"data":["data"]}], trigger_id: %q[12345.98765.abcd2358fdea]})
11
+ client.dialog_open(dialog: {:data=>["data"]}, trigger_id: %q[12345.98765.abcd2358fdea])
12
+ end
13
+ end
14
+ end
@@ -7,10 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::FilesComments do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'files.comments_delete' do
9
9
  it 'requires file' do
10
- expect { client.files_comments_delete(id: %q[]) }.to raise_error ArgumentError, /Required arguments :file missing/
10
+ expect { client.files_comments_delete(id: %q[Fc1234567890]) }.to raise_error ArgumentError, /Required arguments :file missing/
11
11
  end
12
12
  it 'requires id' do
13
- expect { client.files_comments_delete(file: %q[]) }.to raise_error ArgumentError, /Required arguments :id missing/
13
+ expect { client.files_comments_delete(file: %q[F1234567890]) }.to raise_error ArgumentError, /Required arguments :id missing/
14
14
  end
15
15
  end
16
16
  end
@@ -7,13 +7,13 @@ RSpec.describe Slack::Web::Api::Endpoints::FilesRemote do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'files.remote_add' do
9
9
  it 'requires external_id' do
10
- expect { client.files_remote_add(external_url: %q[], title: %q[]) }.to raise_error ArgumentError, /Required arguments :external_id missing/
10
+ expect { client.files_remote_add(external_url: %q[http://example.com/my_cloud_service_file/abc123], title: %q[Danger, High Voltage!]) }.to raise_error ArgumentError, /Required arguments :external_id missing/
11
11
  end
12
12
  it 'requires external_url' do
13
- expect { client.files_remote_add(external_id: %q[], title: %q[]) }.to raise_error ArgumentError, /Required arguments :external_url missing/
13
+ expect { client.files_remote_add(external_id: %q[123456], title: %q[Danger, High Voltage!]) }.to raise_error ArgumentError, /Required arguments :external_url missing/
14
14
  end
15
15
  it 'requires title' do
16
- expect { client.files_remote_add(external_id: %q[], external_url: %q[]) }.to raise_error ArgumentError, /Required arguments :title missing/
16
+ expect { client.files_remote_add(external_id: %q[123456], external_url: %q[http://example.com/my_cloud_service_file/abc123]) }.to raise_error ArgumentError, /Required arguments :title missing/
17
17
  end
18
18
  end
19
19
  context 'files.remote_share' do
@@ -25,10 +25,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Files do
25
25
  end
26
26
  context 'files_getUploadURLExternal' do
27
27
  it 'requires filename' do
28
- expect { client.files_getUploadURLExternal(length: %q[]) }.to raise_error ArgumentError, /Required arguments :filename missing/
28
+ expect { client.files_getUploadURLExternal(length: %q[53072]) }.to raise_error ArgumentError, /Required arguments :filename missing/
29
29
  end
30
30
  it 'requires length' do
31
- expect { client.files_getUploadURLExternal(filename: %q[]) }.to raise_error ArgumentError, /Required arguments :length missing/
31
+ expect { client.files_getUploadURLExternal(filename: %q[laughingoutloudcat.jpg]) }.to raise_error ArgumentError, /Required arguments :length missing/
32
32
  end
33
33
  end
34
34
  context 'files_info' do
@@ -7,10 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::OauthV2 do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'oauth.v2_exchange' do
9
9
  it 'requires client_id' do
10
- expect { client.oauth_v2_exchange(client_secret: %q[]) }.to raise_error ArgumentError, /Required arguments :client_id missing/
10
+ expect { client.oauth_v2_exchange(client_secret: %q[e1b9e11dfcd19c1982d5de12921e17e8c]) }.to raise_error ArgumentError, /Required arguments :client_id missing/
11
11
  end
12
12
  it 'requires client_secret' do
13
- expect { client.oauth_v2_exchange(client_id: %q[]) }.to raise_error ArgumentError, /Required arguments :client_secret missing/
13
+ expect { client.oauth_v2_exchange(client_id: %q[4123121235.9872358710]) }.to raise_error ArgumentError, /Required arguments :client_secret missing/
14
14
  end
15
15
  end
16
16
  end
@@ -7,13 +7,13 @@ RSpec.describe Slack::Web::Api::Endpoints::Reactions do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'reactions_add' do
9
9
  it 'requires channel' do
10
- expect { client.reactions_add(name: %q[], timestamp: %q[]) }.to raise_error ArgumentError, /Required arguments :channel missing/
10
+ expect { client.reactions_add(name: %q[thumbsup], timestamp: %q[1234567890.123456]) }.to raise_error ArgumentError, /Required arguments :channel missing/
11
11
  end
12
12
  it 'requires name' do
13
- expect { client.reactions_add(channel: %q[], timestamp: %q[]) }.to raise_error ArgumentError, /Required arguments :name missing/
13
+ expect { client.reactions_add(channel: %q[C1234567890], timestamp: %q[1234567890.123456]) }.to raise_error ArgumentError, /Required arguments :name missing/
14
14
  end
15
15
  it 'requires timestamp' do
16
- expect { client.reactions_add(channel: %q[], name: %q[]) }.to raise_error ArgumentError, /Required arguments :timestamp missing/
16
+ expect { client.reactions_add(channel: %q[C1234567890], name: %q[thumbsup]) }.to raise_error ArgumentError, /Required arguments :timestamp missing/
17
17
  end
18
18
  end
19
19
  context 'reactions_remove' do
@@ -7,10 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Reminders do
7
7
  let(:client) { Slack::Web::Client.new }
8
8
  context 'reminders_add' do
9
9
  it 'requires text' do
10
- expect { client.reminders_add(time: %q[]) }.to raise_error ArgumentError, /Required arguments :text missing/
10
+ expect { client.reminders_add(time: %q[1602288000]) }.to raise_error ArgumentError, /Required arguments :text missing/
11
11
  end
12
12
  it 'requires time' do
13
- expect { client.reminders_add(text: %q[]) }.to raise_error ArgumentError, /Required arguments :time missing/
13
+ expect { client.reminders_add(text: %q[eat a banana]) }.to raise_error ArgumentError, /Required arguments :time missing/
14
14
  end
15
15
  end
16
16
  context 'reminders_complete' do
@@ -12,10 +12,10 @@ RSpec.describe Slack::Web::Api::Endpoints::UsergroupsUsers do
12
12
  end
13
13
  context 'usergroups.users_update' do
14
14
  it 'requires usergroup' do
15
- expect { client.usergroups_users_update(users: %q[]) }.to raise_error ArgumentError, /Required arguments :usergroup missing/
15
+ expect { client.usergroups_users_update(users: %q[U060R4BJ4,U060RNRCZ]) }.to raise_error ArgumentError, /Required arguments :usergroup missing/
16
16
  end
17
17
  it 'requires users' do
18
- expect { client.usergroups_users_update(usergroup: %q[]) }.to raise_error ArgumentError, /Required arguments :users missing/
18
+ expect { client.usergroups_users_update(usergroup: %q[S0604QSJC]) }.to raise_error ArgumentError, /Required arguments :users missing/
19
19
  end
20
20
  end
21
21
  end
@@ -5,4 +5,10 @@ require 'spec_helper'
5
5
 
6
6
  RSpec.describe Slack::Web::Api::Endpoints::UsersProfile do
7
7
  let(:client) { Slack::Web::Client.new }
8
+ context 'users.profile_set' do
9
+ it 'encodes profile as json' do
10
+ expect(client).to receive(:post).with('users.profile.set', {profile: %q[{"data":["data"]}]})
11
+ client.users_profile_set(profile: {:data=>["data"]})
12
+ end
13
+ end
8
14
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Users do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ require 'spec_helper'
5
+
6
+ RSpec.describe Slack::Web::Api::Endpoints::Views do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'views_open' do
9
+ it 'requires one of trigger_id, interactivity_pointer' do
10
+ expect { client.views_open(view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
11
+
12
+ expect(client).to receive(:post).with('views.open', {trigger_id: %q[12345.98765.abcd2358fdea], view: %q[]})
13
+ client.views_open(trigger_id: %q[12345.98765.abcd2358fdea], view: %q[])
14
+
15
+ expect(client).to receive(:post).with('views.open', {interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[]})
16
+ client.views_open(interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[])
17
+
18
+ expect { client.views_open(trigger_id: %q[12345.98765.abcd2358fdea], interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
19
+ end
20
+ it 'encodes view as json' do
21
+ expect(client).to receive(:post).with('views.open', {view: %q[{"data":["data"]}], trigger_id: %q[12345.98765.abcd2358fdea]})
22
+ client.views_open(view: {:data=>["data"]}, trigger_id: %q[12345.98765.abcd2358fdea])
23
+ end
24
+ end
25
+ context 'views_publish' do
26
+ it 'encodes view as json' do
27
+ expect(client).to receive(:post).with('views.publish', {user_id: %q[U0BPQUNTA], view: %q[{"data":["data"]}]})
28
+ client.views_publish(user_id: %q[U0BPQUNTA], view: {:data=>["data"]})
29
+ end
30
+ end
31
+ context 'views_push' do
32
+ it 'requires one of trigger_id, interactivity_pointer' do
33
+ expect { client.views_push(view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
34
+
35
+ expect(client).to receive(:post).with('views.push', {trigger_id: %q[12345.98765.abcd2358fdea], view: %q[]})
36
+ client.views_push(trigger_id: %q[12345.98765.abcd2358fdea], view: %q[])
37
+
38
+ expect(client).to receive(:post).with('views.push', {interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[]})
39
+ client.views_push(interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[])
40
+
41
+ expect { client.views_push(trigger_id: %q[12345.98765.abcd2358fdea], interactivity_pointer: %q[12345.98765.abcd2358fdea], view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
42
+ end
43
+ it 'encodes view as json' do
44
+ expect(client).to receive(:post).with('views.push', {view: %q[{"data":["data"]}], trigger_id: %q[12345.98765.abcd2358fdea]})
45
+ client.views_push(view: {:data=>["data"]}, trigger_id: %q[12345.98765.abcd2358fdea])
46
+ end
47
+ end
48
+ context 'views_update' do
49
+ it 'requires one of external_id, view_id' do
50
+ expect { client.views_update(view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
51
+
52
+ expect(client).to receive(:post).with('views.update', {external_id: %q[bmarley_view2], view: %q[]})
53
+ client.views_update(external_id: %q[bmarley_view2], view: %q[])
54
+
55
+ expect(client).to receive(:post).with('views.update', {view_id: %q[VMM512F2U], view: %q[]})
56
+ client.views_update(view_id: %q[VMM512F2U], view: %q[])
57
+
58
+ expect { client.views_update(external_id: %q[bmarley_view2], view_id: %q[VMM512F2U], view: %q[]) }.to raise_error ArgumentError, /Exactly one of/
59
+ end
60
+ it 'encodes view as json' do
61
+ expect(client).to receive(:post).with('views.update', {view: %q[{"data":["data"]}], external_id: %q[bmarley_view2]})
62
+ client.views_update(view: {:data=>["data"]}, external_id: %q[bmarley_view2])
63
+ end
64
+ end
65
+ end
@@ -17,10 +17,18 @@ RSpec.describe Slack::Web::Api::Endpoints::Workflows do
17
17
  it 'requires workflow_step_execute_id' do
18
18
  expect { client.workflows_stepFailed(error: %q[]) }.to raise_error ArgumentError, /Required arguments :workflow_step_execute_id missing/
19
19
  end
20
+ it 'encodes error as json' do
21
+ expect(client).to receive(:post).with('workflows.stepFailed', {error: %q[{"data":["data"]}], workflow_step_execute_id: %q[]})
22
+ client.workflows_stepFailed(error: {:data=>["data"]}, workflow_step_execute_id: %q[])
23
+ end
20
24
  end
21
25
  context 'workflows_updateStep' do
22
26
  it 'requires workflow_step_edit_id' do
23
27
  expect { client.workflows_updateStep }.to raise_error ArgumentError, /Required arguments :workflow_step_edit_id missing/
24
28
  end
29
+ it 'encodes inputs, outputs as json' do
30
+ expect(client).to receive(:post).with('workflows.updateStep', {workflow_step_edit_id: %q[], inputs: %q[{"data":["data"]}], outputs: %q[{"data":["data"]}]})
31
+ client.workflows_updateStep(workflow_step_edit_id: %q[], inputs: {:data=>["data"]}, outputs: {:data=>["data"]})
32
+ end
25
33
  end
26
34
  end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Slack::Web::Api::Error do
5
+ let(:client) { Slack::Web::Client.new }
6
+
7
+ describe '#encode_options_as_json' do
8
+ let(:encoded_options) { client.encode_options_as_json(options, keys) }
9
+
10
+ let(:keys) { %i[attachments blocks metadata] }
11
+
12
+ context 'with some of the keys present in the options' do
13
+ let(:options) do
14
+ {
15
+ text: 'Hello, world!',
16
+ blocks: blocks,
17
+ metadata: metadata
18
+ }
19
+ end
20
+
21
+ context 'and non-string objects in those keys' do
22
+ let(:blocks) { [{ type: 'section' }, { type: 'actions' }] }
23
+ let(:metadata) { { external_id: SecureRandom.uuid } }
24
+
25
+ it 'encodes the named keys into json' do
26
+ expect(encoded_options).to eql(
27
+ text: 'Hello, world!',
28
+ blocks: JSON.dump(blocks),
29
+ metadata: JSON.dump(metadata)
30
+ )
31
+ end
32
+ end
33
+
34
+ context 'and string objects in those keys' do
35
+ let(:blocks) { JSON.dump([{ type: 'section' }, { type: 'actions' }]) }
36
+ let(:metadata) { JSON.dump({ external_id: SecureRandom.uuid }) }
37
+
38
+ it 'returns the original options' do
39
+ expect(encoded_options).to eql(options)
40
+ end
41
+ end
42
+ end
43
+
44
+ context 'with none of the keys present in the options' do
45
+ let(:options) do
46
+ {
47
+ text: 'Hello, world!'
48
+ }
49
+ end
50
+
51
+ it 'returns the original options' do
52
+ expect(encoded_options).to eql(options)
53
+ end
54
+ end
55
+
56
+ context 'with no keys given' do
57
+ let(:options) do
58
+ {
59
+ text: 'Hello, world!'
60
+ }
61
+ end
62
+ let(:keys) { [] }
63
+
64
+ it 'returns the original options' do
65
+ expect(encoded_options).to eql(options)
66
+ end
67
+ end
68
+ end
69
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,15 @@ require 'rubygems'
5
5
  require 'rspec'
6
6
  require 'timecop'
7
7
 
8
+ require 'simplecov'
9
+ require 'simplecov-lcov'
10
+ SimpleCov::Formatter::LcovFormatter.config do |c|
11
+ c.report_with_single_file = true
12
+ c.single_report_path = 'coverage/lcov.info'
13
+ end
14
+ SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
15
+ SimpleCov.start
16
+
8
17
  require 'slack_ruby_client'
9
18
 
10
19
  Dir[File.join(File.dirname(__FILE__), 'support', '**/*.rb')].each do |file|