qmp_client/test/unit/test_qmp_client.rb

85 lines
2.9 KiB
Ruby

require 'helper'
require 'qmp_client'
module TestQMPClient
class TestModuleMethods < BaseTestCase
include QMPClient
def test_require_loads_main_constants
assert(defined?(::QMPClient), "QMPClient not defined")
assert(defined?(::QMPClient::API), "QMPClient::API not defined")
assert(defined?(::QMPClient::Connectors), "Connectors not defined")
assert(defined?(::QMPClient::Connectors::Socket), "Socket connector not defined")
assert(defined?(::QMPClient::Connectors::WriteProxy), "WriteProxy not defined")
assert(defined?(::QMPClient::Messages), "Messages module not defined")
assert(defined?(::QMPClient::Messages::Query), "Query message not defined")
assert(defined?(::QMPClient::Messages::Command), "Command message not defined")
assert(defined?(::QMPClient::Messages::Event), "Event message not defined")
assert(defined?(::QMPClient::Messages::Error), "Error message not defined")
assert(defined?(::QMPClient::Messages::Greeting), "Greeting message not defined")
assert(defined?(::QMPClient::Messages::Reply), "Reply message not defined")
end
def expects_socket_run(rio, wio=nil)
rq, wq = [Queue.new, Queue.new]
Connectors::Socket.any_instance.expects(:run).with(rio, wio).
once.yields(rq, wq)
API.expects(:run).with(rq, wq).once.yields("(mock-api)")
end
def test_connect_tcp
cargs = ["127.0.0.1", 4440, "127.0.0.1", 40000]
mock_sock = mock("(tcp-socket)")
mock_sock.stubs(:closed? => false, :close => true)
TCPSocket.expects(:new).with(*cargs).once.returns(mock_sock)
expects_socket_run(mock_sock)
runs_api_block = false
QMPClient::connect_tcp(*cargs) do |api|
runs_api_block = true
end
assert(runs_api_block, "API not yielded by connect_tcp")
end
def test_connect_unix
mock_sock = mock("(unix-socket)")
mock_sock.stubs(:closed? => false, :close => true)
UNIXSocket.expects(:new).with("/tmp/test.sock").once.returns(mock_sock)
expects_socket_run(mock_sock)
runs_api_block = false
QMPClient::connect_unix("/tmp/test.sock") do |api|
runs_api_block = true
end
assert(runs_api_block, "API not yielded by connect_unix")
end
def test_connect_socket
rs, ws = [mock("(read-socket)"), mock("(write-socket)")]
expects_socket_run(rs, ws)
runs_api_block = false
QMPClient::connect_socket(rs, ws) do |api|
runs_api_block = true
end
assert(runs_api_block, "API not yielded by connect_socket")
# If we pass in just one socket, it's used for both read and write
rw = mock("(rw-socket)")
runs_api_block = false
expects_socket_run(rw)
QMPClient::connect_socket(rw) do
runs_api_block = true
end
assert(runs_api_block, "API not yielded by connect_socket with one sock")
end
end
end