slack-ruby-client 0.14.4 → 0.14.5
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/.rubocop.yml +19 -11
- data/.rubocop_todo.yml +66 -47
- data/CHANGELOG.md +8 -0
- data/Dangerfile +1 -0
- data/Gemfile +1 -0
- data/README.md +16 -9
- data/Rakefile +1 -0
- data/bin/commands.rb +6 -0
- data/bin/commands/admin_apps.rb +27 -0
- data/bin/commands/admin_apps_requests.rb +16 -0
- data/bin/commands/admin_users_session.rb +3 -2
- data/bin/commands/api.rb +3 -2
- data/bin/commands/apps.rb +3 -2
- data/bin/commands/apps_permissions.rb +5 -4
- data/bin/commands/apps_permissions_resources.rb +3 -2
- data/bin/commands/apps_permissions_scopes.rb +3 -2
- data/bin/commands/apps_permissions_users.rb +5 -4
- data/bin/commands/auth.rb +5 -4
- data/bin/commands/bots.rb +3 -2
- data/bin/commands/channels.rb +31 -30
- data/bin/commands/chat.rb +19 -18
- data/bin/commands/chat_scheduledMessages.rb +3 -2
- data/bin/commands/conversations.rb +35 -34
- data/bin/commands/dialog.rb +3 -2
- data/bin/commands/dnd.rb +9 -8
- data/bin/commands/emoji.rb +3 -2
- data/bin/commands/files.rb +13 -12
- data/bin/commands/files_comments.rb +3 -2
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/groups.rb +33 -32
- data/bin/commands/im.rb +13 -12
- data/bin/commands/migration.rb +3 -2
- data/bin/commands/mpim.rb +11 -10
- data/bin/commands/oauth.rb +5 -4
- data/bin/commands/oauth_v2.rb +17 -0
- data/bin/commands/pins.rb +7 -8
- data/bin/commands/reactions.rb +10 -11
- data/bin/commands/reminders.rb +11 -10
- data/bin/commands/rtm.rb +5 -4
- data/bin/commands/search.rb +7 -6
- data/bin/commands/stars.rb +7 -6
- data/bin/commands/team.rb +9 -8
- data/bin/commands/team_profile.rb +3 -2
- data/bin/commands/usergroups.rb +11 -10
- data/bin/commands/usergroups_users.rb +5 -4
- data/bin/commands/users.rb +21 -20
- data/bin/commands/users_admin.rb +1 -0
- data/bin/commands/users_prefs.rb +1 -0
- data/bin/commands/users_profile.rb +5 -4
- data/bin/commands/views.rb +48 -0
- data/bin/slack +1 -2
- data/examples/hi_real_time/Gemfile +1 -0
- data/examples/hi_real_time/hi.rb +7 -3
- 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_real_time_async_celluloid/Gemfile +1 -0
- data/examples/hi_real_time_async_celluloid/hi.rb +7 -3
- data/examples/hi_real_time_async_eventmachine/Gemfile +1 -0
- data/examples/hi_real_time_async_eventmachine/hi.rb +7 -3
- 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-ruby-client.rb +3 -2
- data/lib/slack.rb +1 -0
- data/lib/slack/config.rb +1 -0
- data/lib/slack/events/config.rb +1 -0
- data/lib/slack/events/request.rb +3 -1
- data/lib/slack/logger.rb +6 -5
- data/lib/slack/messages/formatting.rb +1 -0
- data/lib/slack/messages/message.rb +1 -0
- data/lib/slack/real_time/api/message.rb +3 -1
- 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/typing.rb +3 -1
- data/lib/slack/real_time/client.rb +19 -12
- data/lib/slack/real_time/concurrency.rb +1 -0
- data/lib/slack/real_time/concurrency/async.rb +15 -7
- data/lib/slack/real_time/concurrency/celluloid.rb +9 -3
- data/lib/slack/real_time/concurrency/eventmachine.rb +7 -4
- data/lib/slack/real_time/config.rb +6 -1
- data/lib/slack/real_time/models.rb +1 -0
- data/lib/slack/real_time/models/base.rb +1 -0
- data/lib/slack/real_time/models/bot.rb +1 -0
- data/lib/slack/real_time/models/channel.rb +1 -0
- data/lib/slack/real_time/models/group.rb +1 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- 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/socket.rb +14 -11
- data/lib/slack/real_time/stores.rb +1 -0
- data/lib/slack/real_time/stores/base.rb +1 -0
- data/lib/slack/real_time/stores/starter.rb +1 -0
- data/lib/slack/real_time/stores/store.rb +16 -25
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints.rb +11 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +2 -1
- data/lib/slack/web/api/endpoints/api.rb +2 -1
- data/lib/slack/web/api/endpoints/apps.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions.rb +3 -2
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +3 -2
- data/lib/slack/web/api/endpoints/auth.rb +3 -2
- data/lib/slack/web/api/endpoints/bots.rb +2 -1
- data/lib/slack/web/api/endpoints/channels.rb +16 -16
- data/lib/slack/web/api/endpoints/chat.rb +10 -9
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +2 -1
- data/lib/slack/web/api/endpoints/conversations.rb +18 -17
- data/lib/slack/web/api/endpoints/dialog.rb +2 -1
- data/lib/slack/web/api/endpoints/dnd.rb +5 -4
- data/lib/slack/web/api/endpoints/emoji.rb +2 -1
- data/lib/slack/web/api/endpoints/files.rb +7 -6
- data/lib/slack/web/api/endpoints/files_comments.rb +2 -1
- data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
- data/lib/slack/web/api/endpoints/groups.rb +17 -22
- data/lib/slack/web/api/endpoints/im.rb +7 -8
- data/lib/slack/web/api/endpoints/migration.rb +2 -1
- data/lib/slack/web/api/endpoints/mpim.rb +6 -7
- data/lib/slack/web/api/endpoints/oauth.rb +3 -2
- data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
- data/lib/slack/web/api/endpoints/pins.rb +5 -9
- data/lib/slack/web/api/endpoints/reactions.rb +9 -12
- data/lib/slack/web/api/endpoints/reminders.rb +6 -5
- data/lib/slack/web/api/endpoints/rtm.rb +3 -2
- data/lib/slack/web/api/endpoints/search.rb +4 -3
- data/lib/slack/web/api/endpoints/stars.rb +4 -5
- data/lib/slack/web/api/endpoints/team.rb +5 -5
- data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
- data/lib/slack/web/api/endpoints/usergroups.rb +6 -5
- data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -2
- data/lib/slack/web/api/endpoints/users.rb +11 -16
- data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
- data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +3 -2
- data/lib/slack/web/api/endpoints/views.rb +97 -0
- data/lib/slack/web/api/error.rb +1 -0
- data/lib/slack/web/api/errors/slack_error.rb +2 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
- data/lib/slack/web/api/mixins.rb +1 -0
- data/lib/slack/web/api/mixins/channels.id.rb +1 -0
- data/lib/slack/web/api/mixins/groups.id.rb +1 -0
- data/lib/slack/web/api/mixins/ids.id.rb +4 -1
- data/lib/slack/web/api/mixins/users.id.rb +1 -0
- data/lib/slack/web/api/mixins/users.search.rb +1 -0
- data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
- data/lib/slack/web/api/patches/views.1.views-published.patch +16 -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 +1 -0
- data/lib/slack/web/api/templates/method.erb +1 -0
- data/lib/slack/web/api/templates/method_spec.erb +1 -0
- data/lib/slack/web/client.rb +1 -0
- data/lib/slack/web/config.rb +1 -0
- data/lib/slack/web/faraday/connection.rb +1 -0
- data/lib/slack/web/faraday/request.rb +1 -0
- data/lib/slack/web/faraday/response/raise_error.rb +7 -6
- data/lib/slack/web/pagination/cursor.rb +1 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +12 -4
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +17 -6
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +4 -1
- data/spec/integration/integration_spec.rb +16 -17
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +8 -4
- data/spec/slack/events/request_spec.rb +67 -37
- data/spec/slack/messages/formatting_spec.rb +25 -13
- data/spec/slack/real_time/api/message_spec.rb +6 -1
- data/spec/slack/real_time/api/ping_spec.rb +2 -0
- data/spec/slack/real_time/api/typing_spec.rb +5 -1
- data/spec/slack/real_time/client_spec.rb +137 -39
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +11 -6
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +9 -1
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
- data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
- data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
- data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
- data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
- data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
- data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
- data/spec/slack/real_time/rtm_connect_spec.rb +1 -0
- data/spec/slack/real_time/rtm_start_spec.rb +1 -0
- data/spec/slack/real_time/store_spec.rb +2 -1
- data/spec/slack/slack_spec.rb +37 -5
- data/spec/slack/version_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/conversations_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +2 -0
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +80 -25
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
- data/spec/slack/web/api/endpoints/dnd_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/files_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/im_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/pins_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
- data/spec/slack/web/api/endpoints/reminders_spec.rb +1 -0
- 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/team_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +1 -0
- 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/views_spec.rb +29 -0
- data/spec/slack/web/api/error_spec.rb +4 -2
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +6 -3
- data/spec/slack/web/api/errors/slack_error_spec.rb +4 -2
- data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
- data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
- data/spec/slack/web/api/mixins/users_spec.rb +17 -8
- data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
- data/spec/slack/web/client_spec.rb +45 -18
- data/spec/slack/web/faraday/response/raise_error_spec.rb +16 -5
- data/spec/spec_helper.rb +2 -1
- data/spec/support/queue_with_timeout.rb +1 -0
- data/spec/support/real_time/concurrency/mock.rb +1 -0
- data/spec/support/real_time/connected_client.rb +9 -3
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +1 -0
- metadata +59 -7
- data/screenshots/register-bot.png +0 -0
|
@@ -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::FilesRemote do
|
|
7
|
+
let(:client) { Slack::Web::Client.new }
|
|
8
|
+
context 'files.remote_add' do
|
|
9
|
+
it 'requires external_id' do
|
|
10
|
+
expect { client.files_remote_add(external_url: 'http://example.com/my_cloud_service_file/abc123', title: 'Danger, High Voltage!') }.to raise_error ArgumentError, /Required arguments :external_id missing/
|
|
11
|
+
end
|
|
12
|
+
it 'requires external_url' do
|
|
13
|
+
expect { client.files_remote_add(external_id: '123456', title: 'Danger, High Voltage!') }.to raise_error ArgumentError, /Required arguments :external_url missing/
|
|
14
|
+
end
|
|
15
|
+
it 'requires title' do
|
|
16
|
+
expect { client.files_remote_add(external_id: '123456', external_url: 'http://example.com/my_cloud_service_file/abc123') }.to raise_error ArgumentError, /Required arguments :title missing/
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
context 'files.remote_share' do
|
|
20
|
+
it 'requires channels' do
|
|
21
|
+
expect { client.files_remote_share }.to raise_error ArgumentError, /Required arguments :channels missing/
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
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::OauthV2 do
|
|
7
|
+
let(:client) { Slack::Web::Client.new }
|
|
8
|
+
context 'oauth.v2_access' do
|
|
9
|
+
it 'requires code' do
|
|
10
|
+
expect { client.oauth_v2_access }.to raise_error ArgumentError, /Required arguments :code missing/
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
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'
|
|
@@ -6,7 +7,10 @@ RSpec.describe Slack::Web::Api::Endpoints::Pins do
|
|
|
6
7
|
let(:client) { Slack::Web::Client.new }
|
|
7
8
|
context 'pins_add' do
|
|
8
9
|
it 'requires channel' do
|
|
9
|
-
expect { client.pins_add }.to raise_error ArgumentError, /Required arguments :channel missing/
|
|
10
|
+
expect { client.pins_add(timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :channel missing/
|
|
11
|
+
end
|
|
12
|
+
it 'requires timestamp' do
|
|
13
|
+
expect { client.pins_add(channel: 'C1234567890') }.to raise_error ArgumentError, /Required arguments :timestamp missing/
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
context 'pins_list' do
|
|
@@ -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'
|
|
@@ -5,8 +6,14 @@ require 'spec_helper'
|
|
|
5
6
|
RSpec.describe Slack::Web::Api::Endpoints::Reactions do
|
|
6
7
|
let(:client) { Slack::Web::Client.new }
|
|
7
8
|
context 'reactions_add' do
|
|
9
|
+
it 'requires channel' do
|
|
10
|
+
expect { client.reactions_add(name: 'thumbsup', timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :channel missing/
|
|
11
|
+
end
|
|
8
12
|
it 'requires name' do
|
|
9
|
-
expect { client.reactions_add }.to raise_error ArgumentError, /Required arguments :name missing/
|
|
13
|
+
expect { client.reactions_add(channel: 'C1234567890', timestamp: '1234567890.123456') }.to raise_error ArgumentError, /Required arguments :name missing/
|
|
14
|
+
end
|
|
15
|
+
it 'requires timestamp' do
|
|
16
|
+
expect { client.reactions_add(channel: 'C1234567890', name: 'thumbsup') }.to raise_error ArgumentError, /Required arguments :timestamp missing/
|
|
10
17
|
end
|
|
11
18
|
end
|
|
12
19
|
context 'reactions_remove' do
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
require 'spec_helper'
|
|
5
|
+
|
|
6
|
+
RSpec.describe Slack::Web::Api::Endpoints::Views do
|
|
7
|
+
let(:client) { Slack::Web::Client.new }
|
|
8
|
+
context 'views_open' do
|
|
9
|
+
it 'requires trigger_id' do
|
|
10
|
+
expect { client.views_open(view: ' ') }.to raise_error ArgumentError, /Required arguments :trigger_id missing/
|
|
11
|
+
end
|
|
12
|
+
it 'requires view' do
|
|
13
|
+
expect { client.views_open(trigger_id: '12345.98765.abcd2358fdea') }.to raise_error ArgumentError, /Required arguments :view missing/
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
context 'views_push' do
|
|
17
|
+
it 'requires trigger_id' do
|
|
18
|
+
expect { client.views_push(view: ' ') }.to raise_error ArgumentError, /Required arguments :trigger_id missing/
|
|
19
|
+
end
|
|
20
|
+
it 'requires view' do
|
|
21
|
+
expect { client.views_push(trigger_id: '12345.98765.abcd2358fdea') }.to raise_error ArgumentError, /Required arguments :view missing/
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
context 'views_update' do
|
|
25
|
+
it 'requires view' do
|
|
26
|
+
expect { client.views_update }.to raise_error ArgumentError, /Required arguments :view missing/
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Error do
|
|
4
5
|
let(:client) { Slack::Web::Client.new }
|
|
6
|
+
|
|
5
7
|
it 'provides access to the response object', vcr: { cassette_name: 'web/auth_test_error' } do
|
|
6
8
|
begin
|
|
7
9
|
client.auth_test
|
|
8
10
|
raise 'Expected to receive Slack::Web::Api::Error.'
|
|
9
|
-
rescue
|
|
10
|
-
expect(e.response).
|
|
11
|
+
rescue described_class => e
|
|
12
|
+
expect(e.response).not_to be_nil
|
|
11
13
|
expect(e.response.status).to eq 200
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Client do
|
|
4
|
-
let(:client) {
|
|
5
|
-
|
|
5
|
+
let(:client) { described_class.new }
|
|
6
|
+
|
|
7
|
+
it 'raises a Faraday::ClientError when Slack is unavailable',
|
|
8
|
+
vcr: { cassette_name: 'web/503_error' } do
|
|
6
9
|
begin
|
|
7
10
|
client.auth_test
|
|
8
11
|
raise 'Expected to receive Faraday::ClientError.'
|
|
9
12
|
rescue Faraday::ClientError => e
|
|
10
|
-
expect(e.response).
|
|
13
|
+
expect(e.response).not_to be_nil
|
|
11
14
|
expect(e.response[:status]).to eq 503
|
|
12
15
|
end
|
|
13
16
|
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Errors::SlackError do
|
|
4
5
|
let(:client) { Slack::Web::Client.new }
|
|
6
|
+
|
|
5
7
|
it 'provides access to the response object', vcr: { cassette_name: 'web/auth_test_error' } do
|
|
6
8
|
begin
|
|
7
9
|
client.auth_test
|
|
8
10
|
raise 'Expected to receive Slack::Web::Api::Errors::SlackError.'
|
|
9
|
-
rescue
|
|
10
|
-
expect(e.response).
|
|
11
|
+
rescue described_class => e
|
|
12
|
+
expect(e.response).not_to be_nil
|
|
11
13
|
expect(e.response.status).to eq 200
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Mixins::Channels do
|
|
5
|
+
subject(:channels) do
|
|
6
|
+
klass.new
|
|
7
|
+
end
|
|
8
|
+
|
|
4
9
|
let(:klass) do
|
|
5
10
|
Class.new do
|
|
6
11
|
include Slack::Web::Api::Mixins::Channels
|
|
7
12
|
end
|
|
8
13
|
end
|
|
9
|
-
|
|
10
|
-
klass.new
|
|
11
|
-
end
|
|
14
|
+
|
|
12
15
|
before do
|
|
13
|
-
allow(
|
|
16
|
+
allow(channels).to receive(:channels_list).and_return(
|
|
14
17
|
Slack::Messages::Message.new(
|
|
15
18
|
'channels' => [{
|
|
16
19
|
'id' => 'CDEADBEEF',
|
|
@@ -19,15 +22,22 @@ RSpec.describe Slack::Web::Api::Mixins::Channels do
|
|
|
19
22
|
)
|
|
20
23
|
)
|
|
21
24
|
end
|
|
25
|
+
|
|
22
26
|
context '#channels_id' do
|
|
23
27
|
it 'leaves channels specified by ID alone' do
|
|
24
|
-
expect(
|
|
28
|
+
expect(channels.channels_id(channel: 'C123456')).to(
|
|
29
|
+
eq('ok' => true, 'channel' => { 'id' => 'C123456' })
|
|
30
|
+
)
|
|
25
31
|
end
|
|
26
32
|
it 'translates a channel that starts with a #' do
|
|
27
|
-
expect(
|
|
33
|
+
expect(channels.channels_id(channel: '#general')).to(
|
|
34
|
+
eq('ok' => true, 'channel' => { 'id' => 'CDEADBEEF' })
|
|
35
|
+
)
|
|
28
36
|
end
|
|
29
37
|
it 'fails with an exception' do
|
|
30
|
-
expect {
|
|
38
|
+
expect { channels.channels_id(channel: '#invalid') }.to(
|
|
39
|
+
raise_error(Slack::Web::Api::Errors::SlackError, 'channel_not_found')
|
|
40
|
+
)
|
|
31
41
|
end
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Mixins::Groups do
|
|
5
|
+
subject(:groups) do
|
|
6
|
+
klass.new
|
|
7
|
+
end
|
|
8
|
+
|
|
4
9
|
let(:klass) do
|
|
5
10
|
Class.new do
|
|
6
11
|
include Slack::Web::Api::Mixins::Groups
|
|
7
12
|
end
|
|
8
13
|
end
|
|
9
|
-
|
|
10
|
-
klass.new
|
|
11
|
-
end
|
|
14
|
+
|
|
12
15
|
before do
|
|
13
|
-
allow(
|
|
16
|
+
allow(groups).to receive(:groups_list).and_return(
|
|
14
17
|
Slack::Messages::Message.new(
|
|
15
18
|
'groups' => [{
|
|
16
19
|
'id' => 'CDEADBEEF',
|
|
@@ -19,15 +22,22 @@ RSpec.describe Slack::Web::Api::Mixins::Groups do
|
|
|
19
22
|
)
|
|
20
23
|
)
|
|
21
24
|
end
|
|
25
|
+
|
|
22
26
|
context '#groups_id' do
|
|
23
27
|
it 'leaves groups specified by ID alone' do
|
|
24
|
-
expect(
|
|
28
|
+
expect(groups.groups_id(channel: 'C123456')).to(
|
|
29
|
+
eq('ok' => true, 'group' => { 'id' => 'C123456' })
|
|
30
|
+
)
|
|
25
31
|
end
|
|
26
32
|
it 'translates a channel that starts with a #' do
|
|
27
|
-
expect(
|
|
33
|
+
expect(groups.groups_id(channel: '#general')).to(
|
|
34
|
+
eq('ok' => true, 'group' => { 'id' => 'CDEADBEEF' })
|
|
35
|
+
)
|
|
28
36
|
end
|
|
29
37
|
it 'fails with an exception' do
|
|
30
|
-
expect {
|
|
38
|
+
expect { groups.groups_id(channel: '#invalid') }.to(
|
|
39
|
+
raise_error(Slack::Web::Api::Errors::SlackError, 'channel_not_found')
|
|
40
|
+
)
|
|
31
41
|
end
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Mixins::Users do
|
|
5
|
+
subject(:users) do
|
|
6
|
+
klass.new
|
|
7
|
+
end
|
|
8
|
+
|
|
4
9
|
let(:klass) do
|
|
5
10
|
Class.new do
|
|
6
11
|
include Slack::Web::Api::Mixins::Users
|
|
7
12
|
end
|
|
8
13
|
end
|
|
9
|
-
|
|
10
|
-
klass.new
|
|
11
|
-
end
|
|
14
|
+
|
|
12
15
|
before do
|
|
13
|
-
allow(
|
|
16
|
+
allow(users).to receive(:users_list).and_return(
|
|
14
17
|
Slack::Messages::Message.new(
|
|
15
18
|
'members' => [{
|
|
16
19
|
'id' => 'UDEADBEEF',
|
|
@@ -20,21 +23,27 @@ RSpec.describe Slack::Web::Api::Mixins::Users do
|
|
|
20
23
|
)
|
|
21
24
|
)
|
|
22
25
|
end
|
|
26
|
+
|
|
23
27
|
context '#users_id' do
|
|
24
28
|
it 'leaves users specified by ID alone' do
|
|
25
|
-
expect(
|
|
29
|
+
expect(users.users_id(user: 'U123456')).to eq('ok' => true, 'user' => { 'id' => 'U123456' })
|
|
26
30
|
end
|
|
27
31
|
it 'translates a user that starts with a #' do
|
|
28
|
-
expect(
|
|
32
|
+
expect(users.users_id(user: '@aws')).to eq('ok' => true, 'user' => { 'id' => 'UDEADBEEF' })
|
|
29
33
|
end
|
|
30
34
|
it 'fails with an exception' do
|
|
31
|
-
expect {
|
|
35
|
+
expect { users.users_id(user: '@foo') }.to(
|
|
36
|
+
raise_error(Slack::Web::Api::Errors::SlackError, 'user_not_found')
|
|
37
|
+
)
|
|
32
38
|
end
|
|
33
39
|
end
|
|
40
|
+
|
|
34
41
|
if defined?(Picky)
|
|
35
42
|
context '#users_search' do
|
|
36
43
|
it 'finds a user' do
|
|
37
|
-
expect(
|
|
44
|
+
expect(users.users_search(user: 'aws')).to(
|
|
45
|
+
eq('ok' => true, 'members' => [{ 'id' => 'UDEADBEEF', 'name' => 'aws', 'profile' => {} }])
|
|
46
|
+
)
|
|
38
47
|
end
|
|
39
48
|
end
|
|
40
49
|
end
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
|
|
3
4
|
RSpec.describe Slack::Web::Api::Pagination::Cursor do
|
|
4
5
|
let(:client) { Slack::Web::Client.new }
|
|
6
|
+
|
|
5
7
|
context 'default cursor' do
|
|
6
|
-
let(:cursor) {
|
|
8
|
+
let(:cursor) { described_class.new(client, 'users_list', {}) }
|
|
9
|
+
|
|
7
10
|
it 'provides a default limit' do
|
|
8
11
|
expect(client).to receive(:users_list).with(limit: 100, cursor: nil)
|
|
9
12
|
cursor.first
|
|
@@ -13,7 +16,9 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
|
|
|
13
16
|
cursor.to_a
|
|
14
17
|
end
|
|
15
18
|
it 'handles nil response metadata' do
|
|
16
|
-
expect(client).to
|
|
19
|
+
expect(client).to(
|
|
20
|
+
receive(:users_list).once.and_return(Slack::Messages::Message.new(response_metadata: nil))
|
|
21
|
+
)
|
|
17
22
|
cursor.to_a
|
|
18
23
|
end
|
|
19
24
|
it 'paginates with a cursor inside response metadata' do
|
|
@@ -26,21 +31,42 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
|
|
|
26
31
|
end
|
|
27
32
|
context 'with rate limiting' do
|
|
28
33
|
let(:error) { Slack::Web::Api::Errors::TooManyRequestsError.new(nil) }
|
|
34
|
+
|
|
29
35
|
context 'with default max retries' do
|
|
30
36
|
it 'sleeps after a TooManyRequestsError' do
|
|
31
|
-
expect(client).to
|
|
32
|
-
|
|
37
|
+
expect(client).to(
|
|
38
|
+
receive(:users_list)
|
|
39
|
+
.with(limit: 100, cursor: nil)
|
|
40
|
+
.ordered
|
|
41
|
+
.and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
|
|
42
|
+
)
|
|
43
|
+
expect(client).to(
|
|
44
|
+
receive(:users_list).with(limit: 100, cursor: 'next').ordered.and_raise(error)
|
|
45
|
+
)
|
|
33
46
|
expect(error).to receive(:retry_after).once.ordered.and_return(9)
|
|
34
47
|
expect(cursor).to receive(:sleep).once.ordered.with(9)
|
|
35
|
-
expect(client).to
|
|
48
|
+
expect(client).to(
|
|
49
|
+
receive(:users_list)
|
|
50
|
+
.with(limit: 100, cursor: 'next')
|
|
51
|
+
.ordered
|
|
52
|
+
.and_return(Slack::Messages::Message.new)
|
|
53
|
+
)
|
|
36
54
|
cursor.to_a
|
|
37
55
|
end
|
|
38
56
|
end
|
|
57
|
+
|
|
39
58
|
context 'with a custom max_retries' do
|
|
40
|
-
let(:cursor) {
|
|
59
|
+
let(:cursor) { described_class.new(client, 'users_list', max_retries: 4) }
|
|
60
|
+
|
|
41
61
|
it 'raises the error after hitting the max retries' do
|
|
42
|
-
expect(client).to
|
|
43
|
-
|
|
62
|
+
expect(client).to(
|
|
63
|
+
receive(:users_list)
|
|
64
|
+
.with(limit: 100, cursor: nil)
|
|
65
|
+
.and_return(Slack::Messages::Message.new(response_metadata: { next_cursor: 'next' }))
|
|
66
|
+
)
|
|
67
|
+
expect(client).to(
|
|
68
|
+
receive(:users_list).with(limit: 100, cursor: 'next').exactly(5).times.and_raise(error)
|
|
69
|
+
)
|
|
44
70
|
expect(error).to receive(:retry_after).exactly(4).times.and_return(9)
|
|
45
71
|
expect(cursor).to receive(:sleep).exactly(4).times.with(9)
|
|
46
72
|
expect { cursor.to_a }.to raise_error(error)
|
|
@@ -48,15 +74,19 @@ RSpec.describe Slack::Web::Api::Pagination::Cursor do
|
|
|
48
74
|
end
|
|
49
75
|
end
|
|
50
76
|
end
|
|
77
|
+
|
|
51
78
|
context 'with a custom limit' do
|
|
52
|
-
let(:cursor) {
|
|
79
|
+
let(:cursor) { described_class.new(client, 'users_list', limit: 42) }
|
|
80
|
+
|
|
53
81
|
it 'overrides default limit' do
|
|
54
82
|
expect(client).to receive(:users_list).with(limit: 42, cursor: nil)
|
|
55
83
|
cursor.first
|
|
56
84
|
end
|
|
57
85
|
end
|
|
86
|
+
|
|
58
87
|
context 'with a custom sleep_interval' do
|
|
59
|
-
let(:cursor) {
|
|
88
|
+
let(:cursor) { described_class.new(client, 'users_list', sleep_interval: 3) }
|
|
89
|
+
|
|
60
90
|
it 'sleeps between requests' do
|
|
61
91
|
expect(client).to receive(:users_list).exactly(3).times.and_return(
|
|
62
92
|
Slack::Messages::Message.new(response_metadata: { next_cursor: 'next_a' }),
|