travis-web/spec/app_spec.rb
Piotr Sarnacki aa43803811 Allow to set "custom_branch" for assets
When custom-branch param is set, travis-web will serve assets from S3
from given branch (the compiled assets are uploaded to S3 on each
build). Cookie will also be set to serve assets from this branch until
disabled.

Custom branch may be disabled by passing disable-custom-branch=true
param.
2013-02-21 22:12:33 +01:00

54 lines
2.1 KiB
Ruby

require 'spec_helper'
describe Travis::Web::App do
before do
current_session.global_env['HTTP_ACCEPT'] = 'text/html,*/*'
end
describe 'catch all' do
before { get('/foo/bar') }
example { last_response.should be_ok }
example { headers['Content-Location'].should be == '/' }
example { headers['Cache-Control'].should include('must-revalidate') }
example { headers['Cache-Control'].should include('public') }
example { headers['Vary'].should include('Accept') }
end
describe 'assets' do
before { get('/favicon.ico') }
example { last_response.should be_ok }
example { headers['Content-Location'].should be == '/favicon.ico' }
example { headers['Cache-Control'].should_not include('must-revalidate') }
example { headers['Cache-Control'].should include('public') }
example { headers['Vary'].split(',').should_not include('Accept') }
end
describe 'version' do
before { get('/version') }
example { last_response.should be_ok }
example { headers['Content-Location'].should be == '/version' }
example { headers['Cache-Control'].should be == 'no-cache' }
example { headers['Vary'].split(',').should_not include('Accept') }
end
describe 'custom branch' do
context 'when passing custom branch as a param' do
before { get('/?custom-branch=foo') }
example { last_response.should be_ok }
example { last_response.body.should include('/assets/foo/styles/app.css') }
example { last_response.body.should include('/assets/foo/scripts/app.js') }
example { headers['Set-Cookie'].should include('custom_branch=foo') }
end
context 'disabling custom branch' do
before { get('/?disable-custom-branch=true') }
example { last_response.should be_ok }
example { last_response.body.should =~ %r{src="/[^\/]+/scripts/app.js} }
example { last_response.body.should_not include('/assets/true/styles/app.css') }
example { last_response.body.should_not include('/assets/foo/styles/app.css') }
example { last_response.body.should_not include('/assets/foo/scripts/app.js') }
example { headers['Set-Cookie'].should include('custom_branch=;') }
end
end
end