You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.6 KiB
169 lines
4.6 KiB
#ifndef CONFIG_TEST |
|
#define CONFIG_TEST |
|
|
|
#include "munit/munit.h" |
|
#include "../src/config.h" |
|
#include <unistd.h> //This has getcwd |
|
#include <stdlib.h> //This has getenv |
|
|
|
/* |
|
* Ensures that path_exists returns true on current working dir (should to exist) |
|
*/ |
|
MunitResult pathThatExists(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char cwd[500] = {'\0'}; |
|
getcwd(cwd,500); |
|
munit_assert_true( path_exists( cwd ) ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult pathThatDoesntExist(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char cwd[500] = {'\0'}; |
|
getcwd(cwd,500); |
|
strcat( cwd, "thisshoudldnotexist" ); |
|
munit_assert_false( path_exists( cwd ) ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult tildeResolvesCorrectly(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
munit_assert_string_equal( getenv("HOME"), resolveTilde("~") ); |
|
return MUNIT_OK; |
|
} |
|
|
|
|
|
MunitResult checkConfigDirWithXdg(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char directory[] = "/testing/xdg/directory"; |
|
setenv( "XDG_CONFIG_HOME",directory, 1 ); |
|
munit_assert_string_equal( "/testing/xdg/directory/yaip", getConfigDir() ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult checkConfigDirWithoutXdg(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
unsetenv( "XDG_CONFIG_HOME" ); |
|
char dir[500] = {'\0'}; |
|
strcpy( dir, getenv("HOME") ); |
|
strcat( dir, "/.config/yaip" ); |
|
munit_assert_string_equal( dir, getConfigDir() ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult checkDefaults(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
|
|
char directory[] = "/testing/xdg/directory"; |
|
char conffile[] = "/testing/xdg/directory/yaip/proxy.conf"; |
|
char certfile[] = "/testing/xdg/directory/yaip/cert.pem"; |
|
char keyfile[] = "/testing/xdg/directory/yaip/key.pem"; |
|
setenv( "XDG_CONFIG_HOME",directory, 1 ); |
|
Config *conf = configDefaults(); |
|
|
|
munit_assert_string_equal(conf->database, "proxy.sqlite"); |
|
munit_assert_int(conf->port, ==, 8080); |
|
munit_assert_string_equal(conf->localConfig, "proxy.conf"); |
|
munit_assert_string_equal(conf->userConfig, conffile); |
|
munit_assert_string_equal(conf->certfile, certfile); |
|
munit_assert_string_equal(conf->keyfile, keyfile); |
|
return MUNIT_OK; |
|
} |
|
|
|
|
|
MunitResult checkSetConfig(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
Config *conf = configDefaults(); |
|
setConfig(conf, "database", "test.blar"); |
|
munit_assert_string_equal(conf->database, "test.blar"); |
|
setConfig(conf, "localConfig", "test.blar"); |
|
munit_assert_string_equal(conf->localConfig, "test.blar"); |
|
setConfig(conf, "userConfig", "test.blar"); |
|
munit_assert_string_equal(conf->userConfig, "test.blar"); |
|
setConfig(conf, "port", "1234"); |
|
munit_assert_int(conf->port, ==, 1234); |
|
|
|
|
|
return MUNIT_OK; |
|
} |
|
|
|
static MunitTest config_tests[] = { |
|
{ |
|
"/path_exists/yes", /* name */ |
|
pathThatExists, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/path_exists/no", /* name */ |
|
pathThatDoesntExist, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/TildeResolves", /* name */ |
|
tildeResolvesCorrectly, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/WithXDG", /* name */ |
|
checkConfigDirWithoutXdg, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/WithoutXDG", /* name */ |
|
checkConfigDirWithoutXdg, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/Defaults", /* name */ |
|
checkDefaults, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/SetConfigs", /* name */ |
|
checkSetConfig, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
/* Mark the end of the array with an entry where the test |
|
* function is NULL */ |
|
{ NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } |
|
}; |
|
|
|
MunitSuite config_test_suite = { |
|
"/config", /* name */ |
|
config_tests, /* tests */ |
|
NULL, /* suites */ |
|
1, /* iterations */ |
|
MUNIT_SUITE_OPTION_NONE /* options */ |
|
}; |
|
|
|
#ifndef MAINTEST |
|
#define MAINTEST |
|
|
|
int main (int argc, char* argv[]) { |
|
return munit_suite_main(&config_test_suite, NULL, argc, argv); |
|
} |
|
|
|
#endif /* ifndef MAINTEST */ |
|
|
|
#endif /* ifndef CONFIG_TEST */
|
|
|