purge for delete and purge for refreshing

This commit is contained in:
Kyle Drake 2015-08-26 16:23:21 -07:00
parent 12a543d2aa
commit 985a2f8b60
7 changed files with 184 additions and 3 deletions

View file

@ -24,16 +24,39 @@ describe 'site_files' do
end
describe 'delete' do
before do
DeleteCacheWorker.jobs.clear
DeleteCacheOrderWorker.jobs.clear
end
it 'works' do
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
upload 'files[]' => uploaded_file
PurgeCacheOrderWorker.jobs.clear
@site.reload.space_used.must_equal uploaded_file.size
file_path = @site.files_path 'test.jpg'
File.exists?(file_path).must_equal true
delete_file filename: 'test.jpg'
File.exists?(file_path).must_equal false
SiteFile[site_id: @site.id, path: 'test.jpg'].must_be_nil
@site.reload.space_used.must_equal 0
PurgeCacheOrderWorker.jobs.length.must_equal 0
DeleteCacheOrderWorker.jobs.length.must_equal 1
args = DeleteCacheOrderWorker.jobs.first['args']
args[0].must_equal @site.username
args[1].must_equal 'test.jpg'
end
it 'flushes surf for index.html' do
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/index.html', 'text/html')
upload 'files[]' => uploaded_file
delete_file filename: '/index.html'
DeleteCacheOrderWorker.jobs.length.must_equal 3
DeleteCacheOrderWorker.jobs.collect {|j| j['args'].last}.must_equal ['/index.html', '/?surf=1', '/']
end
it 'deletes a directory and all files in it' do

View file

@ -0,0 +1,21 @@
require_relative '../environment.rb'
describe DeleteCacheWorker do
before do
PurgeCacheOrderWorker.jobs.clear
PurgeCacheWorker.jobs.clear
end
it 'queues up purges' do
DeleteCacheOrderWorker.new.perform('kyledrake', '/test.jpg')
job_one_args = DeleteCacheWorker.jobs.first['args']
job_two_args = DeleteCacheWorker.jobs.last['args']
job_one_args[0].must_equal '10.0.0.1'
job_one_args[1].must_equal 'kyledrake'
job_one_args[2].must_equal '/test.jpg'
job_two_args[0].must_equal '10.0.0.2'
job_two_args[1].must_equal 'kyledrake'
job_two_args[2].must_equal '/test.jpg'
end
end

View file

@ -0,0 +1,64 @@
require_relative '../environment.rb'
describe DeleteCacheWorker do
before do
@test_ip = '10.0.0.1'
end
it 'throws exception without 200 or 404 http status' do
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
with(headers: {'Host' => 'kyledrake.neocities.org'})
.to_return(status: 503)
worker = DeleteCacheWorker.new
proc {
worker.perform @test_ip, 'kyledrake', '/test.jpg'
}.must_raise RestClient::ServiceUnavailable
end
it 'handles 404 without exception' do
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
with(headers: {'Host' => 'kyledrake.neocities.org'})
.to_return(status: 404)
worker = DeleteCacheWorker.new
worker.perform @test_ip, 'kyledrake', '/test.jpg'
end
it 'sends a purge request' do
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
with(headers: {'Host' => 'kyledrake.neocities.org'})
.to_return(status: 200)
worker = DeleteCacheWorker.new
worker.perform @test_ip, 'kyledrake', '/test.jpg'
assert_requested :get, "http://#{@test_ip}/:cache/purge/test.jpg"
end
it 'handles spaces correctly' do
stub_request(:get, "http://#{@test_ip}/:cache/purge/te st.jpg").
with(headers: {'Host' => 'kyledrake.neocities.org'})
.to_return(status: 200)
url = Addressable::URI.encode_component(
"http://#{@test_ip}/:cache/purge/te st.jpg",
Addressable::URI::CharacterClasses::QUERY
)
worker = DeleteCacheWorker.new
worker.perform @test_ip, 'kyledrake', '/te st.jpg'
assert_requested :get, url
end
it 'works without forward slash' do
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
with(headers: {'Host' => 'kyledrake.neocities.org'})
.to_return(status: 200)
worker = DeleteCacheWorker.new
worker.perform @test_ip, 'kyledrake', 'test.jpg'
end
end