spec/acceptance/rest/base_spec.rb in ably-0.1.4 vs spec/acceptance/rest/base_spec.rb in ably-0.1.5
- old
+ new
@@ -4,12 +4,62 @@
describe "REST" do
let(:client) do
Ably::Rest::Client.new(api_key: api_key, environment: environment)
end
+ describe "protocol" do
+ include Ably::Modules::Conversions
+
+ let(:client_options) { {} }
+ let(:client) do
+ Ably::Rest::Client.new(client_options.merge(api_key: 'appid.keyuid:keysecret'))
+ end
+
+ skip '#protocol should default to :msgpack'
+
+ context 'transport' do
+ let(:now) { Time.now - 1000 }
+ let(:body_value) { [as_since_epoch(now)] }
+
+ before do
+ stub_request(:get, "#{client.endpoint}/time").
+ with(:headers => { 'Accept' => mime }).
+ to_return(:status => 200, :body => request_body, :headers => { 'Content-Type' => mime })
+ end
+
+ context 'when protocol is set as :json' do
+ let(:client_options) { { protocol: :json } }
+ let(:mime) { 'application/json' }
+ let(:request_body) { body_value.to_json }
+
+ it 'uses JSON', webmock: true do
+ expect(client.protocol).to eql(:json)
+ expect(client.time).to be_within(1).of(now)
+ end
+
+ skip 'uses JSON against Ably service for Auth'
+ skip 'uses JSON against Ably service for Messages'
+ end
+
+ context 'when protocol is set as :msgpack' do
+ let(:client_options) { { protocol: :msgpack } }
+ let(:mime) { 'application/x-msgpack' }
+ let(:request_body) { body_value.to_msgpack }
+
+ it 'uses MsgPack', webmock: true do
+ expect(client.protocol).to eql(:msgpack)
+ expect(client.time).to be_within(1).of(now)
+ end
+
+ skip 'uses MsgPack against Ably service for Auth'
+ skip 'uses MsgPack against Ably service for Messages'
+ end
+ end
+ end
+
describe "invalid requests in middleware" do
it "should raise an InvalidRequest exception with a valid message" do
- invalid_client = Ably::Rest::Client.new(api_key: 'appid.keyuid:keysecret')
+ invalid_client = Ably::Rest::Client.new(api_key: 'appid.keyuid:keysecret', environment: environment)
expect { invalid_client.channel('test').publish('foo', 'choo') }.to raise_error do |error|
expect(error).to be_a(Ably::Exceptions::InvalidRequest)
expect(error.message).to match(/invalid credentials/)
expect(error.code).to eql(40100)
expect(error.status).to eql(401)