diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2022-06-05 20:33:51 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2022-06-07 19:23:53 -0400 |
commit | 71317bc997ba3b69d5730ba26883d2ae45cf4b61 (patch) | |
tree | c9d3bfa3953b2f44a927ad736b4104035bd09ac3 | |
parent | 5a32a6dc518eccc784b87b6773e37edd28c1515d (diff) | |
download | lighttpd-git-71317bc997ba3b69d5730ba26883d2ae45cf4b61.tar.gz |
[tests] test stubs for http_header.c and http_kv.c
-rw-r--r-- | src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/meson.build | 4 | ||||
-rw-r--r-- | src/t/test_common.c | 4 | ||||
-rw-r--r-- | src/t/test_http_header.c | 111 | ||||
-rw-r--r-- | src/t/test_http_kv.c | 22 |
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(); +} |