slack-ruby-client 0.13.1 → 2.0.0

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.
Files changed (402) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/integration_test.yml +26 -0
  4. data/.github/workflows/lint.yml +14 -0
  5. data/.github/workflows/pr_lint.yml +21 -0
  6. data/.github/workflows/test.yml +36 -0
  7. data/.gitignore +5 -3
  8. data/.rubocop.yml +34 -5
  9. data/.rubocop_todo.yml +180 -46
  10. data/.ruby-version +1 -0
  11. data/CHANGELOG.md +119 -2
  12. data/CONTRIBUTING.md +23 -11
  13. data/Dangerfile +2 -0
  14. data/Gemfile +22 -5
  15. data/Gemfile.danger +6 -0
  16. data/LICENSE.md +1 -1
  17. data/README.md +236 -101
  18. data/RELEASING.md +2 -2
  19. data/Rakefile +2 -1
  20. data/UPGRADING.md +100 -2
  21. data/bin/commands/admin_analytics.rb +16 -0
  22. data/bin/commands/admin_apps.rb +51 -0
  23. data/bin/commands/admin_apps_approved.rb +17 -0
  24. data/bin/commands/admin_apps_requests.rb +28 -0
  25. data/bin/commands/admin_apps_restricted.rb +17 -0
  26. data/bin/commands/admin_audit_anomaly_allow.rb +23 -0
  27. data/bin/commands/admin_auth_policy.rb +39 -0
  28. data/bin/commands/admin_barriers.rb +47 -0
  29. data/bin/commands/admin_conversations.rb +171 -0
  30. data/bin/commands/admin_conversations_ekm.rb +17 -0
  31. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  32. data/bin/commands/admin_emoji.rb +54 -0
  33. data/bin/commands/admin_inviteRequests.rb +36 -0
  34. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  35. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  36. data/bin/commands/admin_teams.rb +27 -0
  37. data/bin/commands/admin_teams_admins.rb +16 -0
  38. data/bin/commands/admin_teams_owners.rb +16 -0
  39. data/bin/commands/admin_teams_settings.rb +64 -0
  40. data/bin/commands/admin_usergroups.rb +48 -0
  41. data/bin/commands/admin_users.rb +98 -0
  42. data/bin/commands/admin_users_session.rb +78 -0
  43. data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
  44. data/bin/commands/api.rb +1 -1
  45. data/bin/commands/apps.rb +15 -0
  46. data/bin/commands/apps_connections.rb +13 -0
  47. data/bin/commands/apps_event_authorizations.rb +16 -0
  48. data/bin/commands/apps_manifest.rb +52 -0
  49. data/bin/commands/auth.rb +1 -0
  50. data/bin/commands/auth_teams.rb +16 -0
  51. data/bin/commands/bookmarks.rb +53 -0
  52. data/bin/commands/bots.rb +2 -0
  53. data/bin/commands/calls.rb +52 -0
  54. data/bin/commands/calls_participants.rb +25 -0
  55. data/bin/commands/chat.rb +61 -14
  56. data/bin/commands/chat_scheduledMessages.rb +19 -0
  57. data/bin/commands/conversations.rb +82 -10
  58. data/bin/commands/dialog.rb +1 -0
  59. data/bin/commands/dnd.rb +6 -3
  60. data/bin/commands/emoji.rb +1 -0
  61. data/bin/commands/files.rb +34 -18
  62. data/bin/commands/files_comments.rb +1 -21
  63. data/bin/commands/files_remote.rb +78 -0
  64. data/bin/commands/migration.rb +2 -0
  65. data/bin/commands/oauth.rb +2 -14
  66. data/bin/commands/oauth_v2.rb +29 -0
  67. data/bin/commands/openid_connect.rb +27 -0
  68. data/bin/commands/pins.rb +3 -6
  69. data/bin/commands/reactions.rb +3 -3
  70. data/bin/commands/reminders.rb +7 -0
  71. data/bin/commands/rtm.rb +1 -15
  72. data/bin/commands/search.rb +6 -1
  73. data/bin/commands/stars.rb +8 -6
  74. data/bin/commands/team.rb +6 -0
  75. data/bin/commands/team_billing.rb +13 -0
  76. data/bin/commands/team_preferences.rb +13 -0
  77. data/bin/commands/team_profile.rb +1 -0
  78. data/bin/commands/tooling_tokens.rb +14 -0
  79. data/bin/commands/usergroups.rb +7 -1
  80. data/bin/commands/usergroups_users.rb +3 -0
  81. data/bin/commands/users.rb +6 -4
  82. data/bin/commands/users_admin.rb +1 -0
  83. data/bin/commands/users_prefs.rb +1 -0
  84. data/bin/commands/users_profile.rb +6 -5
  85. data/bin/commands/views.rb +50 -0
  86. data/bin/commands/workflows.rb +38 -0
  87. data/bin/commands.rb +41 -8
  88. data/bin/slack +3 -4
  89. data/examples/hi_real_time_and_web/Gemfile +1 -0
  90. data/examples/hi_real_time_and_web/hi.rb +7 -3
  91. data/examples/hi_real_time_async_async/Gemfile +1 -0
  92. data/examples/hi_real_time_async_async/hi.rb +6 -2
  93. data/examples/hi_web/Gemfile +1 -0
  94. data/examples/hi_web/hi.rb +1 -0
  95. data/examples/new_ticket/Gemfile +1 -0
  96. data/examples/new_ticket/new_ticket.rb +1 -0
  97. data/lib/slack/config.rb +2 -2
  98. data/lib/slack/events/config.rb +32 -0
  99. data/lib/slack/events/request.rb +72 -0
  100. data/lib/slack/logger.rb +6 -5
  101. data/lib/slack/messages/formatting.rb +1 -0
  102. data/lib/slack/messages/message.rb +1 -4
  103. data/lib/slack/real_time/api/message.rb +6 -3
  104. data/lib/slack/real_time/api/message_id.rb +1 -0
  105. data/lib/slack/real_time/api/ping.rb +5 -2
  106. data/lib/slack/real_time/api/templates/event_handler.erb +5 -1
  107. data/lib/slack/real_time/api/typing.rb +5 -2
  108. data/lib/slack/real_time/client.rb +105 -54
  109. data/lib/slack/real_time/concurrency/async.rb +77 -6
  110. data/lib/slack/real_time/concurrency.rb +1 -2
  111. data/lib/slack/real_time/config.rb +9 -13
  112. data/lib/slack/real_time/models/base.rb +1 -4
  113. data/lib/slack/real_time/models/bot.rb +1 -0
  114. data/lib/slack/real_time/models/channel.rb +5 -0
  115. data/lib/slack/real_time/models/im.rb +1 -0
  116. data/lib/slack/real_time/models/{group.rb → mpim.rb} +2 -1
  117. data/lib/slack/real_time/models/team.rb +1 -0
  118. data/lib/slack/real_time/models/user.rb +1 -0
  119. data/lib/slack/real_time/models.rb +3 -1
  120. data/lib/slack/real_time/socket.rb +45 -17
  121. data/lib/slack/real_time/stores/base.rb +28 -14
  122. data/lib/slack/real_time/stores/starter.rb +325 -297
  123. data/lib/slack/real_time/stores/store.rb +271 -196
  124. data/lib/slack/real_time/stores.rb +2 -7
  125. data/lib/slack/version.rb +2 -1
  126. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  127. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  128. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  129. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +51 -0
  130. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  131. data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
  132. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  133. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  134. data/lib/slack/web/api/endpoints/admin_conversations.rb +264 -0
  135. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  136. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  137. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  138. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  139. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  140. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  141. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  142. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  143. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  144. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  145. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  146. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  147. data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
  148. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
  149. data/lib/slack/web/api/endpoints/api.rb +2 -3
  150. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  151. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  152. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  153. data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
  154. data/lib/slack/web/api/endpoints/auth.rb +2 -1
  155. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  156. data/lib/slack/web/api/endpoints/bookmarks.rb +88 -0
  157. data/lib/slack/web/api/endpoints/bots.rb +4 -1
  158. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  159. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  160. data/lib/slack/web/api/endpoints/chat.rb +168 -65
  161. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  162. data/lib/slack/web/api/endpoints/conversations.rb +182 -67
  163. data/lib/slack/web/api/endpoints/dialog.rb +5 -4
  164. data/lib/slack/web/api/endpoints/dnd.rb +9 -4
  165. data/lib/slack/web/api/endpoints/emoji.rb +1 -0
  166. data/lib/slack/web/api/endpoints/files.rb +69 -37
  167. data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
  168. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  169. data/lib/slack/web/api/endpoints/migration.rb +6 -3
  170. data/lib/slack/web/api/endpoints/oauth.rb +7 -31
  171. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  172. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  173. data/lib/slack/web/api/endpoints/pins.rb +11 -18
  174. data/lib/slack/web/api/endpoints/reactions.rb +22 -21
  175. data/lib/slack/web/api/endpoints/reminders.rb +23 -10
  176. data/lib/slack/web/api/endpoints/rtm.rb +3 -25
  177. data/lib/slack/web/api/endpoints/search.rb +31 -16
  178. data/lib/slack/web/api/endpoints/stars.rb +14 -11
  179. data/lib/slack/web/api/endpoints/team.rb +15 -4
  180. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  181. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  182. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  183. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  184. data/lib/slack/web/api/endpoints/usergroups.rb +31 -20
  185. data/lib/slack/web/api/endpoints/usergroups_users.rb +13 -8
  186. data/lib/slack/web/api/endpoints/users.rb +24 -23
  187. data/lib/slack/web/api/endpoints/users_admin.rb +3 -2
  188. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  189. data/lib/slack/web/api/endpoints/users_profile.rb +8 -7
  190. data/lib/slack/web/api/endpoints/views.rb +102 -0
  191. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  192. data/lib/slack/web/api/endpoints.rb +82 -18
  193. data/lib/slack/web/api/error.rb +1 -0
  194. data/lib/slack/web/api/errors/server_error.rb +37 -0
  195. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  196. data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
  197. data/lib/slack/web/api/errors.rb +1116 -0
  198. data/lib/slack/web/api/mixins/{channels.id.rb → conversations.id.rb} +5 -6
  199. data/lib/slack/web/api/mixins/ids.id.rb +3 -2
  200. data/lib/slack/web/api/mixins/users.id.rb +3 -4
  201. data/lib/slack/web/api/mixins/users.search.rb +3 -1
  202. data/lib/slack/web/api/mixins.rb +2 -2
  203. data/lib/slack/web/api/patches/chat.attachments-blocks.patch +69 -0
  204. data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch} +4 -4
  205. data/lib/slack/web/api/patches/views.view-json.patch +55 -0
  206. data/lib/slack/web/api/templates/command.erb +1 -0
  207. data/lib/slack/web/api/templates/commands.erb +1 -0
  208. data/lib/slack/web/api/templates/endpoints.erb +2 -2
  209. data/lib/slack/web/api/templates/errors.erb +20 -0
  210. data/lib/slack/web/api/templates/method.erb +6 -2
  211. data/lib/slack/web/api/templates/method_spec.erb +2 -1
  212. data/lib/slack/web/client.rb +2 -1
  213. data/lib/slack/web/config.rb +5 -2
  214. data/lib/slack/web/faraday/connection.rb +24 -20
  215. data/lib/slack/web/faraday/request.rb +5 -1
  216. data/lib/slack/web/faraday/response/raise_error.rb +14 -7
  217. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  218. data/lib/slack/web/pagination/cursor.rb +7 -7
  219. data/lib/slack-ruby-client.rb +12 -5
  220. data/lib/slack.rb +1 -0
  221. data/lib/slack_ruby_client.rb +1 -0
  222. data/lib/tasks/git.rake +1 -0
  223. data/lib/tasks/real_time.rake +51 -21
  224. data/lib/tasks/update.rake +1 -0
  225. data/lib/tasks/web.rake +48 -12
  226. data/screenshots/create-app.png +0 -0
  227. data/slack-ruby-client.gemspec +7 -12
  228. data/spec/fixtures/slack/web/429_error.yml +50 -54
  229. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  230. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  231. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  232. data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
  233. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
  234. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
  235. data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
  236. data/spec/fixtures/slack/web/rtm_connect.yml +347 -26
  237. data/spec/fixtures/slack/web/users_info.yml +153 -69
  238. data/spec/fixtures/slack/web/users_list.yml +102 -41
  239. data/spec/fixtures/slack/web/views_open_error.yml +83 -0
  240. data/spec/integration/integration_spec.rb +115 -47
  241. data/spec/slack/config_spec.rb +2 -0
  242. data/spec/slack/events/config_spec.rb +35 -0
  243. data/spec/slack/events/request_spec.rb +188 -0
  244. data/spec/slack/messages/formatting_spec.rb +35 -13
  245. data/spec/slack/real_time/api/message_spec.rb +7 -2
  246. data/spec/slack/real_time/api/ping_spec.rb +3 -1
  247. data/spec/slack/real_time/api/typing_spec.rb +6 -2
  248. data/spec/slack/real_time/client_spec.rb +300 -142
  249. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  250. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  251. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  252. data/spec/slack/real_time/event_handlers/bot_spec.rb +20 -17
  253. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  254. data/spec/slack/real_time/event_handlers/im_spec.rb +31 -27
  255. data/spec/slack/real_time/event_handlers/{group_spec.rb → private_channel_spec.rb} +36 -27
  256. data/spec/slack/real_time/event_handlers/{channel_spec.rb → public_channel_spec.rb} +31 -24
  257. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -7
  258. data/spec/slack/real_time/event_handlers/user_spec.rb +7 -5
  259. data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
  260. data/spec/slack/real_time/stores/store_spec.rb +50 -0
  261. data/spec/slack/slack_spec.rb +41 -6
  262. data/spec/slack/version_spec.rb +2 -1
  263. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  264. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  265. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +13 -0
  266. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  267. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
  268. data/spec/slack/web/api/endpoints/admin_audit_anomaly_allow_spec.rb +8 -0
  269. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  270. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  271. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  272. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  273. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  274. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  275. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  276. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  277. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  278. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  279. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  280. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  281. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  282. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  283. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
  284. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  285. data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
  286. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  287. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  288. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  289. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  290. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  291. data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → auth_teams_spec.rb} +2 -1
  292. data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
  293. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  294. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  295. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  296. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  297. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +9 -7
  298. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +144 -40
  299. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  300. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +18 -6
  301. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +8 -3
  302. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +112 -0
  303. data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
  304. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  305. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  306. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  307. data/spec/slack/web/api/endpoints/files_spec.rb +18 -4
  308. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  309. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -22
  310. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
  311. data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
  312. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  313. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  314. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  315. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  316. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  317. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  318. data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → team_billing_spec.rb} +2 -1
  319. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  320. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  321. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  322. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  323. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  324. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  325. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  326. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  327. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  328. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  329. data/spec/slack/web/api/error_spec.rb +7 -7
  330. data/spec/slack/web/api/errors/slack_error_spec.rb +26 -7
  331. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  332. data/spec/slack/web/api/mixins/conversations_spec.rb +45 -0
  333. data/spec/slack/web/api/mixins/users_spec.rb +19 -8
  334. data/spec/slack/web/api/pagination/cursor_spec.rb +47 -15
  335. data/spec/slack/web/client_spec.rb +199 -22
  336. data/spec/slack/web/faraday/request_spec.rb +80 -0
  337. data/spec/slack/web/faraday/response/raise_error_spec.rb +48 -12
  338. data/spec/spec_helper.rb +9 -2
  339. data/spec/support/queue_with_timeout.rb +5 -4
  340. data/spec/support/real_time/concurrency/mock.rb +1 -0
  341. data/spec/support/real_time/connected_client.rb +6 -6
  342. data/spec/support/real_time/event.rb +1 -0
  343. data/spec/support/real_time/loaded_client.rb +120 -0
  344. data/spec/support/token.rb +1 -0
  345. data/spec/support/vcr.rb +37 -1
  346. metadata +174 -262
  347. data/.travis.yml +0 -32
  348. data/bin/commands/apps_permissions.rb +0 -22
  349. data/bin/commands/apps_permissions_resources.rb +0 -14
  350. data/bin/commands/apps_permissions_scopes.rb +0 -12
  351. data/bin/commands/apps_permissions_users.rb +0 -25
  352. data/bin/commands/channels.rb +0 -175
  353. data/bin/commands/groups.rb +0 -174
  354. data/bin/commands/im.rb +0 -67
  355. data/bin/commands/mpim.rb +0 -65
  356. data/examples/hi_real_time/Gemfile +0 -5
  357. data/examples/hi_real_time/hi.gif +0 -0
  358. data/examples/hi_real_time/hi.rb +0 -37
  359. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  360. data/examples/hi_real_time_async_celluloid/Procfile +0 -2
  361. data/examples/hi_real_time_async_celluloid/hi.rb +0 -35
  362. data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
  363. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  364. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -35
  365. data/lib/slack/real_time/concurrency/celluloid.rb +0 -118
  366. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
  367. data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
  368. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +0 -30
  369. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +0 -20
  370. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +0 -49
  371. data/lib/slack/web/api/endpoints/channels.rb +0 -266
  372. data/lib/slack/web/api/endpoints/groups.rb +0 -265
  373. data/lib/slack/web/api/endpoints/im.rb +0 -113
  374. data/lib/slack/web/api/endpoints/mpim.rb +0 -108
  375. data/lib/slack/web/api/endpoints/presence.rb +0 -23
  376. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  377. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  378. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  379. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  380. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  381. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  382. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  383. data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -13
  384. data/screenshots/register-bot.png +0 -0
  385. data/spec/fixtures/slack/web/503_error.yml +0 -14
  386. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  387. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  388. data/spec/fixtures/slack/web/rtm_start.yml +0 -104
  389. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -106
  390. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
  391. data/spec/slack/real_time/rtm_start_spec.rb +0 -13
  392. data/spec/slack/real_time/store_spec.rb +0 -11
  393. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
  394. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -18
  395. data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
  396. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  397. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  398. data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
  399. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
  400. data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
  401. data/spec/slack/web/api/mixins/channels_spec.rb +0 -33
  402. data/spec/slack/web/api/mixins/groups_spec.rb +0 -33
@@ -0,0 +1,67 @@
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::AdminUsers do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'admin.users_assign' do
9
+ it 'requires team_id' do
10
+ expect { client.admin_users_assign(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
11
+ end
12
+ it 'requires user_id' do
13
+ expect { client.admin_users_assign(team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
14
+ end
15
+ end
16
+ context 'admin.users_invite' do
17
+ it 'requires channel_ids' do
18
+ expect { client.admin_users_invite(email: %q[], team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_ids missing/
19
+ end
20
+ it 'requires email' do
21
+ expect { client.admin_users_invite(channel_ids: %q[], team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :email missing/
22
+ end
23
+ it 'requires team_id' do
24
+ expect { client.admin_users_invite(channel_ids: %q[], email: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
25
+ end
26
+ end
27
+ context 'admin.users_remove' do
28
+ it 'requires team_id' do
29
+ expect { client.admin_users_remove(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
30
+ end
31
+ it 'requires user_id' do
32
+ expect { client.admin_users_remove(team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
33
+ end
34
+ end
35
+ context 'admin.users_setAdmin' do
36
+ it 'requires team_id' do
37
+ expect { client.admin_users_setAdmin(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
38
+ end
39
+ it 'requires user_id' do
40
+ expect { client.admin_users_setAdmin(team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
41
+ end
42
+ end
43
+ context 'admin.users_setExpiration' do
44
+ it 'requires expiration_ts' do
45
+ expect { client.admin_users_setExpiration(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :expiration_ts missing/
46
+ end
47
+ it 'requires user_id' do
48
+ expect { client.admin_users_setExpiration(expiration_ts: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
49
+ end
50
+ end
51
+ context 'admin.users_setOwner' do
52
+ it 'requires team_id' do
53
+ expect { client.admin_users_setOwner(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
54
+ end
55
+ it 'requires user_id' do
56
+ expect { client.admin_users_setOwner(team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
57
+ end
58
+ end
59
+ context 'admin.users_setRegular' do
60
+ it 'requires team_id' do
61
+ expect { client.admin_users_setRegular(user_id: %q[]) }.to raise_error ArgumentError, /Required arguments :team_id missing/
62
+ end
63
+ it 'requires user_id' do
64
+ expect { client.admin_users_setRegular(team_id: %q[]) }.to raise_error ArgumentError, /Required arguments :user_id missing/
65
+ end
66
+ end
67
+ 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::AdminUsersUnsupportedversions do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -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::AppsConnections do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -0,0 +1,13 @@
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::AppsEventAuthorizations do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'apps.event.authorizations_list' do
9
+ it 'requires event_context' do
10
+ expect { client.apps_event_authorizations_list }.to raise_error ArgumentError, /Required arguments :event_context missing/
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,36 @@
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::AppsManifest do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'apps.manifest_create' do
9
+ it 'requires manifest' do
10
+ expect { client.apps_manifest_create }.to raise_error ArgumentError, /Required arguments :manifest missing/
11
+ end
12
+ end
13
+ context 'apps.manifest_delete' do
14
+ it 'requires app_id' do
15
+ expect { client.apps_manifest_delete }.to raise_error ArgumentError, /Required arguments :app_id missing/
16
+ end
17
+ end
18
+ context 'apps.manifest_export' do
19
+ it 'requires app_id' do
20
+ expect { client.apps_manifest_export }.to raise_error ArgumentError, /Required arguments :app_id missing/
21
+ end
22
+ end
23
+ context 'apps.manifest_update' do
24
+ it 'requires app_id' do
25
+ expect { client.apps_manifest_update(manifest: %q[]) }.to raise_error ArgumentError, /Required arguments :app_id missing/
26
+ end
27
+ it 'requires manifest' do
28
+ expect { client.apps_manifest_update(app_id: %q[]) }.to raise_error ArgumentError, /Required arguments :manifest missing/
29
+ end
30
+ end
31
+ context 'apps.manifest_validate' do
32
+ it 'requires manifest' do
33
+ expect { client.apps_manifest_validate }.to raise_error ArgumentError, /Required arguments :manifest missing/
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,16 @@
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::Apps do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'apps_uninstall' do
9
+ it 'requires client_id' do
10
+ expect { client.apps_uninstall(client_secret: %q[]) }.to raise_error ArgumentError, /Required arguments :client_id missing/
11
+ end
12
+ it 'requires client_secret' do
13
+ expect { client.apps_uninstall(client_id: %q[]) }.to raise_error ArgumentError, /Required arguments :client_secret missing/
14
+ end
15
+ end
16
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
4
5
 
5
- RSpec.describe Slack::Web::Api::Endpoints::AppsPermissionsResources do
6
+ RSpec.describe Slack::Web::Api::Endpoints::AuthTeams do
6
7
  let(:client) { Slack::Web::Client.new }
7
8
  end
@@ -0,0 +1,40 @@
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::Bookmarks do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'bookmarks_add' do
9
+ it 'requires channel_id' do
10
+ expect { client.bookmarks_add(title: %q[], type: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
11
+ end
12
+ it 'requires title' do
13
+ expect { client.bookmarks_add(channel_id: %q[], type: %q[]) }.to raise_error ArgumentError, /Required arguments :title missing/
14
+ end
15
+ it 'requires type' do
16
+ expect { client.bookmarks_add(channel_id: %q[], title: %q[]) }.to raise_error ArgumentError, /Required arguments :type missing/
17
+ end
18
+ end
19
+ context 'bookmarks_edit' do
20
+ it 'requires bookmark_id' do
21
+ expect { client.bookmarks_edit(channel_id: %q[]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
22
+ end
23
+ it 'requires channel_id' do
24
+ expect { client.bookmarks_edit(bookmark_id: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
25
+ end
26
+ end
27
+ context 'bookmarks_list' do
28
+ it 'requires channel_id' do
29
+ expect { client.bookmarks_list }.to raise_error ArgumentError, /Required arguments :channel_id missing/
30
+ end
31
+ end
32
+ context 'bookmarks_remove' do
33
+ it 'requires bookmark_id' do
34
+ expect { client.bookmarks_remove(channel_id: %q[]) }.to raise_error ArgumentError, /Required arguments :bookmark_id missing/
35
+ end
36
+ it 'requires channel_id' do
37
+ expect { client.bookmarks_remove(bookmark_id: %q[]) }.to raise_error ArgumentError, /Required arguments :channel_id missing/
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -0,0 +1,24 @@
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::CallsParticipants do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'calls.participants_add' do
9
+ it 'requires id' do
10
+ expect { client.calls_participants_add(users: %q[]) }.to raise_error ArgumentError, /Required arguments :id missing/
11
+ end
12
+ it 'requires users' do
13
+ expect { client.calls_participants_add(id: %q[]) }.to raise_error ArgumentError, /Required arguments :users missing/
14
+ end
15
+ end
16
+ context 'calls.participants_remove' do
17
+ it 'requires id' do
18
+ expect { client.calls_participants_remove(users: %q[]) }.to raise_error ArgumentError, /Required arguments :id missing/
19
+ end
20
+ it 'requires users' do
21
+ expect { client.calls_participants_remove(id: %q[]) }.to raise_error ArgumentError, /Required arguments :users missing/
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
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::Calls do
7
+ let(:client) { Slack::Web::Client.new }
8
+ context 'calls_add' do
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/
11
+ end
12
+ it 'requires join_url' do
13
+ expect { client.calls_add(external_unique_id: %q[]) }.to raise_error ArgumentError, /Required arguments :join_url missing/
14
+ end
15
+ end
16
+ context 'calls_end' do
17
+ it 'requires id' do
18
+ expect { client.calls_end }.to raise_error ArgumentError, /Required arguments :id missing/
19
+ end
20
+ end
21
+ context 'calls_info' do
22
+ it 'requires id' do
23
+ expect { client.calls_info }.to raise_error ArgumentError, /Required arguments :id missing/
24
+ end
25
+ end
26
+ context 'calls_update' do
27
+ it 'requires id' do
28
+ expect { client.calls_update }.to raise_error ArgumentError, /Required arguments :id missing/
29
+ end
30
+ end
31
+ 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::ChatScheduledmessages do
7
+ let(:client) { Slack::Web::Client.new }
8
+ end
@@ -1,25 +1,27 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Endpoints::Auth do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  context 'without auth', vcr: { cassette_name: 'web/auth_test_error' } do
6
8
  it 'fails with an exception' do
7
9
  expect { client.auth_test }.to raise_error Slack::Web::Api::Errors::SlackError, 'not_authed'
8
10
  end
9
11
  end
12
+
10
13
  context 'with auth', vcr: { cassette_name: 'web/auth_test_success' } do
11
14
  it 'succeeds' do
12
- expect { client.auth_test }.to_not raise_error
15
+ expect { client.auth_test }.not_to raise_error
13
16
  end
14
17
  end
18
+
15
19
  context '429 error', vcr: { cassette_name: 'web/429_error' } do
16
20
  it 'fails with an specific exception' do
17
- begin
18
- client.auth_test
19
- rescue Slack::Web::Api::Errors::TooManyRequestsError => e
20
- expect(e.message).to eq('Retry after 3600 seconds')
21
- expect(e.retry_after).to eq(3600)
22
- end
21
+ client.auth_test
22
+ rescue Slack::Web::Api::Errors::TooManyRequestsError => e
23
+ expect(e.message).to eq('Retry after 3600 seconds')
24
+ expect(e.retry_after).to eq(3600)
23
25
  end
24
26
  end
25
27
  end
@@ -1,108 +1,212 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Endpoints::Chat do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  context 'chat_postEphemeral' do
6
8
  let(:user) { OpenStruct.new(user: { id: '123' }) }
7
- before(:each) do
9
+
10
+ before do
8
11
  allow(described_class).to receive(:users_id).and_return(user)
9
12
  end
10
13
 
11
- it 'automatically converts attachments into JSON' do
14
+ it 'automatically converts attachments and blocks into JSON' do
12
15
  expect(client).to receive(:post).with(
13
16
  'chat.postEphemeral',
17
+ {
18
+ channel: 'channel',
19
+ text: 'text',
20
+ user: '123',
21
+ attachments: '[]',
22
+ blocks: '[]'
23
+ }
24
+ )
25
+ client.chat_postEphemeral(
14
26
  channel: 'channel',
15
27
  text: 'text',
16
28
  user: '123',
17
- attachments: '[]'
29
+ attachments: [],
30
+ blocks: []
18
31
  )
19
- client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123', attachments: [])
20
32
  end
33
+
21
34
  context 'text and user arguments' do
22
35
  it 'requires text or attachments' do
23
- expect { client.chat_postEphemeral(channel: 'channel') }.to raise_error ArgumentError, /Required arguments :text or :attachments missing/
36
+ expect { client.chat_postEphemeral(channel: 'channel') }.to(
37
+ raise_error(ArgumentError, /Required arguments :text, :attachments or :blocks missing/)
38
+ )
24
39
  end
40
+
25
41
  it 'requires user' do
26
- expect { client.chat_postEphemeral(channel: 'channel', text: 'text') }.to raise_error ArgumentError, /Required arguments :user missing/
42
+ expect { client.chat_postEphemeral(channel: 'channel', text: 'text') }.to(
43
+ raise_error(ArgumentError, /Required arguments :user missing/)
44
+ )
27
45
  end
46
+
28
47
  it 'both text and user' do
29
- expect(client).to receive(:post).with('chat.postEphemeral', hash_including(text: 'text', user: '123'))
30
- expect { client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123') }.to_not raise_error
48
+ expect(client).to(
49
+ receive(:post).with('chat.postEphemeral', hash_including(text: 'text', user: '123'))
50
+ )
51
+ expect do
52
+ client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123')
53
+ end.not_to raise_error
31
54
  end
32
55
  end
56
+
33
57
  context 'attachments argument' do
34
58
  it 'optional attachments' do
35
- expect(client).to receive(:post).with('chat.postEphemeral', hash_including(attachments: '[]'))
36
- expect { client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123', attachments: []) }.to_not raise_error
59
+ expect(client).to(
60
+ receive(:post).with('chat.postEphemeral', hash_including(attachments: '[]'))
61
+ )
62
+ expect do
63
+ client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123', attachments: [])
64
+ end.not_to raise_error
37
65
  end
66
+
38
67
  it 'attachments without text' do
39
- expect(client).to receive(:post).with('chat.postEphemeral', hash_including(attachments: '[]'))
40
- expect { client.chat_postEphemeral(channel: 'channel', attachments: [], user: '123') }.to_not raise_error
68
+ expect(client).to(
69
+ receive(:post).with('chat.postEphemeral', hash_including(attachments: '[]'))
70
+ )
71
+ expect do
72
+ client.chat_postEphemeral(channel: 'channel', attachments: [], user: '123')
73
+ end.not_to raise_error
74
+ end
75
+ end
76
+
77
+ context 'blocks argument' do
78
+ it 'optional blocks' do
79
+ expect(client).to receive(:post).with('chat.postEphemeral', hash_including(blocks: '[]'))
80
+ expect do
81
+ client.chat_postEphemeral(channel: 'channel', text: 'text', user: '123', blocks: [])
82
+ end.not_to raise_error
83
+ end
84
+
85
+ it 'blocks without text' do
86
+ expect(client).to receive(:post).with('chat.postEphemeral', hash_including(blocks: '[]'))
87
+ expect do
88
+ client.chat_postEphemeral(channel: 'channel', blocks: [], user: '123')
89
+ end.not_to raise_error
41
90
  end
42
91
  end
43
92
  end
44
93
 
45
94
  context 'chat_postMessage' do
46
- it 'automatically converts attachments into JSON' do
95
+ it 'automatically converts attachments and blocks into JSON' do
47
96
  expect(client).to receive(:post).with(
48
97
  'chat.postMessage',
49
- channel: 'channel',
50
- text: 'text',
51
- attachments: '[]'
98
+ {
99
+ channel: 'channel',
100
+ text: 'text',
101
+ attachments: '[]',
102
+ blocks: '[]'
103
+ }
52
104
  )
53
- client.chat_postMessage(channel: 'channel', text: 'text', attachments: [])
105
+ client.chat_postMessage(channel: 'channel', text: 'text', attachments: [], blocks: [])
54
106
  end
55
- context 'text and attachment arguments' do
56
- it 'requires text or attachments' do
57
- expect { client.chat_postMessage(channel: 'channel') }.to raise_error ArgumentError, /Required arguments :text or :attachments missing/
107
+
108
+ context 'text, attachment and blocks arguments' do
109
+ it 'requires text, attachments or blocks' do
110
+ expect { client.chat_postMessage(channel: 'channel') }.to(
111
+ raise_error(ArgumentError, /Required arguments :text, :attachments or :blocks missing/)
112
+ )
58
113
  end
114
+
59
115
  it 'only text' do
60
116
  expect(client).to receive(:post).with('chat.postMessage', hash_including(text: 'text'))
61
- expect { client.chat_postMessage(channel: 'channel', text: 'text') }.to_not raise_error
117
+ expect { client.chat_postMessage(channel: 'channel', text: 'text') }.not_to raise_error
62
118
  end
119
+
63
120
  it 'only attachments' do
64
121
  expect(client).to receive(:post).with('chat.postMessage', hash_including(attachments: '[]'))
65
- expect { client.chat_postMessage(channel: 'channel', attachments: []) }.to_not raise_error
122
+ expect { client.chat_postMessage(channel: 'channel', attachments: []) }.not_to raise_error
66
123
  end
67
- it 'both text and attachments' do
68
- expect(client).to receive(:post).with('chat.postMessage', hash_including(text: 'text', attachments: '[]'))
69
- expect { client.chat_postMessage(channel: 'channel', text: 'text', attachments: []) }.to_not raise_error
124
+
125
+ it 'only blocks' do
126
+ expect(client).to receive(:post).with('chat.postMessage', hash_including(blocks: '[]'))
127
+ expect { client.chat_postMessage(channel: 'channel', blocks: []) }.not_to raise_error
128
+ end
129
+
130
+ it 'all text, attachments and blocks' do
131
+ expect(client).to(
132
+ receive(:post)
133
+ .with('chat.postMessage', hash_including(text: 'text', attachments: '[]', blocks: '[]'))
134
+ )
135
+ expect do
136
+ client.chat_postMessage(channel: 'channel', text: 'text', attachments: [], blocks: [])
137
+ end.not_to raise_error
70
138
  end
71
139
  end
72
140
  end
73
141
 
74
142
  context 'chat_update' do
75
143
  let(:ts) { '1405894322.002768' }
76
- it 'automatically converts attachments into JSON' do
144
+
145
+ it 'automatically converts attachments and blocks into JSON' do
77
146
  expect(client).to receive(:post).with(
78
147
  'chat.update',
79
- attachments: '[]',
80
- channel: 'channel',
81
- text: 'text',
82
- ts: ts
148
+ {
149
+ channel: 'channel',
150
+ text: 'text',
151
+ ts: ts,
152
+ attachments: '[]',
153
+ blocks: '[]'
154
+ }
83
155
  )
84
- client.chat_update(attachments: [], channel: 'channel', text: 'text', ts: ts)
156
+ client.chat_update(channel: 'channel', text: 'text', ts: ts, attachments: [], blocks: [])
85
157
  end
158
+
86
159
  context 'ts arguments' do
87
160
  it 'requires ts' do
88
- expect { client.chat_update(channel: 'channel', text: 'text') }.to raise_error ArgumentError, /Required arguments :ts missing>/
161
+ expect do
162
+ client.chat_update(channel: 'channel', text: 'text')
163
+ end.to raise_error(ArgumentError, /Required arguments :ts missing/)
89
164
  end
90
165
  end
91
- context 'text and attachment arguments' do
92
- it 'requires text or attachments' do
93
- expect { client.chat_update(channel: 'channel', ts: ts) }.to raise_error ArgumentError, /Required arguments :text or :attachments missing/
166
+
167
+ context 'text, attachment and blocks arguments' do
168
+ it 'requires text, attachments, blocks or reply_broadcast' do
169
+ expect { client.chat_update(channel: 'channel', ts: ts) }.to(
170
+ raise_error(ArgumentError, /Required arguments :text, :attachments, :blocks or :reply_broadcast missing/)
171
+ )
94
172
  end
173
+
95
174
  it 'only text' do
96
175
  expect(client).to receive(:post).with('chat.update', hash_including(text: 'text'))
97
- expect { client.chat_update(channel: 'channel', text: 'text', ts: ts) }.to_not raise_error
176
+ expect do
177
+ client.chat_update(channel: 'channel', text: 'text', ts: ts)
178
+ end.not_to raise_error
98
179
  end
180
+
99
181
  it 'only attachments' do
100
182
  expect(client).to receive(:post).with('chat.update', hash_including(attachments: '[]'))
101
- expect { client.chat_update(attachments: [], channel: 'channel', ts: ts) }.to_not raise_error
183
+ expect do
184
+ client.chat_update(channel: 'channel', ts: ts, attachments: [])
185
+ end.not_to raise_error
186
+ end
187
+
188
+ it 'only blocks' do
189
+ expect(client).to receive(:post).with('chat.update', hash_including(blocks: '[]'))
190
+ expect do
191
+ client.chat_update(channel: 'channel', ts: ts, blocks: [])
192
+ end.not_to raise_error
193
+ end
194
+
195
+ it 'only reply_broadcast' do
196
+ expect(client).to receive(:post).with('chat.update', hash_including(reply_broadcast: true))
197
+ expect do
198
+ client.chat_update(channel: 'channel', ts: ts, reply_broadcast: true)
199
+ end.not_to raise_error
102
200
  end
103
- it 'both text and attachments' do
104
- expect(client).to receive(:post).with('chat.update', hash_including(text: 'text', attachments: '[]'))
105
- expect { client.chat_update(attachments: [], channel: 'channel', text: 'text', ts: ts) }.to_not raise_error
201
+
202
+ it 'all text, attachments and blocks' do
203
+ expect(client).to(
204
+ receive(:post)
205
+ .with('chat.update', hash_including(text: 'text', attachments: '[]', blocks: '[]'))
206
+ )
207
+ expect do
208
+ client.chat_update(channel: 'channel', text: 'text', ts: ts, attachments: [], blocks: [])
209
+ end.not_to raise_error
106
210
  end
107
211
  end
108
212
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Slack::Web::Api::Endpoints::Conversations do
5
+ let(:client) { Slack::Web::Client.new }
6
+
7
+ context 'groups' do
8
+ it 'info', vcr: { cassette_name: 'web/conversations_info' } do
9
+ json = client.conversations_info(channel: '#mpdm-dblock--rubybot--player1-1')
10
+ expect(json.channel.name).to eq 'mpdm-dblock--rubybot--player1-1'
11
+ end
12
+ end
13
+ end
@@ -1,27 +1,39 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Slack::Web::Api::Endpoints::Dialog do
4
5
  let(:client) { Slack::Web::Client.new }
6
+
5
7
  context 'dialog_open' do
6
8
  it 'automatically converts dialog into JSON' do
7
9
  expect(client).to receive(:post).with(
8
10
  'dialog.open',
9
- trigger_id: '12345.98765.abcd2358fdea',
10
- dialog: '[]'
11
+ {
12
+ trigger_id: '12345.98765.abcd2358fdea',
13
+ dialog: '[]'
14
+ }
11
15
  )
12
16
  client.dialog_open(trigger_id: '12345.98765.abcd2358fdea', dialog: [])
13
17
  end
14
18
 
15
19
  context 'arguments' do
16
20
  it 'requires dialog' do
17
- expect { client.dialog_open(trigger_id: '123') }.to raise_error ArgumentError, /Required arguments :dialog missing/
21
+ expect { client.dialog_open(trigger_id: '123') }.to(
22
+ raise_error(ArgumentError, /Required arguments :dialog missing/)
23
+ )
18
24
  end
25
+
19
26
  it 'requires trigger_id' do
20
- expect { client.dialog_open(dialog: []) }.to raise_error ArgumentError, /Required arguments :trigger_id missing/
27
+ expect { client.dialog_open(dialog: []) }.to(
28
+ raise_error(ArgumentError, /Required arguments :trigger_id missing/)
29
+ )
21
30
  end
31
+
22
32
  it 'likes both dialog and trigger_id' do
23
- expect(client).to receive(:post).with('dialog.open', hash_including(trigger_id: '123', dialog: '[]'))
24
- expect { client.dialog_open(dialog: [], trigger_id: '123') }.to_not raise_error
33
+ expect(client).to(
34
+ receive(:post).with('dialog.open', hash_including(trigger_id: '123', dialog: '[]'))
35
+ )
36
+ expect { client.dialog_open(dialog: [], trigger_id: '123') }.not_to raise_error
25
37
  end
26
38
  end
27
39
  end