Files
MusicPlayer/tests/unit/test_http_transport.gd
T

49 lines
1.3 KiB
GDScript

extends GdUnitTestSuite
## Uses a local TCP server that accepts connections but never answers, like a hung
## MusicServer.
var _server: TCPServer
var _connections: Array[StreamPeerTCP] = []
var _owner: Node
func before_test() -> void:
_server = TCPServer.new()
assert_int(_server.listen(0, "127.0.0.1")).is_equal(OK)
_owner = auto_free(Node.new())
add_child(_owner)
func after_test() -> void:
for connection: StreamPeerTCP in _connections:
connection.disconnect_from_host()
_server.stop()
func _accept_connections() -> void:
while _server.is_connection_available():
_connections.append(_server.take_connection())
func test_request_to_silent_server_times_out_as_failed() -> void:
var transport: HttpTransport = HttpTransport.new(_owner)
transport.timeout_seconds = 0.5
var response_codes: Array[int] = []
transport.request("http://127.0.0.1:%d/music/rand" % _server.get_local_port(),
HTTPClient.METHOD_GET,
func(response_code: int, _body: PackedByteArray) -> void:
response_codes.append(response_code))
for i: int in 40:
_accept_connections()
await await_millis(50)
if !response_codes.is_empty():
break
assert_bool(_connections.is_empty()).is_false()
assert_array(response_codes).contains_exactly([0])
func test_default_timeout_is_set() -> void:
assert_float(HttpTransport.new(_owner).timeout_seconds).is_greater(0.0)