summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2022-06-05 20:33:51 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2022-06-07 19:23:53 -0400
commit71317bc997ba3b69d5730ba26883d2ae45cf4b61 (patch)
treec9d3bfa3953b2f44a927ad736b4104035bd09ac3
parent5a32a6dc518eccc784b87b6773e37edd28c1515d (diff)
downloadlighttpd-git-71317bc997ba3b69d5730ba26883d2ae45cf4b61.tar.gz
[tests] test stubs for http_header.c and http_kv.c
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/Makefile.am4
-rw-r--r--src/meson.build4
-rw-r--r--src/t/test_common.c4
-rw-r--r--src/t/test_http_header.c111
-rw-r--r--src/t/test_http_kv.c22
6 files changed, 143 insertions, 6 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ce4b1964..afef25ce 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -984,10 +984,10 @@ add_executable(test_common
t/test_base64.c
t/test_buffer.c
t/test_burl.c
+ t/test_http_header.c
+ t/test_http_kv.c
t/test_keyvalue.c
t/test_request.c
- http_header.c
- http_kv.c
log.c
fdlog.c
sock_addr.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 98cb715f..84c8b59d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -562,10 +562,10 @@ t_test_common_SOURCES = t/test_common.c \
t/test_base64.c \
t/test_buffer.c \
t/test_burl.c \
+ t/test_http_header.c \
+ t/test_http_kv.c \
t/test_keyvalue.c \
t/test_request.c \
- http_header.c \
- http_kv.c \
log.c \
fdlog.c \
sock_addr.c \
diff --git a/src/meson.build b/src/meson.build
index db119ca5..890bbfd5 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -905,10 +905,10 @@ test('test_common', executable('test_common',
't/test_base64.c',
't/test_buffer.c',
't/test_burl.c',
+ 't/test_http_header.c',
+ 't/test_http_kv.c',
't/test_keyvalue.c',
't/test_request.c',
- 'http_header.c',
- 'http_kv.c',
'log.c',
'fdlog.c',
'sock_addr.c',
diff --git a/src/t/test_common.c b/src/t/test_common.c
index 6f1ebf2b..edd850b9 100644
--- a/src/t/test_common.c
+++ b/src/t/test_common.c
@@ -7,6 +7,8 @@ void test_array (void);
void test_base64 (void);
void test_buffer (void);
void test_burl (void);
+void test_http_header (void);
+void test_http_kv (void);
void test_keyvalue (void);
void test_request (void);
@@ -15,6 +17,8 @@ int main() {
test_base64();
test_buffer();
test_burl();
+ test_http_header();
+ test_http_kv();
test_keyvalue();
test_request();
diff --git a/src/t/test_http_header.c b/src/t/test_http_header.c
new file mode 100644
index 00000000..0a5512ba
--- /dev/null
+++ b/src/t/test_http_header.c
@@ -0,0 +1,111 @@
+#include "first.h"
+
+#undef NDEBUG
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "http_header.c"
+
+static void test_http_header_tables (void) {
+ /* verify enum http_header_e presence in http_headers[] */
+ unsigned int u;
+ for (int i = 0; i < 64; ++i) {
+ /* Note: must be kept in sync http_headers[] and http_headers_off[] */
+ /* Note: must be kept in sync with http_header.h enum http_header_e */
+ /* Note: must be kept in sync with http_header.c http_headers[] */
+ /* Note: must be kept in sync h2.c:http_header_lc[] */
+ /* Note: must be kept in sync h2.c:http_header_lshpack_idx[] */
+ /* Note: must be kept in sync h2.c:lshpack_idx_http_header[] */
+ /* switch() statement with each entry in enum http_header_e;
+ * no 'default' case to trigger warning if entry is added */
+ enum http_header_e x = (enum http_header_e)i;
+ switch (x) {
+ case HTTP_HEADER_OTHER:
+ case HTTP_HEADER_ACCEPT:
+ case HTTP_HEADER_ACCEPT_ENCODING:
+ case HTTP_HEADER_ACCEPT_LANGUAGE:
+ case HTTP_HEADER_ACCEPT_RANGES:
+ case HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN:
+ case HTTP_HEADER_AGE:
+ case HTTP_HEADER_ALLOW:
+ case HTTP_HEADER_ALT_SVC:
+ case HTTP_HEADER_ALT_USED:
+ case HTTP_HEADER_AUTHORIZATION:
+ case HTTP_HEADER_CACHE_CONTROL:
+ case HTTP_HEADER_CONNECTION:
+ case HTTP_HEADER_CONTENT_ENCODING:
+ case HTTP_HEADER_CONTENT_LENGTH:
+ case HTTP_HEADER_CONTENT_LOCATION:
+ case HTTP_HEADER_CONTENT_RANGE:
+ case HTTP_HEADER_CONTENT_SECURITY_POLICY:
+ case HTTP_HEADER_CONTENT_TYPE:
+ case HTTP_HEADER_COOKIE:
+ case HTTP_HEADER_DATE:
+ case HTTP_HEADER_DNT:
+ case HTTP_HEADER_ETAG:
+ case HTTP_HEADER_EXPECT:
+ case HTTP_HEADER_EXPECT_CT:
+ case HTTP_HEADER_EXPIRES:
+ case HTTP_HEADER_FORWARDED:
+ case HTTP_HEADER_HOST:
+ case HTTP_HEADER_HTTP2_SETTINGS:
+ case HTTP_HEADER_IF_MATCH:
+ case HTTP_HEADER_IF_MODIFIED_SINCE:
+ case HTTP_HEADER_IF_NONE_MATCH:
+ case HTTP_HEADER_IF_RANGE:
+ case HTTP_HEADER_IF_UNMODIFIED_SINCE:
+ case HTTP_HEADER_LAST_MODIFIED:
+ case HTTP_HEADER_LINK:
+ case HTTP_HEADER_LOCATION:
+ case HTTP_HEADER_ONION_LOCATION:
+ case HTTP_HEADER_P3P:
+ case HTTP_HEADER_PRAGMA:
+ case HTTP_HEADER_PRIORITY:
+ case HTTP_HEADER_RANGE:
+ case HTTP_HEADER_REFERER:
+ case HTTP_HEADER_REFERRER_POLICY:
+ case HTTP_HEADER_SERVER:
+ case HTTP_HEADER_SET_COOKIE:
+ case HTTP_HEADER_STATUS:
+ case HTTP_HEADER_STRICT_TRANSPORT_SECURITY:
+ case HTTP_HEADER_TE:
+ case HTTP_HEADER_TRANSFER_ENCODING:
+ case HTTP_HEADER_UPGRADE:
+ case HTTP_HEADER_UPGRADE_INSECURE_REQUESTS:
+ case HTTP_HEADER_USER_AGENT:
+ case HTTP_HEADER_VARY:
+ case HTTP_HEADER_WWW_AUTHENTICATE:
+ case HTTP_HEADER_X_CONTENT_TYPE_OPTIONS:
+ case HTTP_HEADER_X_FORWARDED_FOR:
+ case HTTP_HEADER_X_FORWARDED_PROTO:
+ case HTTP_HEADER_X_FRAME_OPTIONS:
+ case HTTP_HEADER_X_XSS_PROTECTION:
+ for (u = 0; u < sizeof(http_headers)/sizeof(*http_headers); ++u) {
+ if (i == http_headers[u].key) {
+ assert(x == http_header_hkey_get(http_headers[u].value,
+ http_headers[u].vlen));
+ assert(x == http_header_hkey_get_lc(http_headers[u].value,
+ http_headers[u].vlen));
+ break;
+ }
+ }
+ assert(u < sizeof(http_headers)/sizeof(*http_headers));
+ break;
+ }
+ }
+
+ /* verify http_headers_off[] */
+ for (u = 0; u < sizeof(http_headers)/sizeof(*http_headers); ++u) {
+ if (http_headers[u].vlen == 0) break;
+ int8_t x = http_headers_off[http_headers[u].vlen];
+ assert((unsigned int)x <= u);
+ assert(http_headers[x].vlen == http_headers[u].vlen);
+ }
+}
+
+void test_http_header (void);
+void test_http_header (void)
+{
+ test_http_header_tables();
+}
diff --git a/src/t/test_http_kv.c b/src/t/test_http_kv.c
new file mode 100644
index 00000000..37eebca6
--- /dev/null
+++ b/src/t/test_http_kv.c
@@ -0,0 +1,22 @@
+#include "first.h"
+
+#undef NDEBUG
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "http_kv.c"
+
+static void test_http_kv_tables (void) {
+ assert(0 == strcmp(get_http_version_name(HTTP_VERSION_2), "HTTP/2.0"));
+ assert(0 == strcmp(get_http_version_name(HTTP_VERSION_1_1), "HTTP/1.1"));
+ assert(0 == strcmp(get_http_version_name(HTTP_VERSION_1_0), "HTTP/1.0"));
+
+ /* TODO (more) */
+}
+
+void test_http_kv (void);
+void test_http_kv (void)
+{
+ test_http_kv_tables();
+}