Skip to content

Commit dc12099

Browse files
committed
Add new start/stop tests and ssl tests
1 parent a8c8334 commit dc12099

File tree

5 files changed

+196
-0
lines changed

5 files changed

+196
-0
lines changed

configure.ac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,9 @@ AC_SUBST(EXT_LIB_PATH)
309309
AC_SUBST(EXT_LIBS)
310310

311311
AC_CONFIG_LINKS([test/test_content:test/test_content])
312+
AC_CONFIG_LINKS([test/cert.pem:test/cert.pem])
313+
AC_CONFIG_LINKS([test/key.pem:test/key.pem])
314+
AC_CONFIG_LINKS([test/test_root_ca.pem:test/test_root_ca.pem])
312315

313316
AC_OUTPUT(
314317
libhttpserver.pc

test/cert.pem

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICpjCCAZCgAwIBAgIESEPtjjALBgkqhkiG9w0BAQUwADAeFw0wODA2MDIxMjU0
3+
MzhaFw0wOTA2MDIxMjU0NDZaMAAwggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIBCQKC
4+
AQC03TyUvK5HmUAirRp067taIEO4bibh5nqolUoUdo/LeblMQV+qnrv/RNAMTx5X
5+
fNLZ45/kbM9geF8qY0vsPyQvP4jumzK0LOJYuIwmHaUm9vbXnYieILiwCuTgjaud
6+
3VkZDoQ9fteIo+6we9UTpVqZpxpbLulBMh/VsvX0cPJ1VFC7rT59o9hAUlFf9jX/
7+
GmKdYI79MtgVx0OPBjmmSD6kicBBfmfgkO7bIGwlRtsIyMznxbHu6VuoX/eVxrTv
8+
rmCwgEXLWRZ6ru8MQl5YfqeGXXRVwMeXU961KefbuvmEPccgCxm8FZ1C1cnDHFXh
9+
siSgAzMBjC/b6KVhNQ4KnUdZAgMBAAGjLzAtMAwGA1UdEwEB/wQCMAAwHQYDVR0O
10+
BBYEFJcUvpjvE5fF/yzUshkWDpdYiQh/MAsGCSqGSIb3DQEBBQOCAQEARP7eKSB2
11+
RNd6XjEjK0SrxtoTnxS3nw9sfcS7/qD1+XHdObtDFqGNSjGYFB3Gpx8fpQhCXdoN
12+
8QUs3/5ZVa5yjZMQewWBgz8kNbnbH40F2y81MHITxxCe1Y+qqHWwVaYLsiOTqj2/
13+
0S3QjEJ9tvklmg7JX09HC4m5QRYfWBeQLD1u8ZjA1Sf1xJriomFVyRLI2VPO2bNe
14+
JDMXWuP+8kMC7gEvUnJ7A92Y2yrhu3QI3bjPk8uSpHea19Q77tul1UVBJ5g+zpH3
15+
OsF5p0MyaVf09GTzcLds5nE/osTdXGUyHJapWReVmPm3Zn6gqYlnzD99z+DPIgIV
16+
RhZvQx74NQnS6g==
17+
-----END CERTIFICATE-----

test/integ/ws_start_stop.cpp

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,130 @@ LT_BEGIN_AUTO_TEST(ws_start_stop_suite, single_resource_not_default_resource)
292292
ws.stop();
293293
LT_END_AUTO_TEST(single_resource_not_default_resource)
294294

295+
LT_BEGIN_AUTO_TEST(ws_start_stop_suite, thread_per_connection_fails_with_max_threads)
296+
{
297+
webserver ws = create_webserver(8080)
298+
.start_method(http::http_utils::THREAD_PER_CONNECTION)
299+
.max_threads(5);
300+
LT_CHECK_THROW(ws.start(false));
301+
}
302+
LT_END_AUTO_TEST(thread_per_connection_fails_with_max_threads)
303+
304+
LT_BEGIN_AUTO_TEST(ws_start_stop_suite, tuning_options)
305+
webserver ws = create_webserver(8080)
306+
.max_connections(10)
307+
.max_threads(10)
308+
.memory_limit(10000)
309+
.per_IP_connection_limit(10)
310+
.max_thread_stack_size(10)
311+
.nonce_nc_size(10);
312+
313+
ok_resource* ok = new ok_resource();
314+
ws.register_resource("base", ok);
315+
ws.start(false);
316+
317+
curl_global_init(CURL_GLOBAL_ALL);
318+
std::string s;
319+
CURL *curl = curl_easy_init();
320+
CURLcode res;
321+
curl_easy_setopt(curl, CURLOPT_URL, "localhost:8080/base");
322+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
323+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
324+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
325+
res = curl_easy_perform(curl);
326+
LT_ASSERT_EQ(res, 0);
327+
LT_CHECK_EQ(s, "OK");
328+
curl_easy_cleanup(curl);
329+
330+
ws.stop();
331+
LT_END_AUTO_TEST(tuning_options)
332+
333+
LT_BEGIN_AUTO_TEST(ws_start_stop_suite, ssl_base)
334+
webserver ws = create_webserver(8080)
335+
.use_ssl()
336+
.https_mem_key("key.pem")
337+
.https_mem_cert("cert.pem");
338+
339+
ok_resource* ok = new ok_resource();
340+
ws.register_resource("base", ok);
341+
ws.start(false);
342+
343+
curl_global_init(CURL_GLOBAL_ALL);
344+
std::string s;
345+
CURL *curl = curl_easy_init();
346+
CURLcode res;
347+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // avoid verifying ssl
348+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); // avoid verifying ssl
349+
curl_easy_setopt(curl, CURLOPT_URL, "https://localhost:8080/base");
350+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
351+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
352+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
353+
res = curl_easy_perform(curl);
354+
LT_ASSERT_EQ(res, 0);
355+
LT_CHECK_EQ(s, "OK");
356+
curl_easy_cleanup(curl);
357+
358+
ws.stop();
359+
LT_END_AUTO_TEST(ssl_base)
360+
361+
LT_BEGIN_AUTO_TEST(ws_start_stop_suite, ssl_with_protocol_priorities)
362+
webserver ws = create_webserver(8080)
363+
.use_ssl()
364+
.https_mem_key("key.pem")
365+
.https_mem_cert("cert.pem")
366+
.https_priorities("TLS1.0-AES-SHA1");
367+
368+
ok_resource* ok = new ok_resource();
369+
ws.register_resource("base", ok);
370+
ws.start(false);
371+
372+
curl_global_init(CURL_GLOBAL_ALL);
373+
std::string s;
374+
CURL *curl = curl_easy_init();
375+
CURLcode res;
376+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // avoid verifying ssl
377+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); // avoid verifying ssl
378+
curl_easy_setopt(curl, CURLOPT_URL, "https://localhost:8080/base");
379+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
380+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
381+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
382+
res = curl_easy_perform(curl);
383+
LT_ASSERT_EQ(res, 0);
384+
LT_CHECK_EQ(s, "OK");
385+
curl_easy_cleanup(curl);
386+
387+
ws.stop();
388+
LT_END_AUTO_TEST(ssl_with_protocol_priorities)
389+
390+
LT_BEGIN_AUTO_TEST(ws_start_stop_suite, ssl_with_trust)
391+
webserver ws = create_webserver(8080)
392+
.use_ssl()
393+
.https_mem_key("key.pem")
394+
.https_mem_cert("cert.pem")
395+
.https_mem_trust("test_root_ca.pem");
396+
397+
ok_resource* ok = new ok_resource();
398+
ws.register_resource("base", ok);
399+
ws.start(false);
400+
401+
curl_global_init(CURL_GLOBAL_ALL);
402+
std::string s;
403+
CURL *curl = curl_easy_init();
404+
CURLcode res;
405+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // avoid verifying ssl
406+
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); // avoid verifying ssl
407+
curl_easy_setopt(curl, CURLOPT_URL, "https://localhost:8080/base");
408+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
409+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
410+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
411+
res = curl_easy_perform(curl);
412+
LT_ASSERT_EQ(res, 0);
413+
LT_CHECK_EQ(s, "OK");
414+
curl_easy_cleanup(curl);
415+
416+
ws.stop();
417+
LT_END_AUTO_TEST(ssl_with_trust)
418+
295419
LT_BEGIN_AUTO_TEST_ENV()
296420
AUTORUN_TESTS()
297421
LT_END_AUTO_TEST_ENV()

test/key.pem

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAtN08lLyuR5lAIq0adOu7WiBDuG4m4eZ6qJVKFHaPy3m5TEFf
3+
qp67/0TQDE8eV3zS2eOf5GzPYHhfKmNL7D8kLz+I7psytCziWLiMJh2lJvb2152I
4+
niC4sArk4I2rnd1ZGQ6EPX7XiKPusHvVE6VamacaWy7pQTIf1bL19HDydVRQu60+
5+
faPYQFJRX/Y1/xpinWCO/TLYFcdDjwY5pkg+pInAQX5n4JDu2yBsJUbbCMjM58Wx
6+
7ulbqF/3lca0765gsIBFy1kWeq7vDEJeWH6nhl10VcDHl1PetSnn27r5hD3HIAsZ
7+
vBWdQtXJwxxV4bIkoAMzAYwv2+ilYTUOCp1HWQIDAQABAoIBAArOQv3R7gmqDspj
8+
lDaTFOz0C4e70QfjGMX0sWnakYnDGn6DU19iv3GnX1S072ejtgc9kcJ4e8VUO79R
9+
EmqpdRR7k8dJr3RTUCyjzf/C+qiCzcmhCFYGN3KRHA6MeEnkvRuBogX4i5EG1k5l
10+
/5t+YBTZBnqXKWlzQLKoUAiMLPg0eRWh+6q7H4N7kdWWBmTpako7TEqpIwuEnPGx
11+
u3EPuTR+LN6lF55WBePbCHccUHUQaXuav18NuDkcJmCiMArK9SKb+h0RqLD6oMI/
12+
dKD6n8cZXeMBkK+C8U/K0sN2hFHACsu30b9XfdnljgP9v+BP8GhnB0nCB6tNBCPo
13+
32srOwECgYEAxWh3iBT4lWqL6bZavVbnhmvtif4nHv2t2/hOs/CAq8iLAw0oWGZc
14+
+JEZTUDMvFRlulr0kcaWra+4fN3OmJnjeuFXZq52lfMgXBIKBmoSaZpIh2aDY1Rd
15+
RbEse7nQl9hTEPmYspiXLGtnAXW7HuWqVfFFP3ya8rUS3t4d07Hig8ECgYEA6ou6
16+
OHiBRTbtDqLIv8NghARc/AqwNWgEc9PelCPe5bdCOLBEyFjqKiT2MttnSSUc2Zob
17+
XhYkHC6zN1Mlq30N0e3Q61YK9LxMdU1vsluXxNq2rfK1Scb1oOlOOtlbV3zA3VRF
18+
hV3t1nOA9tFmUrwZi0CUMWJE/zbPAyhwWotKyZkCgYEAh0kFicPdbABdrCglXVae
19+
SnfSjVwYkVuGd5Ze0WADvjYsVkYBHTvhgRNnRJMg+/vWz3Sf4Ps4rgUbqK8Vc20b
20+
AU5G6H6tlCvPRGm0ZxrwTWDHTcuKRVs+pJE8C/qWoklE/AAhjluWVoGwUMbPGuiH
21+
6Gf1bgHF6oj/Sq7rv/VLZ8ECgYBeq7ml05YyLuJutuwa4yzQ/MXfghzv4aVyb0F3
22+
QCdXR6o2IYgR6jnSewrZKlA9aPqFJrwHNR6sNXlnSmt5Fcf/RWO/qgJQGLUv3+rG
23+
7kuLTNDR05azSdiZc7J89ID3Bkb+z2YkV+6JUiPq/Ei1+nDBEXb/m+/HqALU/nyj
24+
P3gXeQKBgBusb8Rbd+KgxSA0hwY6aoRTPRt8LNvXdsB9vRcKKHUFQvxUWiUSS+L9
25+
/Qu1sJbrUquKOHqksV5wCnWnAKyJNJlhHuBToqQTgKXjuNmVdYSe631saiI7PHyC
26+
eRJ6DxULPxABytJrYCRrNqmXi5TCiqR2mtfalEMOPxz8rUU8dYyx
27+
-----END RSA PRIVATE KEY-----

test/test_root_ca.pem

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
3+
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
4+
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
5+
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
6+
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
7+
NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
8+
LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
9+
A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
10+
IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
11+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
12+
W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
13+
3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
14+
6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
15+
Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
16+
NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
17+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
18+
r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
19+
DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
20+
YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
21+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
22+
/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
23+
LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
24+
jVaMaA==
25+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)