/+ dub.sdl: dependency "handy-http-transport" path="../" dependency "requests" version="~>2.1" dependency "streams" path="/home/andrew/Code/github-andrewlalis/streams" dependency "slf4d" path="/home/andrew/Code/github-andrewlalis/slf4d" +/ /** * This tests the basic HTTP functionality of the Http1Transport implementation * by starting a server, sending a request, and checking the response. */ module integration_tests.http1_test; import handy_http_primitives; import handy_http_transport; import slf4d; import slf4d.default_provider; import requests; import core.thread; int main() { auto loggingProvider = new shared DefaultProvider(true, Levels.INFO); configureLoggingProvider(loggingProvider); HttpTransport transport = new Http1Transport(HttpRequestHandler.of((ref ServerHttpRequest request, ref ServerHttpResponse response) { response.headers.add("Content-Type", "text/plain"); response.headers.add("Content-Length", "13"); response.outputStream.writeToStream(cast(ubyte[]) "Hello, world!"); })); Thread thread = transport.startInNewThread(); scope(exit) { transport.stop(); thread.join(); } info("Started server in another thread."); Thread.sleep(msecs(100)); auto content = getContent("http://localhost:8080"); ubyte[] data = content.data; if (data.length != 13 || (cast(string) data) != "Hello, world!") { error("Received unexpected content: " ~ cast(string) data); return 1; } info("Test completed successfully."); return 0; }