mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 01:32:36 +02:00
fix cache purge test url and encode spaces
This commit is contained in:
parent
4b87c818e7
commit
a5fdbfe4a7
2 changed files with 30 additions and 9 deletions
|
@ -6,34 +6,50 @@ describe PurgeCacheWorker do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'throws exception without 200 or 404 http status' do
|
it 'throws exception without 200 or 404 http status' do
|
||||||
stub_request(:get, "http://#{@test_ip}/:cache/purgetest.jpg").
|
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
|
||||||
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
||||||
.to_return(status: 503)
|
.to_return(status: 503)
|
||||||
|
|
||||||
worker = PurgeCacheWorker.new
|
worker = PurgeCacheWorker.new
|
||||||
|
|
||||||
proc {
|
proc {
|
||||||
worker.perform @test_ip, 'kyledrake', 'test.jpg'
|
worker.perform @test_ip, 'kyledrake', '/test.jpg'
|
||||||
}.must_raise RestClient::ServiceUnavailable
|
}.must_raise RestClient::ServiceUnavailable
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'handles 404 without exception' do
|
it 'handles 404 without exception' do
|
||||||
stub_request(:get, "http://#{@test_ip}/:cache/purgetest.jpg").
|
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
|
||||||
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
||||||
.to_return(status: 404)
|
.to_return(status: 404)
|
||||||
|
|
||||||
worker = PurgeCacheWorker.new
|
worker = PurgeCacheWorker.new
|
||||||
worker.perform @test_ip, 'kyledrake', 'test.jpg'
|
worker.perform @test_ip, 'kyledrake', '/test.jpg'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sends a purge request' do
|
it 'sends a purge request' do
|
||||||
stub_request(:get, "http://#{@test_ip}/:cache/purgetest.jpg").
|
stub_request(:get, "http://#{@test_ip}/:cache/purge/test.jpg").
|
||||||
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
with(headers: {'Host' => 'kyledrake.neocities.org'})
|
||||||
.to_return(status: 200)
|
.to_return(status: 200)
|
||||||
|
|
||||||
worker = PurgeCacheWorker.new
|
worker = PurgeCacheWorker.new
|
||||||
worker.perform @test_ip, 'kyledrake', 'test.jpg'
|
worker.perform @test_ip, 'kyledrake', '/test.jpg'
|
||||||
|
|
||||||
assert_requested :get, "http://#{@test_ip}/:cache/purgetest.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 = PurgeCacheWorker.new
|
||||||
|
worker.perform @test_ip, 'kyledrake', '/te st.jpg'
|
||||||
|
|
||||||
|
assert_requested :get, url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
require 'open-uri'
|
||||||
|
|
||||||
class PurgeCacheWorker
|
class PurgeCacheWorker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
sidekiq_options queue: :purgecache, retry: 1000, backtrace: false, average_scheduled_poll_interval: 1
|
sidekiq_options queue: :purgecache, retry: 1000, backtrace: false, average_scheduled_poll_interval: 1
|
||||||
|
@ -8,9 +10,12 @@ class PurgeCacheWorker
|
||||||
end
|
end
|
||||||
|
|
||||||
def perform(proxy_ip, username, path)
|
def perform(proxy_ip, username, path)
|
||||||
url = "http://#{proxy_ip}/:cache/purge#{path}"
|
url = Addressable::URI.encode_component(
|
||||||
|
"http://#{proxy_ip}/:cache/purge#{path}",
|
||||||
|
Addressable::URI::CharacterClasses::QUERY
|
||||||
|
)
|
||||||
begin
|
begin
|
||||||
RestClient.get(url, host: "#{username}.neocities.org")
|
RestClient.get(url, host: URI::encode("#{username}.neocities.org"))
|
||||||
rescue RestClient::ResourceNotFound
|
rescue RestClient::ResourceNotFound
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue