|
@@ -902,6 +902,140 @@ START_TEST(test_sha1)
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
+START_TEST(test_config_options)
|
|
|
+{
|
|
|
+ /* Check size of config_options vs. number of options in enum. */
|
|
|
+ ck_assert_ptr_eq(NULL, config_options[NUM_OPTIONS].name);
|
|
|
+ ck_assert_int_eq((int)MG_CONFIG_TYPE_UNKNOWN,
|
|
|
+ config_options[NUM_OPTIONS].type);
|
|
|
+ ck_assert_uint_eq(sizeof(config_options) / sizeof(config_options[0]),
|
|
|
+ (size_t)(NUM_OPTIONS + 1));
|
|
|
+
|
|
|
+ /* Check option enums vs. option names. */
|
|
|
+ /* Check if the order in
|
|
|
+ * static struct mg_option config_options[]
|
|
|
+ * is the same as in the option enum
|
|
|
+ * This test allows to reorder config_options and the enum,
|
|
|
+ * and check if the order is still consistent. */
|
|
|
+ ck_assert_str_eq("cgi_pattern", config_options[CGI_EXTENSIONS].name);
|
|
|
+ ck_assert_str_eq("cgi_environment", config_options[CGI_ENVIRONMENT].name);
|
|
|
+ ck_assert_str_eq("put_delete_auth_file",
|
|
|
+ config_options[PUT_DELETE_PASSWORDS_FILE].name);
|
|
|
+ ck_assert_str_eq("cgi_interpreter", config_options[CGI_INTERPRETER].name);
|
|
|
+ ck_assert_str_eq("protect_uri", config_options[PROTECT_URI].name);
|
|
|
+ ck_assert_str_eq("authentication_domain",
|
|
|
+ config_options[AUTHENTICATION_DOMAIN].name);
|
|
|
+ ck_assert_str_eq("enable_auth_domain_check",
|
|
|
+ config_options[ENABLE_AUTH_DOMAIN_CHECK].name);
|
|
|
+ ck_assert_str_eq("ssi_pattern", config_options[SSI_EXTENSIONS].name);
|
|
|
+ ck_assert_str_eq("throttle", config_options[THROTTLE].name);
|
|
|
+ ck_assert_str_eq("access_log_file", config_options[ACCESS_LOG_FILE].name);
|
|
|
+ ck_assert_str_eq("enable_directory_listing",
|
|
|
+ config_options[ENABLE_DIRECTORY_LISTING].name);
|
|
|
+ ck_assert_str_eq("error_log_file", config_options[ERROR_LOG_FILE].name);
|
|
|
+ ck_assert_str_eq("global_auth_file",
|
|
|
+ config_options[GLOBAL_PASSWORDS_FILE].name);
|
|
|
+ ck_assert_str_eq("index_files", config_options[INDEX_FILES].name);
|
|
|
+ ck_assert_str_eq("enable_keep_alive",
|
|
|
+ config_options[ENABLE_KEEP_ALIVE].name);
|
|
|
+ ck_assert_str_eq("access_control_list",
|
|
|
+ config_options[ACCESS_CONTROL_LIST].name);
|
|
|
+ ck_assert_str_eq("extra_mime_types", config_options[EXTRA_MIME_TYPES].name);
|
|
|
+ ck_assert_str_eq("listening_ports", config_options[LISTENING_PORTS].name);
|
|
|
+ ck_assert_str_eq("document_root", config_options[DOCUMENT_ROOT].name);
|
|
|
+ ck_assert_str_eq("ssl_certificate", config_options[SSL_CERTIFICATE].name);
|
|
|
+ ck_assert_str_eq("ssl_certificate_chain",
|
|
|
+ config_options[SSL_CERTIFICATE_CHAIN].name);
|
|
|
+ ck_assert_str_eq("num_threads", config_options[NUM_THREADS].name);
|
|
|
+ ck_assert_str_eq("run_as_user", config_options[RUN_AS_USER].name);
|
|
|
+ ck_assert_str_eq("url_rewrite_patterns",
|
|
|
+ config_options[URL_REWRITE_PATTERN].name);
|
|
|
+ ck_assert_str_eq("hide_files_patterns", config_options[HIDE_FILES].name);
|
|
|
+ ck_assert_str_eq("request_timeout_ms",
|
|
|
+ config_options[REQUEST_TIMEOUT].name);
|
|
|
+ ck_assert_str_eq("keep_alive_timeout_ms",
|
|
|
+ config_options[KEEP_ALIVE_TIMEOUT].name);
|
|
|
+ ck_assert_str_eq("linger_timeout_ms", config_options[LINGER_TIMEOUT].name);
|
|
|
+ ck_assert_str_eq("ssl_verify_peer",
|
|
|
+ config_options[SSL_DO_VERIFY_PEER].name);
|
|
|
+ ck_assert_str_eq("ssl_ca_path", config_options[SSL_CA_PATH].name);
|
|
|
+ ck_assert_str_eq("ssl_ca_file", config_options[SSL_CA_FILE].name);
|
|
|
+ ck_assert_str_eq("ssl_verify_depth", config_options[SSL_VERIFY_DEPTH].name);
|
|
|
+ ck_assert_str_eq("ssl_default_verify_paths",
|
|
|
+ config_options[SSL_DEFAULT_VERIFY_PATHS].name);
|
|
|
+ ck_assert_str_eq("ssl_cipher_list", config_options[SSL_CIPHER_LIST].name);
|
|
|
+ ck_assert_str_eq("ssl_protocol_version",
|
|
|
+ config_options[SSL_PROTOCOL_VERSION].name);
|
|
|
+ ck_assert_str_eq("ssl_short_trust", config_options[SSL_SHORT_TRUST].name);
|
|
|
+
|
|
|
+#if defined(USE_WEBSOCKET)
|
|
|
+ ck_assert_str_eq("websocket_timeout_ms",
|
|
|
+ config_options[WEBSOCKET_TIMEOUT].name);
|
|
|
+#endif
|
|
|
+
|
|
|
+ ck_assert_str_eq("decode_url", config_options[DECODE_URL].name);
|
|
|
+
|
|
|
+#if defined(USE_LUA)
|
|
|
+ ck_assert_str_eq("lua_preload_file", config_options[LUA_PRELOAD_FILE].name);
|
|
|
+ ck_assert_str_eq("lua_script_pattern",
|
|
|
+ config_options[LUA_SCRIPT_EXTENSIONS].name);
|
|
|
+ ck_assert_str_eq("lua_server_page_pattern",
|
|
|
+ config_options[LUA_SERVER_PAGE_EXTENSIONS].name);
|
|
|
+#endif
|
|
|
+#if defined(USE_DUKTAPE)
|
|
|
+ ck_assert_str_eq("duktape_script_pattern",
|
|
|
+ config_options[DUKTAPE_SCRIPT_EXTENSIONS].name);
|
|
|
+#endif
|
|
|
+#if defined(USE_WEBSOCKET)
|
|
|
+ ck_assert_str_eq("websocket_root", config_options[WEBSOCKET_ROOT].name);
|
|
|
+#endif
|
|
|
+#if defined(USE_LUA) && defined(USE_WEBSOCKET)
|
|
|
+ ck_assert_str_eq("lua_websocket_pattern",
|
|
|
+ config_options[LUA_WEBSOCKET_EXTENSIONS].name);
|
|
|
+#endif
|
|
|
+
|
|
|
+ ck_assert_str_eq("access_control_allow_origin",
|
|
|
+ config_options[ACCESS_CONTROL_ALLOW_ORIGIN].name);
|
|
|
+ ck_assert_str_eq("access_control_allow_methods",
|
|
|
+ config_options[ACCESS_CONTROL_ALLOW_METHODS].name);
|
|
|
+ ck_assert_str_eq("access_control_allow_headers",
|
|
|
+ config_options[ACCESS_CONTROL_ALLOW_HEADERS].name);
|
|
|
+ ck_assert_str_eq("error_pages", config_options[ERROR_PAGES].name);
|
|
|
+ ck_assert_str_eq("tcp_nodelay", config_options[CONFIG_TCP_NODELAY].name);
|
|
|
+
|
|
|
+
|
|
|
+#if !defined(NO_CACHING)
|
|
|
+ ck_assert_str_eq("static_file_max_age",
|
|
|
+ config_options[STATIC_FILE_MAX_AGE].name);
|
|
|
+#endif
|
|
|
+#if !defined(NO_SSL)
|
|
|
+ ck_assert_str_eq("strict_transport_security_max_age",
|
|
|
+ config_options[STRICT_HTTPS_MAX_AGE].name);
|
|
|
+#endif
|
|
|
+#if defined(__linux__)
|
|
|
+ ck_assert_str_eq("allow_sendfile_call",
|
|
|
+ config_options[ALLOW_SENDFILE_CALL].name);
|
|
|
+#endif
|
|
|
+#if defined(_WIN32)
|
|
|
+ ck_assert_str_eq("case_sensitive",
|
|
|
+ config_options[CASE_SENSITIVE_FILES].name);
|
|
|
+#endif
|
|
|
+#if defined(USE_LUA)
|
|
|
+ ck_assert_str_eq("lua_background_script",
|
|
|
+ config_options[LUA_BACKGROUND_SCRIPT].name);
|
|
|
+ ck_assert_str_eq("lua_background_script_params",
|
|
|
+ config_options[LUA_BACKGROUND_SCRIPT_PARAMS].name);
|
|
|
+#endif
|
|
|
+
|
|
|
+ ck_assert_str_eq("additional_header",
|
|
|
+ config_options[ADDITIONAL_HEADER].name);
|
|
|
+ ck_assert_str_eq("max_request_size", config_options[MAX_REQUEST_SIZE].name);
|
|
|
+ ck_assert_str_eq("allow_index_script_resource",
|
|
|
+ config_options[ALLOW_INDEX_SCRIPT_SUB_RES].name);
|
|
|
+}
|
|
|
+END_TEST
|
|
|
+
|
|
|
+
|
|
|
#if !defined(REPLACE_CHECK_FOR_LOCAL_DEBUGGING)
|
|
|
Suite *
|
|
|
make_private_suite(void)
|
|
@@ -923,6 +1057,7 @@ make_private_suite(void)
|
|
|
TCase *const tcase_mask_data = tcase_create("Mask Data");
|
|
|
TCase *const tcase_parse_date_string = tcase_create("Date Parsing");
|
|
|
TCase *const tcase_sha1 = tcase_create("SHA1");
|
|
|
+ TCase *const tcase_config_options = tcase_create("Config Options");
|
|
|
|
|
|
tcase_add_test(tcase_http_message, test_parse_http_message);
|
|
|
tcase_set_timeout(tcase_http_message, civetweb_min_test_timeout);
|
|
@@ -985,6 +1120,10 @@ make_private_suite(void)
|
|
|
tcase_set_timeout(tcase_sha1, civetweb_min_test_timeout);
|
|
|
suite_add_tcase(suite, tcase_sha1);
|
|
|
|
|
|
+ tcase_add_test(tcase_config_options, test_config_options);
|
|
|
+ tcase_set_timeout(tcase_config_options, civetweb_min_test_timeout);
|
|
|
+ suite_add_tcase(suite, tcase_config_options);
|
|
|
+
|
|
|
return suite;
|
|
|
}
|
|
|
#endif
|