63 lines
1.5 KiB
Ruby
63 lines
1.5 KiB
Ruby
|
require 'test_helper'
|
||
|
|
||
|
class IndexTest < ActionDispatch::IntegrationTest
|
||
|
def test_success_root
|
||
|
get '/'
|
||
|
|
||
|
assert_response :success
|
||
|
assert_template :index
|
||
|
directory = assigns(:directory)
|
||
|
assert_equal Dir.entries('.').sort, directory.map { |d| d[:relative] }.sort
|
||
|
end
|
||
|
|
||
|
def test_success_file
|
||
|
filename = 'Gemfile'
|
||
|
get "/#{filename}"
|
||
|
|
||
|
assert_response :success
|
||
|
assert_template :file
|
||
|
assert_equal File.read(filename), assigns(:file)
|
||
|
end
|
||
|
|
||
|
def test_out_of_directory_access
|
||
|
assert_raise(ArgumentError) do
|
||
|
get "/../../test"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_move
|
||
|
old_filename = 'tmp/myfile'
|
||
|
new_filename = 'tmp/movedfile'
|
||
|
FileUtils.touch old_filename
|
||
|
|
||
|
put "/#{old_filename}", params: { new_name: new_filename }
|
||
|
|
||
|
assert_response :success
|
||
|
assert File.exists?(new_filename)
|
||
|
assert !File.exists?(old_filename)
|
||
|
ensure
|
||
|
FileUtils.rm_rf old_filename
|
||
|
FileUtils.rm_rf new_filename
|
||
|
end
|
||
|
|
||
|
def test_delete_file
|
||
|
file_to_delete = 'tmp/new_file_to_delete'
|
||
|
FileUtils.touch file_to_delete
|
||
|
assert File.exists?(file_to_delete)
|
||
|
|
||
|
delete "/#{file_to_delete}"
|
||
|
assert_response :success
|
||
|
assert !File.exists?(file_to_delete)
|
||
|
end
|
||
|
|
||
|
def test_upload
|
||
|
filename = 'Gemfile'
|
||
|
uploaded_filename = "tmp/#{filename}"
|
||
|
assert !File.exists?(uploaded_filename)
|
||
|
post '/tmp/', params: { file: Rack::Test::UploadedFile.new(filename, 'text/plain') }
|
||
|
assert File.exists?(uploaded_filename)
|
||
|
ensure
|
||
|
FileUtils.rm_rf uploaded_filename
|
||
|
end
|
||
|
end
|