summaryrefslogtreecommitdiff
path: root/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c
diff options
context:
space:
mode:
Diffstat (limited to 'data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c')
-rw-r--r--data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c b/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c
new file mode 100644
index 000000000..0600479e8
--- /dev/null
+++ b/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c
@@ -0,0 +1,80 @@
+#include "first.h"
+
+#undef NDEBUG
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "mod_evhost.c"
+
+static plugin_config * test_mod_evhost_plugin_config_init(void) {
+ plugin_config *s = calloc(1, sizeof(plugin_config));
+ s->path_pieces_raw = buffer_init();
+ s->path_pieces = NULL;
+ s->len = 0;
+ return s;
+}
+
+static void test_mod_evhost_plugin_config_free(plugin_config *s) {
+ buffer_free(s->path_pieces_raw);
+ for (size_t i = 0; i < s->len; ++i) buffer_free(s->path_pieces[i]);
+ free(s->path_pieces);
+ free(s);
+}
+
+static void test_mod_evhost_build_doc_root_path(void) {
+ buffer *authority = buffer_init_string("host.example.org");
+ buffer *b = buffer_init();
+ array *a = array_init();
+ struct ttt {
+ const char *pattern;
+ size_t plen;
+ const char *expect;
+ size_t elen;
+ } tt[] = {
+ /* correct pattern not using dot notation */
+ { CONST_STR_LEN("/web/%3/"),
+ CONST_STR_LEN("/web/host/") }
+ /* correct pattern using dot notation */
+ ,{ CONST_STR_LEN("/web/%{3.1}/%{3.2}/%3/"),
+ CONST_STR_LEN("/web/h/o/host/") }
+ /* other pattern 1 */
+ ,{ CONST_STR_LEN("/web/%{3.0}/"),
+ CONST_STR_LEN("/web/host/") }
+ /* other pattern 2 */
+ ,{ CONST_STR_LEN("/web/%3.\1/"),
+ CONST_STR_LEN("/web/host.\1/") }
+ };
+
+ for (size_t i = 0; i < sizeof(tt)/sizeof(tt[0]); ++i) {
+ struct ttt *t = tt+i;
+ plugin_config *s = test_mod_evhost_plugin_config_init();
+ buffer_copy_string_len(s->path_pieces_raw, t->pattern, t->plen);
+ assert(0 == mod_evhost_parse_pattern(s));
+ mod_evhost_build_doc_root_path(b, a, authority, s->path_pieces, s->len);
+ assert(buffer_is_equal_string(b, t->expect, t->elen));
+ test_mod_evhost_plugin_config_free(s);
+ }
+
+ buffer_free(authority);
+ buffer_free(b);
+ array_free(a);
+}
+
+int main (void) {
+ test_mod_evhost_build_doc_root_path();
+
+ return 0;
+}
+
+/*
+ * stub functions
+ */
+
+handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_cache_entry **sce) {
+ UNUSED(srv);
+ UNUSED(con);
+ UNUSED(name);
+ UNUSED(sce);
+ return HANDLER_GO_ON;
+}