spec/slack/real_time/client_spec.rb in slack-ruby-client-0.2.0 vs spec/slack/real_time/client_spec.rb in slack-ruby-client-0.2.1
- old
+ new
@@ -1,93 +1,124 @@
require 'spec_helper'
RSpec.describe Slack::RealTime::Client, vcr: { cassette_name: 'web/rtm_start' } do
- let(:client) { Slack::RealTime::Client.new }
let(:ws) { double(Faye::WebSocket::Client, on: true) }
let(:url) { 'wss://ms173.slack-msgs.com/websocket/lqcUiAvrKTP-uuid=' }
before do
allow(EM).to receive(:run).and_yield
end
- context 'started' do
- describe '#start!' do
- let(:socket) { double(Slack::RealTime::Socket, connected?: true) }
- before do
- allow(Slack::RealTime::Socket).to receive(:new).with(url, ping: 30).and_return(socket)
- allow(socket).to receive(:connect!).and_yield(ws)
- client.start!
+ context 'token' do
+ before do
+ Slack.configure do |config|
+ config.token = 'global default'
end
- context 'properties provided upon connection' do
- it 'sets url' do
- expect(client.url).to eq url
+ end
+ it 'defaults token to global default' do
+ client = Slack::RealTime::Client.new
+ expect(client.token).to eq 'global default'
+ expect(client.web_client.token).to eq 'global default'
+ end
+ context 'with real time config' do
+ before do
+ Slack::RealTime::Client.configure do |config|
+ config.token = 'custom real time token'
end
- it 'sets team' do
- expect(client.team['domain']).to eq 'dblockdotorg'
- end
- it 'sets self' do
- expect(client.self['id']).to eq 'U07518DTL'
- end
- it 'sets users' do
- expect(client.users.count).to eq 7
- expect(client.users.first['id']).to eq 'U07KECJ77'
- end
- it 'sets channels' do
- expect(client.channels.count).to eq 8
- expect(client.channels.first['name']).to eq 'demo'
- end
- it 'sets ims' do
- expect(client.ims.count).to eq 2
- expect(client.ims.first['user']).to eq 'USLACKBOT'
- end
- it 'sets bots' do
- expect(client.bots.count).to eq 5
- expect(client.bots.first['name']).to eq 'bot'
- end
- it 'sets groups' do
- expect(client.groups.count).to eq 0
- end
end
- it 'uses web client to fetch url' do
- expect(client.web_client).to be_a Slack::Web::Client
+ it 'overrides token to real time config' do
+ client = Slack::RealTime::Client.new
+ expect(client.token).to eq 'custom real time token'
+ expect(client.web_client.token).to eq 'custom real time token'
end
- it 'remembers socket' do
- expect(client.instance_variable_get('@socket')).to eq socket
+ it 'overrides token to specific token' do
+ client = Slack::RealTime::Client.new(token: 'local token')
+ expect(client.token).to eq 'local token'
+ expect(client.web_client.token).to eq 'local token'
end
- it 'cannot be invoked twice' do
- expect do
- client.start!
- end.to raise_error Slack::RealTime::Client::ClientAlreadyStartedError
- end
- describe '#stop!' do
+ end
+ end
+ context 'client' do
+ let(:client) { Slack::RealTime::Client.new }
+ context 'started' do
+ describe '#start!' do
+ let(:socket) { double(Slack::RealTime::Socket, connected?: true) }
before do
- expect(socket).to receive(:disconnect!)
- client.stop!
+ allow(Slack::RealTime::Socket).to receive(:new).with(url, ping: 30).and_return(socket)
+ allow(socket).to receive(:connect!).and_yield(ws)
+ client.start!
end
+ context 'properties provided upon connection' do
+ it 'sets url' do
+ expect(client.url).to eq url
+ end
+ it 'sets team' do
+ expect(client.team['domain']).to eq 'dblockdotorg'
+ end
+ it 'sets self' do
+ expect(client.self['id']).to eq 'U07518DTL'
+ end
+ it 'sets users' do
+ expect(client.users.count).to eq 7
+ expect(client.users.first['id']).to eq 'U07KECJ77'
+ end
+ it 'sets channels' do
+ expect(client.channels.count).to eq 8
+ expect(client.channels.first['name']).to eq 'demo'
+ end
+ it 'sets ims' do
+ expect(client.ims.count).to eq 2
+ expect(client.ims.first['user']).to eq 'USLACKBOT'
+ end
+ it 'sets bots' do
+ expect(client.bots.count).to eq 5
+ expect(client.bots.first['name']).to eq 'bot'
+ end
+ it 'sets groups' do
+ expect(client.groups.count).to eq 0
+ end
+ end
+ it 'uses web client to fetch url' do
+ expect(client.web_client).to be_a Slack::Web::Client
+ end
+ it 'remembers socket' do
+ expect(client.instance_variable_get('@socket')).to eq socket
+ end
it 'cannot be invoked twice' do
- client.instance_variable_set('@socket', nil) # caused by a :close callback
expect do
+ client.start!
+ end.to raise_error Slack::RealTime::Client::ClientAlreadyStartedError
+ end
+ describe '#stop!' do
+ before do
+ expect(socket).to receive(:disconnect!)
client.stop!
- end.to raise_error Slack::RealTime::Client::ClientNotStartedError
+ end
+ it 'cannot be invoked twice' do
+ client.instance_variable_set('@socket', nil) # caused by a :close callback
+ expect do
+ client.stop!
+ end.to raise_error Slack::RealTime::Client::ClientNotStartedError
+ end
end
- end
- describe '#next_id' do
- it 'increments' do
- previous_id = client.send(:next_id)
- expect(client.send(:next_id)).to eq previous_id + 1
+ describe '#next_id' do
+ it 'increments' do
+ previous_id = client.send(:next_id)
+ expect(client.send(:next_id)).to eq previous_id + 1
+ end
end
end
end
- end
- context 'with defaults' do
- describe '#initialize' do
- it 'sets ping' do
- expect(client.websocket_ping).to eq 30
- end
- it "doesn't set proxy" do
- expect(client.websocket_proxy).to be nil
- end
- Slack::RealTime::Config::ATTRIBUTES.each do |key|
- it "sets #{key}" do
- expect(client.send(key)).to eq Slack::RealTime::Config.send(key)
+ context 'with defaults' do
+ describe '#initialize' do
+ it 'sets ping' do
+ expect(client.websocket_ping).to eq 30
+ end
+ it "doesn't set proxy" do
+ expect(client.websocket_proxy).to be nil
+ end
+ Slack::RealTime::Config::ATTRIBUTES.each do |key|
+ it "sets #{key}" do
+ expect(client.send(key)).to eq Slack::RealTime::Config.send(key)
+ end
end
end
end
end
context 'with custom settings' do