diff options
Diffstat (limited to 'tests/libgit2/online/customcert.c')
-rw-r--r-- | tests/libgit2/online/customcert.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/libgit2/online/customcert.c b/tests/libgit2/online/customcert.c new file mode 100644 index 000000000..7932a9e68 --- /dev/null +++ b/tests/libgit2/online/customcert.c @@ -0,0 +1,79 @@ +#include "clar_libgit2.h" + +#include "path.h" +#include "git2/clone.h" +#include "git2/cred_helpers.h" +#include "remote.h" +#include "futils.h" +#include "refs.h" + +/* + * Certificate one is in the `certs` folder; certificate two is in the + * `self-signed.pem` file. + */ +#define CUSTOM_CERT_ONE_URL "https://test.libgit2.org:1443/anonymous/test.git" +#define CUSTOM_CERT_ONE_PATH "certs" + +#define CUSTOM_CERT_TWO_URL "https://test.libgit2.org:2443/anonymous/test.git" +#define CUSTOM_CERT_TWO_FILE "self-signed.pem" + +#if (GIT_OPENSSL || GIT_MBEDTLS) +static git_repository *g_repo; +static int initialized = false; +#endif + +void test_online_customcert__initialize(void) +{ +#if (GIT_OPENSSL || GIT_MBEDTLS) + g_repo = NULL; + + if (!initialized) { + git_str path = GIT_STR_INIT, file = GIT_STR_INIT; + char cwd[GIT_PATH_MAX]; + + cl_fixture_sandbox(CUSTOM_CERT_ONE_PATH); + cl_fixture_sandbox(CUSTOM_CERT_TWO_FILE); + + cl_must_pass(p_getcwd(cwd, GIT_PATH_MAX)); + cl_git_pass(git_str_joinpath(&path, cwd, CUSTOM_CERT_ONE_PATH)); + cl_git_pass(git_str_joinpath(&file, cwd, CUSTOM_CERT_TWO_FILE)); + + cl_git_pass(git_libgit2_opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, + file.ptr, path.ptr)); + initialized = true; + + git_str_dispose(&file); + git_str_dispose(&path); + } +#endif +} + +void test_online_customcert__cleanup(void) +{ +#if (GIT_OPENSSL || GIT_MBEDTLS) + if (g_repo) { + git_repository_free(g_repo); + g_repo = NULL; + } + + cl_fixture_cleanup("./cloned"); + cl_fixture_cleanup(CUSTOM_CERT_ONE_PATH); + cl_fixture_cleanup(CUSTOM_CERT_TWO_FILE); +#endif +} + +void test_online_customcert__file(void) +{ +#if (GIT_OPENSSL || GIT_MBEDTLS) + cl_git_pass(git_clone(&g_repo, CUSTOM_CERT_ONE_URL, "./cloned", NULL)); + cl_assert(git_fs_path_exists("./cloned/master.txt")); +#endif +} + +void test_online_customcert__path(void) +{ +#if (GIT_OPENSSL || GIT_MBEDTLS) + cl_git_pass(git_clone(&g_repo, CUSTOM_CERT_TWO_URL, "./cloned", NULL)); + cl_assert(git_fs_path_exists("./cloned/master.txt")); +#endif +} |