Meta: Root file cleanup
[link.git] / Test / Test.cpp
blobc215c31f6e831f71acac4076cdac116581ddb028
1 #include <Link.hpp>
2 #include <iostream>
3 #include <fstream>
4 #include <openssl/ssl.h>
5 #include <thread>
7 bool ready = false;
8 bool ssl = false;
10 Link::Server server(8080);
12 void* client(void* arg) {
13 while (!ready || !server.IsRunning()) std::this_thread::sleep_for(std::chrono::milliseconds(1000));
14 Link::Request* req = new Link::Request(std::string(ssl?"https":"http") + "://localhost:8080/");
15 Link::Client client(req);
16 Link::Response* res = client.Send();
17 if (client.Status==0&&res->GetStatus() == 200) {
18 std::cout << "\033[1;32mTest passed " << res->GetBody() << std::endl;
19 } else {
20 std::cout << "\033[1;31mTest failed" << std::endl;
22 return nullptr;
25 int main(int argc, char** argv) {
26 if (SSLeay() < 0x30000000L) {
27 std::cout << "OpenSSL version is lower than 3.0.0" << std::endl;
28 return 0;
31 // 1/4
32 std::thread t;
33 t = std::thread(client, nullptr);
34 t.detach();
36 server.Get("/", [](Link::Request* req, Link::Response* res) {
37 res->SetBody("(SSL: " + std::string(ssl?"true":"false") + " | Multi-Threaded: " + std::string(server.IsMultiThreaded()?"true":"false") + ")");
38 server.Stop();
39 });
41 ready = true;
42 server.Start();
43 if (server.Status != 0) {
44 std::cout << "\033[1;31mTest failed" << std::endl;
45 return 0;
48 // 2/4
49 server.EnableMultiThreading();
50 t = std::thread(client, nullptr);
51 t.detach();
52 server.Start();
53 if (server.Status != 0) {
54 std::cout << "\033[1;31mTest failed" << std::endl;
55 return 0;
58 // 3/4
59 ssl = true;
60 server.EnableSSL("certificate.pem", "key.pem");
61 t = std::thread(client, nullptr);
62 t.detach();
63 server.Start();
64 if (server.Status != 0) {
65 std::cout << "\033[1;31mTest failed" << std::endl;
66 return 0;
69 // 4/4
70 server.DisableMultiThreading();
71 t = std::thread(client, nullptr);
72 t.detach();
73 server.Start();
74 if (server.Status != 0) {
75 std::cout << "\033[1;31mTest failed" << std::endl;
76 return 0;
79 return 0;