mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
80 lines
No EOL
2.8 KiB
Ruby
80 lines
No EOL
2.8 KiB
Ruby
require_relative './environment.rb'
|
|
require 'rack/test'
|
|
|
|
include Rack::Test::Methods
|
|
|
|
def app
|
|
Sinatra::Application
|
|
end
|
|
|
|
describe 'site_files' do
|
|
describe 'upload' do
|
|
|
|
it 'succeeds with index.html file' do
|
|
site = Fabricate :site
|
|
PurgeCacheWorker.jobs.clear
|
|
ScreenshotWorker.jobs.clear
|
|
|
|
post '/site_files/upload', {
|
|
'files[]' => Rack::Test::UploadedFile.new('./tests/files/index.html', 'text/html'),
|
|
'csrf_token' => 'abcd'
|
|
}, {'rack.session' => { 'id' => site.id, '_csrf_token' => 'abcd' }}
|
|
last_response.body.must_match /successfully uploaded/i
|
|
File.exists?(site.files_path('index.html')).must_equal true
|
|
|
|
args = ScreenshotWorker.jobs.first['args']
|
|
args.first.must_equal site.username
|
|
args.last.must_equal 'index.html'
|
|
end
|
|
|
|
it 'succeeds with valid file' do
|
|
site = Fabricate :site
|
|
PurgeCacheWorker.jobs.clear
|
|
ThumbnailWorker.jobs.clear
|
|
post '/site_files/upload', {
|
|
'files[]' => Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg'),
|
|
'csrf_token' => 'abcd'
|
|
}, {'rack.session' => { 'id' => site.id, '_csrf_token' => 'abcd' }}
|
|
last_response.body.must_match /successfully uploaded/i
|
|
File.exists?(site.files_path('test.jpg')).must_equal true
|
|
|
|
queue_args = PurgeCacheWorker.jobs.first['args'].first
|
|
queue_args['site'].must_equal site.username
|
|
queue_args['path'].must_equal '/test.jpg'
|
|
|
|
ThumbnailWorker.jobs.length.must_equal 1
|
|
ThumbnailWorker.drain
|
|
|
|
Site::THUMBNAIL_RESOLUTIONS.each do |resolution|
|
|
File.exists?(site.thumbnail_path('test.jpg', resolution)).must_equal true
|
|
end
|
|
end
|
|
|
|
it 'works with directory path' do
|
|
site = Fabricate :site
|
|
ThumbnailWorker.jobs.clear
|
|
PurgeCacheWorker.jobs.clear
|
|
post '/site_files/upload', {
|
|
'dir' => 'derpie/derptest',
|
|
'files[]' => Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg'),
|
|
'csrf_token' => 'abcd'
|
|
}, {'rack.session' => { 'id' => site.id, '_csrf_token' => 'abcd' }}
|
|
last_response.body.must_match /successfully uploaded/i
|
|
File.exists?(site.files_path('derpie/derptest/test.jpg')).must_equal true
|
|
|
|
PurgeCacheWorker.jobs.length.must_equal 1
|
|
queue_args = PurgeCacheWorker.jobs.first['args'].first
|
|
queue_args['path'].must_equal '/derpie/derptest/test.jpg'
|
|
|
|
ThumbnailWorker.jobs.length.must_equal 1
|
|
ThumbnailWorker.drain
|
|
|
|
Site::THUMBNAIL_RESOLUTIONS.each do |resolution|
|
|
File.exists?(site.thumbnail_path('derpie/derptest/test.jpg', resolution)).must_equal true
|
|
site.thumbnail_url('derpie/derptest/test.jpg', resolution).must_equal(
|
|
File.join "#{Site::THUMBNAILS_URL_ROOT}", site.username, "/derpie/derptest/test.jpg.#{resolution}.jpg"
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end |