file-manager/test/controllers/index_test.rb

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