mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
test impl
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include "clar.h"
|
||||
#include "clar_libgit2.h"
|
||||
|
||||
#include "path.h"
|
||||
@@ -6,6 +7,8 @@
|
||||
#include "remote.h"
|
||||
#include "futils.h"
|
||||
#include "refs.h"
|
||||
#include "str.h"
|
||||
#include "streams/openssl.h"
|
||||
|
||||
/*
|
||||
* Certificate one is in the `certs` folder; certificate two is in the
|
||||
@@ -17,6 +20,9 @@
|
||||
#define CUSTOM_CERT_TWO_URL "https://test.libgit2.org:2443/anonymous/test.git"
|
||||
#define CUSTOM_CERT_TWO_FILE "self-signed.pem"
|
||||
|
||||
#define CUSTOM_CERT_THREE_URL "https://test.libgit2.org:3443/anonymous/test.git"
|
||||
#define CUSTOM_CERT_THREE_FILE "self-signed.pem.raw"
|
||||
|
||||
#if (GIT_OPENSSL || GIT_MBEDTLS)
|
||||
static git_repository *g_repo;
|
||||
static int initialized = false;
|
||||
@@ -28,22 +34,38 @@ void test_online_customcert__initialize(void)
|
||||
g_repo = NULL;
|
||||
|
||||
if (!initialized) {
|
||||
git_str path = GIT_STR_INIT, file = GIT_STR_INIT;
|
||||
git_str path = GIT_STR_INIT, file = GIT_STR_INIT, raw_file = GIT_STR_INIT, raw_file_buf = GIT_STR_INIT, raw_cert = GIT_STR_INIT;
|
||||
char cwd[GIT_PATH_MAX];
|
||||
const unsigned char* raw_cert_bytes = NULL;
|
||||
X509* x509_cert = NULL;
|
||||
|
||||
cl_fixture_sandbox(CUSTOM_CERT_ONE_PATH);
|
||||
cl_fixture_sandbox(CUSTOM_CERT_TWO_FILE);
|
||||
cl_fixture_sandbox(CUSTOM_CERT_THREE_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_str_joinpath(&raw_file, cwd, CUSTOM_CERT_THREE_FILE));
|
||||
|
||||
cl_git_pass(git_libgit2_opts(GIT_OPT_SET_SSL_CERT_LOCATIONS,
|
||||
file.ptr, path.ptr));
|
||||
|
||||
#if (GIT_OPENSSL)
|
||||
cl_git_pass(git_futils_readbuffer(&raw_file_buf, git_str_cstr(&raw_file)));
|
||||
cl_git_pass(git_str_decode_base64(&raw_cert, git_str_cstr(&raw_file_buf), git_str_len(&raw_file_buf)));
|
||||
|
||||
raw_cert_bytes = (const unsigned char*)git_str_cstr(&raw_cert);
|
||||
x509_cert = d2i_X509(NULL, &raw_cert_bytes, git_str_len(&raw_cert));
|
||||
cl_git_pass(git_libgit2_opts(GIT_OPT_ADD_SSL_X509_CERT, x509_cert));
|
||||
X509_free(x509_cert);
|
||||
#endif
|
||||
|
||||
initialized = true;
|
||||
|
||||
git_str_dispose(&file);
|
||||
git_str_dispose(&path);
|
||||
git_str_dispose(&raw_file);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -59,6 +81,7 @@ void test_online_customcert__cleanup(void)
|
||||
cl_fixture_cleanup("./cloned");
|
||||
cl_fixture_cleanup(CUSTOM_CERT_ONE_PATH);
|
||||
cl_fixture_cleanup(CUSTOM_CERT_TWO_FILE);
|
||||
cl_fixture_cleanup(CUSTOM_CERT_THREE_FILE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -77,3 +100,11 @@ void test_online_customcert__path(void)
|
||||
cl_assert(git_fs_path_exists("./cloned/master.txt"));
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_online_customcert__raw_x509(void)
|
||||
{
|
||||
#if (GIT_OPENSSL)
|
||||
cl_git_pass(git_clone(&g_repo, CUSTOM_CERT_THREE_URL, "./cloned", NULL));
|
||||
cl_assert(git_fs_path_exists("./cloned/master.txt"));
|
||||
#endif
|
||||
}
|
||||
|
||||
1
tests/resources/self-signed.pem.raw
vendored
Normal file
1
tests/resources/self-signed.pem.raw
vendored
Normal file
@@ -0,0 +1 @@
|
||||
MIIDUzCCAjsCFAb11im6DYQyGJ0GNQCIehXtegq6MA0GCSqGSIb3DQEBCwUAMGYxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1NYXNzYWNodXNldHRzMRIwEAYDVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB2xpYmdpdDIxGTAXBgNVBAMMEHRlc3QubGliZ2l0Mi5vcmcwHhcNMjEwODMwMDAyMTQyWhcNMzEwODI4MDAyMTQyWjBmMQswCQYDVQQGEwJVUzEWMBQGA1UECAwNTWFzc2FjaHVzZXR0czESMBAGA1UEBwwJQ2FtYnJpZGdlMRAwDgYDVQQKDAdsaWJnaXQyMRkwFwYDVQQDDBB0ZXN0LmxpYmdpdDIub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtqe6b1vnMni+z8Z+a2bGtykIITvBged15rn+0qG6Fz+sn9bYG+ceFupztFfoN3cVpUgQDBTzr3CaAx036BlV0z8iCrG0Oh/XGL+9TITQLumEe4iGi8NoMSujBAyXPSNgmpzDmCTGrNFfmq3HzUtO8t3xi8OT7d9qCVjFimLvZbgnfHGQ38xvt1XyPgYIVqDQczmMEZ5BdYWB0A1VmnWuP2dHBgjwPEC3HwMmm1+PL0VoPTdvE5Su092Qdt8QsiA56466DQyll1d/omnOJfrK7z0NOnfDmnDpARSTy6vDofEAYUQoc3dyvBUk8IIzv2UDcR7fTVvYqseQReIOTEnXmQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBmUEq+JhwWTbB5ODGOKrMG1fKJ+sf6ZH6Mc4BgLEcdoi/nOTfPuw+ols72LuhH7NKaEcqxWev0jGF0WKqMcM8AGVbywZJ3mBWosKdh6rAGFNkikW4TzhjtDfFbMR45Didl28Be7ieHQL4CQ0Lse3RMOxp250WpiEYVW2hIKMwIqOLKGShVD7lI+eHlv+QSH4yOYKHfRHve8s82Tac5OXinc8CJm9ySOtkOMfLgfkHtHdFBnV6OVbf4p/596MfMXdwT/bBxT6WPkDGc1AYhoDlmLFTpRgHIDCSK2wgV+qHppl7Kn+p3mFQ9sW/1IaRd+jNZOrgZ8Uu5tJ00OaqR/LVG
|
||||
Reference in New Issue
Block a user