Files
moviehash/test/test_moviehash.rb
2024-10-27 22:38:44 +11:00

73 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require "test_helper"
require "webrick"
require "debug"
class TestMoviehash < Minitest::Test
def setup
@file_path = File.expand_path("test/files", Dir.pwd) # Set absolute path
@port = find_available_port
@webrick = WEBrick::HTTPServer.new(
Port: @port,
AccessLog: [],
Logger: WEBrick::Log.new(File::NULL)
)
@webrick.mount "/files", WEBrick::HTTPServlet::FileHandler, @file_path
@thread = Thread.new { @webrick.start }
# Give the server a moment to start
sleep 0.1
end
def teardown
@webrick.shutdown
@thread.join
end
def test_cases
{
"breakdance.avi" => "8e245d9679d31e12",
"dummy.bin" => "61f7751fc2a72bfb"
}
end
def test_that_it_has_a_version_number
refute_nil ::Moviehash::VERSION
end
def test_hash_calc
# wget https://static.opensubtitles.org/addons/avi/dummy.rar ; unrar x dummy.rar
# wget https://static.opensubtitles.org/addons/avi/breakdance.avi
test_cases.each do |file, hash|
assert_equal hash, Moviehash.compute_hash("test/files/#{file}")
end
end
def test_hash_calc_url
File.expand_path("files", __dir__)
# test_cases.each do |file, hash|
# FakeWeb.register_uri(:get, "http://example.com/#{file}", :body => File.join(file_path, file) )
# FakeWeb.register_uri(:head, "http://example.com/#{file}", :content_length => File.size( File.join(file_path, file)) )
# end
test_cases.each do |file, hash|
uri = URI.parse("http://localhost:#{@port}/files/#{file}")
assert_equal hash, Moviehash.compute_hash(uri.to_s)
end
end
private
def find_available_port
server = TCPServer.new("127.0.0.1", 0)
port = server.addr[1]
server.close
port
end
end