Skip to content

Commit

Permalink
make subsequent requests stick to the initial hostname/port and protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Fuchs committed Apr 19, 2010
1 parent be5426e commit 1906edd
Show file tree
Hide file tree
Showing 6 changed files with 208 additions and 185 deletions.
29 changes: 20 additions & 9 deletions lib/steam/request.rb
Expand Up @@ -40,34 +40,45 @@ def env
super.merge(headers)
end

def method=(method)
@env['REQUEST_METHOD'] = method
def url=(url)
url = URI.parse(url)
self.path = url.path
self.scheme = url.scheme if url.scheme
self.host = url.host if url.host
self.port = url.port if url.port
self.query = url.query if url.query
end
alias :uri :url
alias :uri= :url=

def uri=(uri)
uri = URI.parse(uri)
self.path = uri.path
self.query = uri.query if uri.query
self.scheme = uri.scheme if uri.scheme
self.port = uri.port if uri.port
def method=(method)
@env.merge!(
'REQUEST_METHOD' => method
)
end
alias url= uri=

def scheme=(scheme)
@env.merge!(
'rack.url_scheme' => scheme,
'rack.test.scheme' => scheme
)
self.port = nil # reset the port so we switch according to the protocol
end
alias :protocol :scheme
alias :protocol= :scheme=

def host=(host)
host, self.port = host.split(':')
@env.merge!(
'HTTP_HOST' => host,
'rack.test.host' => host
)
end

def port=(port)
port ||= protocol == 'https' ? 443 : 80
@env.merge!(
'SERVER_PORT' => port,
'rack.test.port' => port
)
end
Expand Down
152 changes: 77 additions & 75 deletions test/browser/html_unit/actions_test.rb
Expand Up @@ -4,6 +4,8 @@
class HtmlUnitActionsTest < Test::Unit::TestCase
include Steam, HtmlFakes

attr_reader :browser

def setup
mock = Steam::Connection::Mock.new
static = Steam::Connection::Static.new(:root => FIXTURES_PATH)
Expand All @@ -12,172 +14,172 @@ def setup

test "click_on clicks on an element" do
perform :get, 'http://localhost:3000/', html

assert_response_contains('LINK') do
mock :get, 'http://localhost:3000/link', 'LINK'
@browser.click_on('link')
browser.click_on('link')
end
end

test "click_on clicks a button" do
test "click_on clicks a button" do
perform :get, 'http://localhost:3000/', html(:fields => :text)

assert_response_contains('FORM') do
mock :get, 'http://localhost:3000/form?field=', 'FORM'
@browser.click_on(:button, 'button')
browser.click_on(:button, 'button')
end
end
test "click_link clicks a link" do

test "click_link clicks a link" do
perform :get, 'http://localhost:3000/', html

assert_response_contains('LINK') do
mock :get, 'http://localhost:3000/link', 'LINK'
@browser.click_link('link')
browser.click_link('link')
end
end

test "click_button clicks a button" do
perform :get, 'http://localhost:3000/', html(:fields => :text)

assert_response_contains('FORM') do
mock :get, 'http://localhost:3000/form?field=', 'FORM'
@browser.click_button('button')
browser.click_button('button')
end
end

test "fill_in fills in a text input" do
perform :get, 'http://localhost:3000/', html(:fields => :text)

assert_response_contains('FIELD') do
mock :get, 'http://localhost:3000/form?field=text', 'FIELD'
@browser.fill_in('field', :with => 'text')
@browser.click_button('button')
browser.fill_in('field', :with => 'text')
browser.click_button('button')
end
end

test "fill_in fills in a textarea" do
perform :get, 'http://localhost:3000/', html(:fields => :textarea)

assert_response_contains('TEXTAREA') do
mock :get, 'http://localhost:3000/form?textarea=text', 'TEXTAREA'
@browser.fill_in('textarea', :with => 'text')
@browser.click_button('button')
browser.fill_in('textarea', :with => 'text')
browser.click_button('button')
end
end

test "check checks a checkbox" do
perform :get, 'http://localhost:3000/', html(:fields => :checkbox)

assert_response_contains('CHECKED') do
mock :get, 'http://localhost:3000/form?checkbox=1', 'CHECKED'
@browser.check('checkbox')
@browser.click_button('button')
browser.check('checkbox')
browser.click_button('button')
end
end

test "uncheck unchecks a checkbox" do
perform :get, 'http://localhost:3000/', html(:fields => :checkbox)

assert_response_contains('FORM') do
mock :get, 'http://localhost:3000/form', 'FORM'
@browser.check('checkbox')
@browser.uncheck('checkbox')
@browser.click_button('button')
browser.check('checkbox')
browser.uncheck('checkbox')
browser.click_button('button')
end
end

test "choose activates a radio button" do
perform :get, 'http://localhost:3000/', html(:fields => :radio)

assert_response_contains('RADIO') do
mock :get, 'http://localhost:3000/form?radio=radio', 'RADIO'
@browser.choose('radio')
@browser.click_button('button')
browser.choose('radio')
browser.click_button('button')
end
end

test "select selects an option from a select box" do
perform :get, 'http://localhost:3000/', html(:fields => :select)

assert_response_contains('SELECT') do
mock :get, 'http://localhost:3000/form?select=foo', 'SELECT'
@browser.select('foo', :from => 'select')
@browser.click_button('button')
browser.select('foo', :from => 'select')
browser.click_button('button')
end
end

test "set_hidden_field sets a value to a hidden field" do
perform :get, 'http://localhost:3000/', html(:fields => :hidden)

assert_response_contains('SELECT') do
mock :get, 'http://localhost:3000/form?hidden=foo', 'SELECT'
@browser.set_hidden_field('hidden', :to => 'foo')
@browser.click_button('button')
browser.set_hidden_field('hidden', :to => 'foo')
browser.click_button('button')
end
end

test "attach_file sets a filename to a file field" do
perform :get, 'http://localhost:3000/', html(:fields => :file)

assert_response_contains('FILE') do
mock :get, 'http://localhost:3000/form?file=rails.png', 'FILE'
@browser.attach_file('file', "#{TEST_ROOT}/fixtures/rails.png")
@browser.click_button('button')
browser.attach_file('file', "#{TEST_ROOT}/fixtures/rails.png")
browser.click_button('button')
end
end

test "submit_form submits a form" do
perform :get, 'http://localhost:3000/', html(:fields => :text)

assert_response_contains('FORM') do
mock :get, 'http://localhost:3000/form?field=', 'FORM'
@browser.submit_form('form')
browser.submit_form('form')
end
end

test "drag drags an draggable and drop drops the draggable onto a droppable" do
perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :drag])
@browser.drag('link')
@browser.drop('form')
assert_equal 'DROPPED!', @browser.page.getTitleText

browser.drag('link')
browser.drop('form')
assert_equal 'DROPPED!', browser.page.getTitleText
end

test "drag_and_drop drags a draggable and drops it onto a droppable" do
perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :drag])
@browser.drag_and_drop('link', :to => 'form')
assert_equal 'DROPPED!', @browser.page.getTitleText

browser.drag_and_drop('link', :to => 'form')
assert_equal 'DROPPED!', browser.page.getTitleText
end

test "hover triggers a mouseOver event on an element" do
perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :hover])
@browser.hover('paragraph')
assert_equal 'HOVERED!', @browser.page.getTitleText

browser.hover('paragraph')
assert_equal 'HOVERED!', browser.page.getTitleText
end

test "focus triggers a focus event on an element" do
perform :get, 'http://localhost:3000/', html(:fields => :text, :scripts => [:jquery, :jquery_ui, :focus])
@browser.focus('field')
assert_equal 'FOCUSED!', @browser.page.getTitleText

browser.focus('field')
assert_equal 'FOCUSED!', browser.page.getTitleText
end

test "blur triggers a blur event on an element" do
perform :get, 'http://localhost:3000/', html(:fields => :text, :scripts => [:jquery, :jquery_ui, :blur])
@browser.focus('field')
@browser.blur('field')
assert_equal 'BLURRED!', @browser.page.getTitleText

browser.focus('field')
browser.blur('field')
assert_equal 'BLURRED!', browser.page.getTitleText
end

test "double_click doubleclicks an element" do
perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :double_click])
@browser.double_click('paragraph')
assert_equal 'DOUBLE CLICKED!', @browser.page.getTitleText

browser.double_click('paragraph')
assert_equal 'DOUBLE CLICKED!', browser.page.getTitleText
end

end
14 changes: 8 additions & 6 deletions test/browser/html_unit/javascript_test.rb
Expand Up @@ -4,6 +4,8 @@
class HtmlUnitJavascriptTest < Test::Unit::TestCase
include Steam, HtmlFakes

attr_reader :browser

def setup
@connection = Steam::Connection::Mock.new
static = Steam::Connection::Static.new(:root => FIXTURES_PATH)
Expand All @@ -17,7 +19,7 @@ def setup
<script src="/javascripts/jquery.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$('div:not([id])').each(function() {
$('div:not([id])').each(function() {
document.title = $(this).html();
});
});
Expand All @@ -29,9 +31,9 @@ def setup
</body>
</html>
html

perform(:get, 'http://localhost:3000/', html)
assert_equal 'bar', @browser.page.getTitleText
assert_equal 'bar', browser.page.getTitleText
end

test "jquery: div[id*=bar] selector" do
Expand All @@ -41,7 +43,7 @@ def setup
<script src="/javascripts/jquery.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$('div[id*=bar]').each(function() {
$('div[id*=bar]').each(function() {
document.title = $(this).html();
});
});
Expand All @@ -52,9 +54,9 @@ def setup
</body>
</html>
html

perform(:get, 'http://localhost:3000/', html)
assert_equal 'foobar', @browser.page.getTitleText
assert_equal 'foobar', browser.page.getTitleText
end

end

0 comments on commit 1906edd

Please sign in to comment.