48 lines
2.1 KiB
Ruby
48 lines
2.1 KiB
Ruby
require 'spec_helper'
|
|
|
|
if defined?(TEST_CONNECT_STATES) && TEST_CONNECT_STATES
|
|
describe "ConnectionStates", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
before(:all) do
|
|
Capybara.javascript_driver = :poltergeist
|
|
Capybara.current_driver = Capybara.javascript_driver
|
|
@user = FactoryGirl.create(:user)
|
|
end
|
|
|
|
it "visits the connection_state test page and let it run its cycle", :js => true do
|
|
visit "/test_connection?user=#{@user.email}&password=foobar"
|
|
page.status_code.should be(200)
|
|
|
|
# sleep for the duration of stale+expire delay to give browser time to run through the JS
|
|
sleep_dur = Rails.application.config.websocket_gateway_connect_time_stale +
|
|
Rails.application.config.websocket_gateway_connect_time_expire
|
|
# add 1 second each for stale and expire dur used in test_connection; plus 10% buffer
|
|
sleep_dur = (sleep_dur + 2) * 1.1
|
|
$stdout.puts("*** sleeping for: #{sleep_dur} seconds to allow browser JS to run")
|
|
sleep(sleep_dur)
|
|
|
|
# FIXME: The next step is to process the JS console output and raise assertions
|
|
# as appropriate; there is currently a database problem wherein inserted Connection records
|
|
# are not found after login; it's prolly an issue with db transactions, but will require more
|
|
# debugging to determine the cause. The connection row is created properly in the login process
|
|
# but when creating music_session, the connection is not found.
|
|
|
|
File.exists?(TEST_CONNECT_STATE_JS_CONSOLE).should be true
|
|
TEST_CONNECT_STATE_JS_CONSOLE_IO.flush
|
|
|
|
jsfunctions = %W{ myLoggedIn createMusicSession isStale isExpired }
|
|
jsconsole = File.read(TEST_CONNECT_STATE_JS_CONSOLE)
|
|
jsconsole.split("\n").each do |line|
|
|
next unless line =~ /^#{Regexp.escape(TEST_CONNECT_STATE_JS_LOG_PREFIX)}/
|
|
# $stdout.puts("*** console line = #{line}")
|
|
/ERROR/.match(line).should be_nil
|
|
|
|
# FIXME: do more validation of console output here...
|
|
jsfunctions.delete_if { |fcn| line =~ /#{fcn}/ }
|
|
end
|
|
jsfunctions.count.should == 0
|
|
end
|
|
|
|
end
|
|
end
|