spec/grape/batch/base_spec.rb in grape-batch-2.1.1 vs spec/grape/batch/base_spec.rb in grape-batch-2.2.0

- old
+ new

@@ -1,9 +1,9 @@ require 'spec_helper' require 'rack/test' require 'grape' -require 'grape/batch' +require 'grape/base' require 'api' RSpec.describe Grape::Batch::Base do before(:all) do Grape::Batch.configuration.logger = Logger.new('/dev/null') @@ -173,9 +173,47 @@ let(:request_1) { { method: 'POST', path: '/api/v1/hello' } } let(:request_2) { { method: 'GET', path: '/api/v1/user/856' } } let(:request_body) { encode(requests: [request_1, request_2]) } it { expect(response.status).to eq(200) } it { expect(decode(response.body).size).to eq(2) } + end + end + + describe 'single session' do + describe 'without token' do + let(:request_1) { { method: 'POST', path: '/api/v1/login' } } + let(:request_body) { encode(requests: [request_1]) } + it { expect(response.status).to eq(200) } + it { expect(response.body).to eq(encode([{ success: 'token invalid' }])) } + it { expect(response.headers).to_not include('HTTP_X_API_TOKEN') } + end + + describe 'with a token' do + let(:request_1) { { method: 'GET', path: '/api/v1/login' } } + let(:request_2) { { method: 'POST', path: '/api/v1/login' } } + let(:request_body) { encode(requests: [request_1, request_2]) } + let(:expected_response) { [{ success: 'login successful' }, { success: 'token valid' }] } + it { expect(response.status).to eq(200) } + it { expect(response.body).to eq(encode(expected_response)) } + it { expect(response.headers).to_not include('HTTP_X_API_TOKEN') } + end + + describe 'without session' do + let(:request_1) { { method: 'POST', path: '/api/v1/session' } } + let(:request_body) { encode(requests: [request_1]) } + it { expect(response.status).to eq(200) } + it { expect(response.body).to eq(encode([{ success: 'session invalid' }])) } + it { expect(response.headers).to_not include('api.session') } + end + + describe 'with a session' do + let(:request_1) { { method: 'GET', path: '/api/v1/session' } } + let(:request_2) { { method: 'POST', path: '/api/v1/session' } } + let(:request_body) { encode(requests: [request_1, request_2]) } + let(:expected_response) { [{ success: 'session reloaded' }, { success: 'session valid' }] } + it { expect(response.status).to eq(200) } + it { expect(response.body).to eq(encode(expected_response)) } + it { expect(response.headers).to_not include('api.session') } end end end describe '#configure' do