test impl

This commit is contained in:
Sergey Kazmin
2024-09-30 15:12:28 +03:00
parent 03ebf63d2f
commit ceab2087c0
2 changed files with 33 additions and 1 deletions

View File

@@ -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
View 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