Dynamic Reconstruction test cases added

git-svn-id: https://beef.googlecode.com/svn/trunk@1399 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
wade@bindshell.net
2011-11-03 07:33:38 +00:00
parent c0364fef06
commit 320271a51f
2 changed files with 125 additions and 0 deletions

View File

@@ -0,0 +1,123 @@
#
# Copyright 2011 Wade Alcorn wade@bindshell.net
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'test/unit'
require 'webrick'
require 'rubygems'
require 'curb'
# require "benchmark"
# keep webrick quiet
class ::WEBrick::HTTPServer
def access_log(config, req, res)
# nop
end
end
class ::WEBrick::BasicLog
def log(level, data)
# nop
end
end
class TC_DynamicReconstruction < Test::Unit::TestCase
@@port = 20000 + rand(10000)
def setup
$root_dir="../../"
$:.unshift File.join( %w{ ../../ } )
require 'core/loader'
require 'core/main/network_stack/handlers/dynamicreconstruction.rb'
@@port += 1 # cycle through ports because the tcp teardown process is too slow
@port = @@port
config = {}
config[:BindAddress] = '127.0.0.1'
config[:Port] = @port.to_s
@server = WEBrick::HTTPServer.new( config )
@server.mount('/test', BeEF::Core::NetworkStack::Handlers::DynamicReconstruction)
trap("INT") { @server.shutdown }
trap("TERM") { @server.shutdown }
@pid = fork do
@server.start
end
end
def teardown
Process.kill("INT",@pid)
end
# the server doesn't offer a mutex or callback
def wait_for_server
max_waits = 3
sleep_length = 0.00001
count = 0
while (count < max_waits)
break if @server.status == :Running
count += 1
sleep sleep_length
end
end
def test_delete
wait_for_server
response = Curl::Easy.http_delete("http://127.0.0.1:" + @port.to_s + "/test")
assert_equal 404, response.response_code
end
def test_put
wait_for_server
response = Curl::Easy.http_put("http://127.0.0.1:" + @port.to_s + "/test", nil)
assert_equal 404, response.response_code
end
def test_head
wait_for_server
response = Curl::Easy.http_head("http://127.0.0.1:" + @port.to_s + "/test")
assert_equal 404, response.response_code
end
def test_no_params
wait_for_server
response = Curl::Easy.http_get("http://127.0.0.1:" + @port.to_s + "/test")
assert_equal 404, response.response_code
end
def test_zero_values
wait_for_server
response = Curl::Easy.http_get("http://127.0.0.1:" + @port.to_s + "/test?bh=0&sid=0&pid=0&pc=0&d=0")
assert_equal 200, response.response_code
assert_equal "", response.body_str
end
def test_one_values
wait_for_server
response = Curl::Easy.http_get("http://127.0.0.1:" + @port.to_s + "/test?bh=1&sid=1&pid=1&pc=1&d=1")
assert_equal 200, response.response_code
assert_equal "", response.body_str
end
def test_neg_one_values
wait_for_server
response = Curl::Easy.http_get("http://127.0.0.1:" + @port.to_s + "/test?bh=-1&sid=-1&pid=-1&pc=-1&d=-1")
assert_equal 200, response.response_code
assert_equal "", response.body_str
end
end

View File

@@ -21,6 +21,7 @@ rescue LoadError
exit
end
require './core/main/network_stack/handlers/dynamicreconstruction.rb'
require './core/filter/tc_base'
require './core/filter/tc_command'
require './core/tc_loader'
@@ -38,6 +39,7 @@ class TS_BeefTests
suite << TC_Api.suite
suite << TC_Filesystem.suite
suite << TC_Grep.suite
suite << TC_DynamicReconstruction.suite
return suite
end
end