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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.github/workflows/integration_test.yml +26 -0
- data/.github/workflows/lint.yml +14 -0
- data/.github/workflows/pr_lint.yml +21 -0
- data/.github/workflows/test.yml +36 -0
- data/.gitignore +5 -3
- data/.rubocop.yml +34 -5
- data/.rubocop_todo.yml +180 -46
- data/.ruby-version +1 -0
- data/CHANGELOG.md +119 -2
- data/CONTRIBUTING.md +23 -11
- data/Dangerfile +2 -0
- data/Gemfile +22 -5
- data/Gemfile.danger +6 -0
- data/LICENSE.md +1 -1
- data/README.md +236 -101
- data/RELEASING.md +2 -2
- data/Rakefile +2 -1
- data/UPGRADING.md +100 -2
- data/bin/commands/admin_analytics.rb +16 -0
- data/bin/commands/admin_apps.rb +51 -0
- data/bin/commands/admin_apps_approved.rb +17 -0
- data/bin/commands/admin_apps_requests.rb +28 -0
- data/bin/commands/admin_apps_restricted.rb +17 -0
- data/bin/commands/admin_audit_anomaly_allow.rb +23 -0
- data/bin/commands/admin_auth_policy.rb +39 -0
- data/bin/commands/admin_barriers.rb +47 -0
- data/bin/commands/admin_conversations.rb +171 -0
- data/bin/commands/admin_conversations_ekm.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
- data/bin/commands/admin_emoji.rb +54 -0
- data/bin/commands/admin_inviteRequests.rb +36 -0
- data/bin/commands/admin_inviteRequests_approved.rb +16 -0
- data/bin/commands/admin_inviteRequests_denied.rb +16 -0
- data/bin/commands/admin_teams.rb +27 -0
- data/bin/commands/admin_teams_admins.rb +16 -0
- data/bin/commands/admin_teams_owners.rb +16 -0
- data/bin/commands/admin_teams_settings.rb +64 -0
- data/bin/commands/admin_usergroups.rb +48 -0
- data/bin/commands/admin_users.rb +98 -0
- data/bin/commands/admin_users_session.rb +78 -0
- data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
- data/bin/commands/api.rb +1 -1
- data/bin/commands/apps.rb +15 -0
- data/bin/commands/apps_connections.rb +13 -0
- data/bin/commands/apps_event_authorizations.rb +16 -0
- data/bin/commands/apps_manifest.rb +52 -0
- data/bin/commands/auth.rb +1 -0
- data/bin/commands/auth_teams.rb +16 -0
- data/bin/commands/bookmarks.rb +53 -0
- data/bin/commands/bots.rb +2 -0
- data/bin/commands/calls.rb +52 -0
- data/bin/commands/calls_participants.rb +25 -0
- data/bin/commands/chat.rb +61 -14
- data/bin/commands/chat_scheduledMessages.rb +19 -0
- data/bin/commands/conversations.rb +82 -10
- data/bin/commands/dialog.rb +1 -0
- data/bin/commands/dnd.rb +6 -3
- data/bin/commands/emoji.rb +1 -0
- data/bin/commands/files.rb +34 -18
- data/bin/commands/files_comments.rb +1 -21
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/migration.rb +2 -0
- data/bin/commands/oauth.rb +2 -14
- data/bin/commands/oauth_v2.rb +29 -0
- data/bin/commands/openid_connect.rb +27 -0
- data/bin/commands/pins.rb +3 -6
- data/bin/commands/reactions.rb +3 -3
- data/bin/commands/reminders.rb +7 -0
- data/bin/commands/rtm.rb +1 -15
- data/bin/commands/search.rb +6 -1
- data/bin/commands/stars.rb +8 -6
- data/bin/commands/team.rb +6 -0
- data/bin/commands/team_billing.rb +13 -0
- data/bin/commands/team_preferences.rb +13 -0
- data/bin/commands/team_profile.rb +1 -0
- data/bin/commands/tooling_tokens.rb +14 -0
- data/bin/commands/usergroups.rb +7 -1
- data/bin/commands/usergroups_users.rb +3 -0
- data/bin/commands/users.rb +6 -4
- data/bin/commands/users_admin.rb +1 -0
- data/bin/commands/users_prefs.rb +1 -0
- data/bin/commands/users_profile.rb +6 -5
- data/bin/commands/views.rb +50 -0
- data/bin/commands/workflows.rb +38 -0
- data/bin/commands.rb +41 -8
- data/bin/slack +3 -4
- data/examples/hi_real_time_and_web/Gemfile +1 -0
- data/examples/hi_real_time_and_web/hi.rb +7 -3
- data/examples/hi_real_time_async_async/Gemfile +1 -0
- data/examples/hi_real_time_async_async/hi.rb +6 -2
- data/examples/hi_web/Gemfile +1 -0
- data/examples/hi_web/hi.rb +1 -0
- data/examples/new_ticket/Gemfile +1 -0
- data/examples/new_ticket/new_ticket.rb +1 -0
- data/lib/slack/config.rb +2 -2
- data/lib/slack/events/config.rb +32 -0
- data/lib/slack/events/request.rb +72 -0
- data/lib/slack/logger.rb +6 -5
- data/lib/slack/messages/formatting.rb +1 -0
- data/lib/slack/messages/message.rb +1 -4
- data/lib/slack/real_time/api/message.rb +6 -3
- data/lib/slack/real_time/api/message_id.rb +1 -0
- data/lib/slack/real_time/api/ping.rb +5 -2
- data/lib/slack/real_time/api/templates/event_handler.erb +5 -1
- data/lib/slack/real_time/api/typing.rb +5 -2
- data/lib/slack/real_time/client.rb +105 -54
- data/lib/slack/real_time/concurrency/async.rb +77 -6
- data/lib/slack/real_time/concurrency.rb +1 -2
- data/lib/slack/real_time/config.rb +9 -13
- data/lib/slack/real_time/models/base.rb +1 -4
- data/lib/slack/real_time/models/bot.rb +1 -0
- data/lib/slack/real_time/models/channel.rb +5 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- data/lib/slack/real_time/models/{group.rb → mpim.rb} +2 -1
- data/lib/slack/real_time/models/team.rb +1 -0
- data/lib/slack/real_time/models/user.rb +1 -0
- data/lib/slack/real_time/models.rb +3 -1
- data/lib/slack/real_time/socket.rb +45 -17
- data/lib/slack/real_time/stores/base.rb +28 -14
- data/lib/slack/real_time/stores/starter.rb +325 -297
- data/lib/slack/real_time/stores/store.rb +271 -196
- data/lib/slack/real_time/stores.rb +2 -7
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +51 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
- data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
- data/lib/slack/web/api/endpoints/admin_conversations.rb +264 -0
- data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
- data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
- data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
- data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
- data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
- data/lib/slack/web/api/endpoints/api.rb +2 -3
- data/lib/slack/web/api/endpoints/apps.rb +27 -0
- data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
- data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
- data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
- data/lib/slack/web/api/endpoints/auth.rb +2 -1
- data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
- data/lib/slack/web/api/endpoints/bookmarks.rb +88 -0
- data/lib/slack/web/api/endpoints/bots.rb +4 -1
- data/lib/slack/web/api/endpoints/calls.rb +83 -0
- data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
- data/lib/slack/web/api/endpoints/chat.rb +168 -65
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
- data/lib/slack/web/api/endpoints/conversations.rb +182 -67
- data/lib/slack/web/api/endpoints/dialog.rb +5 -4
- data/lib/slack/web/api/endpoints/dnd.rb +9 -4
- data/lib/slack/web/api/endpoints/emoji.rb +1 -0
- data/lib/slack/web/api/endpoints/files.rb +69 -37
- data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
- data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
- data/lib/slack/web/api/endpoints/migration.rb +6 -3
- data/lib/slack/web/api/endpoints/oauth.rb +7 -31
- data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
- data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
- data/lib/slack/web/api/endpoints/pins.rb +11 -18
- data/lib/slack/web/api/endpoints/reactions.rb +22 -21
- data/lib/slack/web/api/endpoints/reminders.rb +23 -10
- data/lib/slack/web/api/endpoints/rtm.rb +3 -25
- data/lib/slack/web/api/endpoints/search.rb +31 -16
- data/lib/slack/web/api/endpoints/stars.rb +14 -11
- data/lib/slack/web/api/endpoints/team.rb +15 -4
- data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
- data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
- data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +31 -20
- data/lib/slack/web/api/endpoints/usergroups_users.rb +13 -8
- data/lib/slack/web/api/endpoints/users.rb +24 -23
- data/lib/slack/web/api/endpoints/users_admin.rb +3 -2
- data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +8 -7
- data/lib/slack/web/api/endpoints/views.rb +102 -0
- data/lib/slack/web/api/endpoints/workflows.rb +61 -0
- data/lib/slack/web/api/endpoints.rb +82 -18
- data/lib/slack/web/api/error.rb +1 -0
- data/lib/slack/web/api/errors/server_error.rb +37 -0
- data/lib/slack/web/api/errors/slack_error.rb +14 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
- data/lib/slack/web/api/errors.rb +1116 -0
- data/lib/slack/web/api/mixins/{channels.id.rb → conversations.id.rb} +5 -6
- data/lib/slack/web/api/mixins/ids.id.rb +3 -2
- data/lib/slack/web/api/mixins/users.id.rb +3 -4
- data/lib/slack/web/api/mixins/users.search.rb +3 -1
- data/lib/slack/web/api/mixins.rb +2 -2
- data/lib/slack/web/api/patches/chat.attachments-blocks.patch +69 -0
- data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch} +4 -4
- data/lib/slack/web/api/patches/views.view-json.patch +55 -0
- data/lib/slack/web/api/templates/command.erb +1 -0
- data/lib/slack/web/api/templates/commands.erb +1 -0
- data/lib/slack/web/api/templates/endpoints.erb +2 -2
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +6 -2
- data/lib/slack/web/api/templates/method_spec.erb +2 -1
- data/lib/slack/web/client.rb +2 -1
- data/lib/slack/web/config.rb +5 -2
- data/lib/slack/web/faraday/connection.rb +24 -20
- data/lib/slack/web/faraday/request.rb +5 -1
- data/lib/slack/web/faraday/response/raise_error.rb +14 -7
- data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
- data/lib/slack/web/pagination/cursor.rb +7 -7
- data/lib/slack-ruby-client.rb +12 -5
- data/lib/slack.rb +1 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +51 -21
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +48 -12
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +7 -12
- data/spec/fixtures/slack/web/429_error.yml +50 -54
- data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
- data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
- data/spec/fixtures/slack/web/conversations_info.yml +167 -0
- data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
- data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
- data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
- data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
- data/spec/fixtures/slack/web/rtm_connect.yml +347 -26
- data/spec/fixtures/slack/web/users_info.yml +153 -69
- data/spec/fixtures/slack/web/users_list.yml +102 -41
- data/spec/fixtures/slack/web/views_open_error.yml +83 -0
- data/spec/integration/integration_spec.rb +115 -47
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +35 -0
- data/spec/slack/events/request_spec.rb +188 -0
- data/spec/slack/messages/formatting_spec.rb +35 -13
- data/spec/slack/real_time/api/message_spec.rb +7 -2
- data/spec/slack/real_time/api/ping_spec.rb +3 -1
- data/spec/slack/real_time/api/typing_spec.rb +6 -2
- data/spec/slack/real_time/client_spec.rb +300 -142
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
- data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/event_handlers/bot_spec.rb +20 -17
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
- data/spec/slack/real_time/event_handlers/im_spec.rb +31 -27
- data/spec/slack/real_time/event_handlers/{group_spec.rb → private_channel_spec.rb} +36 -27
- data/spec/slack/real_time/event_handlers/{channel_spec.rb → public_channel_spec.rb} +31 -24
- data/spec/slack/real_time/event_handlers/team_spec.rb +8 -7
- data/spec/slack/real_time/event_handlers/user_spec.rb +7 -5
- data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
- data/spec/slack/real_time/stores/store_spec.rb +50 -0
- data/spec/slack/slack_spec.rb +41 -6
- data/spec/slack/version_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
- data/spec/slack/web/api/endpoints/admin_audit_anomaly_allow_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
- data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
- data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
- data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
- data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
- data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
- data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
- data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
- data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → auth_teams_spec.rb} +2 -1
- data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
- data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
- data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +9 -7
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +144 -40
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +18 -6
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +8 -3
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +112 -0
- data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
- data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/files_spec.rb +18 -4
- data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -22
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
- data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → team_billing_spec.rb} +2 -1
- data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
- data/spec/slack/web/api/error_spec.rb +7 -7
- data/spec/slack/web/api/errors/slack_error_spec.rb +26 -7
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +45 -0
- data/spec/slack/web/api/mixins/users_spec.rb +19 -8
- data/spec/slack/web/api/pagination/cursor_spec.rb +47 -15
- data/spec/slack/web/client_spec.rb +199 -22
- data/spec/slack/web/faraday/request_spec.rb +80 -0
- data/spec/slack/web/faraday/response/raise_error_spec.rb +48 -12
- data/spec/spec_helper.rb +9 -2
- data/spec/support/queue_with_timeout.rb +5 -4
- data/spec/support/real_time/concurrency/mock.rb +1 -0
- data/spec/support/real_time/connected_client.rb +6 -6
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/real_time/loaded_client.rb +120 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +37 -1
- metadata +174 -262
- data/.travis.yml +0 -32
- data/bin/commands/apps_permissions.rb +0 -22
- data/bin/commands/apps_permissions_resources.rb +0 -14
- data/bin/commands/apps_permissions_scopes.rb +0 -12
- data/bin/commands/apps_permissions_users.rb +0 -25
- data/bin/commands/channels.rb +0 -175
- data/bin/commands/groups.rb +0 -174
- data/bin/commands/im.rb +0 -67
- data/bin/commands/mpim.rb +0 -65
- data/examples/hi_real_time/Gemfile +0 -5
- data/examples/hi_real_time/hi.gif +0 -0
- data/examples/hi_real_time/hi.rb +0 -37
- data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
- data/examples/hi_real_time_async_celluloid/Procfile +0 -2
- data/examples/hi_real_time_async_celluloid/hi.rb +0 -35
- data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
- data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
- data/examples/hi_real_time_async_eventmachine/hi.rb +0 -35
- data/lib/slack/real_time/concurrency/celluloid.rb +0 -118
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
- data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +0 -30
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +0 -20
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +0 -49
- data/lib/slack/web/api/endpoints/channels.rb +0 -266
- data/lib/slack/web/api/endpoints/groups.rb +0 -265
- data/lib/slack/web/api/endpoints/im.rb +0 -113
- data/lib/slack/web/api/endpoints/mpim.rb +0 -108
- data/lib/slack/web/api/endpoints/presence.rb +0 -23
- data/lib/slack/web/api/mixins/channels.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.rb +0 -26
- data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
- data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
- data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
- data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
- data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -13
- data/screenshots/register-bot.png +0 -0
- data/spec/fixtures/slack/web/503_error.yml +0 -14
- data/spec/fixtures/slack/web/channels_info.yml +0 -46
- data/spec/fixtures/slack/web/groups_info.yml +0 -43
- data/spec/fixtures/slack/web/rtm_start.yml +0 -104
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -106
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
- data/spec/slack/real_time/rtm_start_spec.rb +0 -13
- data/spec/slack/real_time/store_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -18
- data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -33
- 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,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::
|
|
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
|
|
@@ -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
|
|
@@ -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 }.
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
30
|
-
|
|
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
|
|
36
|
-
|
|
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
|
|
40
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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') }.
|
|
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: []) }.
|
|
122
|
+
expect { client.chat_postMessage(channel: 'channel', attachments: []) }.not_to raise_error
|
|
66
123
|
end
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
expect
|
|
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
|
-
|
|
144
|
+
|
|
145
|
+
it 'automatically converts attachments and blocks into JSON' do
|
|
77
146
|
expect(client).to receive(:post).with(
|
|
78
147
|
'chat.update',
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
148
|
+
{
|
|
149
|
+
channel: 'channel',
|
|
150
|
+
text: 'text',
|
|
151
|
+
ts: ts,
|
|
152
|
+
attachments: '[]',
|
|
153
|
+
blocks: '[]'
|
|
154
|
+
}
|
|
83
155
|
)
|
|
84
|
-
client.chat_update(
|
|
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
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
expect
|
|
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
|
-
|
|
10
|
-
|
|
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
|
|
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
|
|
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
|
|
24
|
-
|
|
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
|