#!/usr/local/bin/ruby
$:.unshift(".")
require 'rubyunit'
require 'webrick/httpservlet.rb'
require 'webrick/httpservlet/abstract.rb'
require 'TestServer'
require 'webrick/log.rb'
require 'net/http'
module RUNIT
class HttpTestCase < RUNIT::TestCase
class TestServer
def mount(path,handler, *options)
@s.mount(path,handler,options)
end
def start(inTheBackground=false, options={:Port=>8888})
@s = HTTPServer.new ( options )
## mount subdirectories
mount("/", HTTPServlet::FileHandler, 'staticFiles', true)
trap("INT"){ @s.shutdown }
if (inTheBackground)
@mainThread = Thread.start(@s) { |server| server.start }
else
@mainThread = nil
@s.start
end
end
def stop
if (@mainThread)
@mainThread.kill
end
@s.shutdown
end
end
def setup
@server = TestServer.new()
@server.start(true,{:Port=>8888,:Logger=>Log.new(nil,2)})
sleep .35
end
def teardown
@server.stop() if @server;
end
def assertGet(url,respCode)
session = Net::HTTP.new('localhost',8888)
session.start
begin
resp, respData = session.get(url,nil)
rescue Net::ProtoRetriableError, Net::ProtoFatalError => detail
resp = detail.data
respData = nil
end
assert_equals(respCode,resp.code.to_i);
yield(respData) if block_given?
end
end
end