49 lines
1.5 KiB
D
Executable File
49 lines
1.5 KiB
D
Executable File
/+ 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;
|
|
}
|