Sha256: c29793311e9fef2ec08e5faa0e862480b5ed6ba086283d24e393d1084c09604a
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) # This spec more or less tries to ensure that we integrate with rack and # rack-contrib in regards to static file serving. spec_require 'rack/contrib' # minimal middleware, no exception handling Ramaze.middleware!(:spec) do |m| m.apps Rack::ConditionalGet, Rack::ETag m.run Ramaze::AppMap end class Main < Ramaze::Controller map '/' def index "nothing" end end describe 'Serving static files' do behaves_like :rack_test it 'serves from public root' do css = File.read(__DIR__('public/test_download.css')) get '/test_download.css' last_response.body.should === css last_response.status.should === 200 end it 'serves files with spaces' do get '/file%20name.txt' last_response.status.should === 200 last_response.body.should === 'hi' end it 'sends ETag for string bodies' do get '/' last_response['ETag'].size.should > 1 end it 'sends Last-Modified for file bodies' do get '/test_download.css' mtime = File.mtime(__DIR__('public/test_download.css')) last_response['Last-Modified'].should == mtime.httpdate end it 'respects ETag with IF_NONE_MATCH' do get '/' etag = last_response['ETag'] etag.should.not.be.nil header 'IF_NONE_MATCH', etag get '/' last_response.status.should === 304 last_response.body.should === '' end it 'respects Last-Modified with IF_MODIFIED_SINCE' do get '/test_download.css' mtime = last_response['Last-Modified'] mtime.nil?.should === false header 'IF_NONE_MATCH' , nil header 'IF_MODIFIED_SINCE', mtime get '/test_download.css' last_response.status.should === 304 last_response.body.should === '' end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ramaze-2012.04.14 | spec/ramaze/dispatcher/file.rb |
ramaze-2012.03.07 | spec/ramaze/dispatcher/file.rb |