src/server/test/main.c

Wed, 27 Nov 2024 23:00:07 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 27 Nov 2024 23:00:07 +0100
changeset 563
6ca97c99173e
parent 552
4ed0e46aa9dc
permissions
-rw-r--r--

add TODO to use a future ucx feature

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2019 Olaf Wintermann. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   1. Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *
 *   2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <pthread.h>

#include "../util/pool.h"
#include "../public/nsapi.h"
#include "../util/plist.h"
#include "../util/date.h"
#include "../daemon/vfs.h"

#include "test.h"

#include "vfs.h"
#include "writer.h"
#include "xml.h"
#include "webdav.h"
#include "uri.h"
#include "object.h"
#include "io.h"
#include "event.h"

void register_pg_tests(int argc, char **argv, UcxTestSuite *suite);


void test() {
    
}

// needed for linking
WSBool main_is_daemon(void) {
    return 0;
}

int main(int argc, char **argv) {
    pool_init(NULL, NULL, NULL);
    pblock_init_default_keys();
    vfs_init();
    
    //test();
    
    printf("%s", "Webserver Test Suite\n====================\n\n");
    
    UcxTestSuite* suite = ucx_test_suite_new();
    
    // util tests
    ucx_test_register(suite, test_util_uri_escape_alphanum);
    ucx_test_register(suite, test_util_uri_escape_space);
    ucx_test_register(suite, test_util_uri_escape_latin);
    ucx_test_register(suite, test_util_uri_escape_kanji);
    
    // event tests
    ucx_test_register(suite, test_evhandler_create);
    ucx_test_register(suite, test_event_send);
    ucx_test_register(suite, test_event_send_multi);
    
    // object tests
    ucx_test_register(suite, test_expr_parse_expr_value);
    ucx_test_register(suite, test_expr_parse_expr_neg_value);
    ucx_test_register(suite, test_expr_parse_expr_value_str);
    ucx_test_register(suite, test_expr_parse_expr_value_bool);
    ucx_test_register(suite, test_expr_parse_expr_value_var);
    ucx_test_register(suite, test_expr_parse_expr_not_value);
    ucx_test_register(suite, test_expr_parse_expr_sign_value);
    ucx_test_register(suite, test_expr_parse_expr_compare2values);
    ucx_test_register(suite, test_expr_parse_expr_compare2value_expr);
    ucx_test_register(suite, test_expr_parse_expr_compare2expr_value);
    ucx_test_register(suite, test_expr_parse_expr_bracket);
    ucx_test_register(suite, test_expr_op_defined_simple);
    ucx_test_register(suite, test_expr_op_defined);
    ucx_test_register(suite, test_expr_op_file_exists_simple);
    ucx_test_register(suite, test_expr_parse_expr_func_arg0);
    ucx_test_register(suite, test_expr_parse_expr_func_arg1);
    ucx_test_register(suite, test_expr_parse_expr_func_arg3);
    ucx_test_register(suite, test_expr_parse_expr_func_expr1);
    ucx_test_register(suite, test_expr_parse_expr_func_expr2);
    
    // io tests
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly_first);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly_seq_fail);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdr_data);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_empty);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_partial_first);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_partial);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_invalid);
    ucx_test_register(suite, test_io_http_stream_parse_chunk_header_zero);
    ucx_test_register(suite, test_io_httpstream_write);
    ucx_test_register(suite, test_io_httpstream_chunked_write);
    ucx_test_register(suite, test_io_httpstream_chunked_write_end);
    ucx_test_register(suite, test_io_httpstream_chunked_write_xx);
    ucx_test_register(suite, test_io_httpstream_chunked_write_partial_header);
    ucx_test_register(suite, test_io_httpstream_chunked_write_partial_data);
    ucx_test_register(suite, test_io_httpstream_chunked_write_partial_trailer);
    ucx_test_register(suite, test_io_httpstream_chunked_write_partial_trailer_partial_header);
    ucx_test_register(suite, test_io_httpstream_chunked_write_data_2x);
    ucx_test_register(suite, test_io_httpstream_chunked_write_xx_limit);
    
    // vfs tests
    ucx_test_register(suite, test_vfs_open);
    ucx_test_register(suite, test_vfs_mkdir);
    ucx_test_register(suite, test_vfs_opendir);
    ucx_test_register(suite, test_vfs_readdir);
    ucx_test_register(suite, test_vfs_unlink);
    ucx_test_register(suite, test_vfs_rmdir);
    
    // writer tests
    ucx_test_register(suite, test_writer_putc);
    ucx_test_register(suite, test_writer_flush);
    ucx_test_register(suite, test_writer_put);
    
    // xml tests
    ucx_test_register(suite, test_wsxml_iterator);
    ucx_test_register(suite, test_wsxml_get_required_namespaces);
    ucx_test_register(suite, test_wsxml_write_nodes);
    ucx_test_register(suite, test_wsxml_nslist2string);
    ucx_test_register(suite, test_wsxml_string2nslist);
    
    // webdav tests
    ucx_test_register(suite, test_webdav_plist_add);
    ucx_test_register(suite, test_webdav_plist_size);
    ucx_test_register(suite, test_propfind_parse);
    ucx_test_register(suite, test_proppatch_parse);
    ucx_test_register(suite, test_lock_parse);
    ucx_test_register(suite, test_rqbody2buffer);
    ucx_test_register(suite, test_webdav_plist_iterator);
    ucx_test_register(suite, test_webdav_plist_iterator_remove_current);
    ucx_test_register(suite, test_msresponse_addproperty);
    ucx_test_register(suite, test_webdav_propfind_init);
    ucx_test_register(suite, test_webdav_op_propfind_begin);
    ucx_test_register(suite, test_webdav_op_propfind_children);
    ucx_test_register(suite, test_proppatch_msresponse);
    ucx_test_register(suite, test_msresponse_addproperty_with_errors);
    ucx_test_register(suite, test_webdav_op_proppatch);
    ucx_test_register(suite, test_webdav_vfs_op_do);
    ucx_test_register(suite, test_webdav_delete);
       
    // webdav methods
    ucx_test_register(suite, test_webdav_propfind);
    ucx_test_register(suite, test_webdav_proppatch);
    ucx_test_register(suite, test_webdav_put);
    
    // plugin tests
#ifdef ENABLE_POSTGRESQL
    register_pg_tests(argc, argv, suite);
#endif
       
    // run tests
    ucx_test_run(suite, stdout);
    fflush(stdout);
    
    return EXIT_SUCCESS;
}

mercurial