From e31f3058fa141f751d63ddb0918e0703850e261b Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Mon, 27 Jan 2014 11:03:44 +0000 Subject: [PATCH] Added test for rewrites --- mongoose.c | 9 +++++---- unit_test.c | 41 +++++++++++++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/mongoose.c b/mongoose.c index e3bf97081..2fb165dab 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1542,10 +1542,10 @@ static int must_hide_file(struct connection *conn, const char *path) { static int convert_uri_to_file_name(struct connection *conn, char *buf, size_t buf_len, file_stat_t *st) { struct vec a, b; - const char *rewrites = conn->server->config_options[URL_REWRITES], - *root = conn->server->config_options[DOCUMENT_ROOT], - *cgi_pat = conn->server->config_options[CGI_PATTERN], - *uri = conn->mg_conn.uri; + const char *rewrites = conn->server->config_options[URL_REWRITES]; + const char *root = conn->server->config_options[DOCUMENT_ROOT]; + const char *cgi_pat = conn->server->config_options[CGI_PATTERN]; + const char *uri = conn->mg_conn.uri; char *p; int match_len; @@ -3639,6 +3639,7 @@ int mg_connect(struct mg_server *server, const char *host, int port, return 0; } + conn->server = server; conn->client_sock = sock; conn->endpoint_type = EP_CLIENT; conn->handler = handler; diff --git a/unit_test.c b/unit_test.c index 53ff20851..03b7b43f2 100644 --- a/unit_test.c +++ b/unit_test.c @@ -538,31 +538,32 @@ static const char *test_parse_multipart(void) { return NULL; } -#ifdef MONGOOSE_USE_SSL static int us1(struct mg_connection *conn) { static const char *file_name = "mongoose.h"; + char *cp = (char *) conn->connection_param; int file_size; if (conn->status_code == MG_CONNECT_SUCCESS) { - mg_printf(conn, "GET /%s HTTP/1.0\r\n\r\n", file_name); + mg_printf(conn, "GET /%s HTTP/1.0\r\n\r\n", cp); return 0; } else if (conn->status_code == MG_DOWNLOAD_SUCCESS) { char *file_data = read_file(file_name, &file_size); - sprintf((char *) conn->connection_param, "%d", - (size_t) file_size == conn->content_len && - memcmp(file_data, conn->content, file_size) == 0 ? 1 : 0); + sprintf(cp, "%d %s", (size_t) file_size == conn->content_len && + memcmp(file_data, conn->content, file_size) == 0 ? 1 : 0, + conn->query_string == NULL ? "?" : conn->query_string); free(file_data); } else if (conn->status_code == MG_CONNECT_FAILURE) { - sprintf((char *) conn->connection_param, "%s", "cf"); + sprintf(cp, "%s", "cf"); } else { - sprintf((char *) conn->connection_param, "%s", "df"); + sprintf(cp, "%s", "df"); } return 1; } +#ifdef MONGOOSE_USE_SSL static const char *test_ssl(void) { static const char *ssl_cert = "examples/ssl_cert.pem"; - char buf1[100] = ""; + char buf1[100] = "mongoose.h"; struct mg_server *server = mg_create_server(NULL); ASSERT(mg_set_option(server, "listening_port", LISTENING_ADDR) == NULL); @@ -571,8 +572,8 @@ static const char *test_ssl(void) { ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 1, us1, buf1) == 1); - { int i; for (i = 0; i < 50; i++) mg_poll_server(server, 1000); } - ASSERT(strcmp(buf1, "1") == 0); + { int i; for (i = 0; i < 50; i++) mg_poll_server(server, 1); } + ASSERT(strcmp(buf1, "1 ?") == 0); mg_destroy_server(&server); return NULL; } @@ -586,6 +587,25 @@ static const char *test_mg_set_option(void) { return NULL; } +static const char *test_rewrites(void) { + char buf1[100] = "xx"; + struct mg_server *server = mg_create_server(NULL); + + ASSERT(mg_set_option(server, "listening_port", "0") == NULL); + ASSERT(mg_set_option(server, "document_root", ".") == NULL); + ASSERT(mg_set_option(server, "url_rewrites", "/xx=./mongoose.h") == NULL); + + ASSERT(mg_connect(server, "127.0.0.1", + atoi(mg_get_option(server, "listening_port")), + 0, us1, buf1) == 1); + + { int i; for (i = 0; i < 50; i++) mg_poll_server(server, 1); } + //printf("[%s]\n", buf1); + ASSERT(strcmp(buf1, "1 ?") == 0); + mg_destroy_server(&server); + return NULL; +} + static const char *run_all_tests(void) { RUN_TEST(test_should_keep_alive); RUN_TEST(test_match_prefix); @@ -602,6 +622,7 @@ static const char *run_all_tests(void) { RUN_TEST(test_server); RUN_TEST(test_mg_connect); RUN_TEST(test_mg_set_option); + RUN_TEST(test_rewrites); #ifdef MONGOOSE_USE_SSL RUN_TEST(test_ssl); #endif -- GitLab