diff --git a/cmake/unit_tests.cmake b/cmake/unit_tests.cmake index 933d78e..b49cca9 100644 --- a/cmake/unit_tests.cmake +++ b/cmake/unit_tests.cmake @@ -23,6 +23,7 @@ add_executable(alltests test/core/test_message_queue.cc test/adapter/test_response_parser.cc test/adapter/test_server.cc + test/adapter/test_server_config.cc test/adapter/test_timepoint.cc test/adapter/test_timer.cc test/adapter/test_credentials.cc diff --git a/test/adapter/test_server_config.cc b/test/adapter/test_server_config.cc new file mode 100644 index 0000000..5a03f5c --- /dev/null +++ b/test/adapter/test_server_config.cc @@ -0,0 +1,175 @@ +#include +#include "webfuse/adapter/server_config.h" +#include "webfuse/adapter/impl/server_config.h" +#include "webfuse/adapter/impl/authenticator.h" +#include "tempdir.hpp" + +using webfuse_test::TempDir; + +namespace +{ + +wf_mountpoint * create_mountpoint( + char const * filesystem, + void * user_data) +{ + (void) filesystem; + (void) user_data; + + return nullptr; +} + +bool authenticate( + wf_credentials * credentials, + void * user_data) +{ + (void) credentials; + (void) user_data; + + return false; +} + +} + + +TEST(server_config, create_dispose) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_documentroot) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + ASSERT_EQ(nullptr, config->document_root); + + wf_server_config_set_documentroot(config, "www"); + ASSERT_STREQ("www", config->document_root); + + wf_server_config_set_documentroot(config, "/var/www"); + ASSERT_STREQ("/var/www", config->document_root); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_keypath) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + ASSERT_EQ(nullptr, config->key_path); + + wf_server_config_set_keypath(config, "key.pem"); + ASSERT_STREQ("key.pem", config->key_path); + + wf_server_config_set_keypath(config, "pki/self/key.pem"); + ASSERT_STREQ("pki/self/key.pem", config->key_path); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_certpath) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + ASSERT_EQ(nullptr, config->key_path); + + wf_server_config_set_certpath(config, "cert.pem"); + ASSERT_STREQ("cert.pem", config->cert_path); + + wf_server_config_set_certpath(config, "pki/self/cert.pem"); + ASSERT_STREQ("pki/self/cert.pem", config->cert_path); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_vhostname) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + ASSERT_EQ(nullptr, config->key_path); + + wf_server_config_set_vhostname(config, "webfuse"); + ASSERT_STREQ("webfuse", config->vhost_name); + + wf_server_config_set_vhostname(config, "localhost"); + ASSERT_STREQ("localhost", config->vhost_name); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_port) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + + ASSERT_EQ(0, config->port); + + wf_server_config_set_port(config, 8443); + ASSERT_EQ(8443, config->port); + + wf_server_config_set_port(config, 8080); + ASSERT_EQ(8080, config->port); + + wf_server_config_dispose(config); +} + +TEST(server_config, set_mountpoint) +{ + TempDir temp("server_config"); + + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + ASSERT_EQ(nullptr, config->mountpoint_factory.create_mountpoint); + ASSERT_EQ(nullptr, config->mountpoint_factory.user_data); + ASSERT_EQ(nullptr, config->mountpoint_factory.dispose); + + wf_server_config_set_mountpoint(config, temp.path()); + ASSERT_NE(nullptr, config->mountpoint_factory.create_mountpoint); + ASSERT_NE(nullptr, config->mountpoint_factory.user_data); + ASSERT_NE(nullptr, config->mountpoint_factory.dispose); + + wf_server_config_dispose(config); +} + +TEST(server_cnfig, set_mounpoint_factory) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + ASSERT_EQ(nullptr, config->mountpoint_factory.create_mountpoint); + ASSERT_EQ(nullptr, config->mountpoint_factory.user_data); + ASSERT_EQ(nullptr, config->mountpoint_factory.dispose); + + int value = 42; + void * user_data = reinterpret_cast(&value); + wf_server_config_set_mountpoint_factory(config, &create_mountpoint, user_data); + ASSERT_NE(&create_mountpoint, config->mountpoint_factory.create_mountpoint); + ASSERT_EQ(user_data, config->mountpoint_factory.user_data); + ASSERT_EQ(nullptr, config->mountpoint_factory.dispose); + + wf_server_config_dispose(config); +} + +TEST(server_config, add_authenticator) +{ + wf_server_config * config = wf_server_config_create(); + ASSERT_NE(nullptr, config); + ASSERT_EQ(nullptr, config->authenticators.first); + + int value = 42; + void * user_data = reinterpret_cast(&value); + wf_server_config_add_authenticator(config, "username", &authenticate, user_data); + + wf_impl_authenticator * authenticator = config->authenticators.first; + ASSERT_STREQ("username", authenticator->type); + ASSERT_EQ(&authenticate, authenticator->authenticate); + ASSERT_EQ(user_data, authenticator->user_data); + + wf_server_config_dispose(config); +} \ No newline at end of file