diff options
| author | Patrick Steinhardt <ps@pks.im> | 2020-02-06 11:10:27 +0100 |
|---|---|---|
| committer | Patrick Steinhardt <ps@pks.im> | 2020-02-07 11:13:43 +0100 |
| commit | 46228d86f876f0602cff5b08af8531b758bdf6ac (patch) | |
| tree | 9fda97e61655bacb8ca623657eb5b0f4092bf9bc /tests/online/clone.c | |
| parent | bd6b1c41575e7cc011798a424b6564569887c293 (diff) | |
| download | libgit2-46228d86f876f0602cff5b08af8531b758bdf6ac.tar.gz | |
transports: http: fix custom headers not being applied
In commit b9c5b15a7 (http: use the new httpclient, 2019-12-22), the HTTP
code got refactored to extract a generic HTTP client that operates
independently of the Git protocol. Part of refactoring was the creation
of a new `git_http_request` struct that encapsulates the generation of
requests. Our Git-specific HTTP transport was converted to use that in
`generate_request`, but during the process we forgot to set up custom
headers for the `git_http_request` and as a result we do not send out
these headers anymore.
Fix the issue by correctly setting up the request's custom headers and
add a test to verify we correctly send them.
Diffstat (limited to 'tests/online/clone.c')
| -rw-r--r-- | tests/online/clone.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/online/clone.c b/tests/online/clone.c index f780f1371..034d0c2e8 100644 --- a/tests/online/clone.c +++ b/tests/online/clone.c @@ -392,6 +392,21 @@ void test_online_clone__credentials(void) cl_fixture_cleanup("./foo"); } +void test_online_clone__credentials_via_custom_headers(void) +{ + const char *creds = "libgit3:libgit3"; + git_buf auth = GIT_BUF_INIT; + + cl_git_pass(git_buf_puts(&auth, "Authorization: Basic ")); + cl_git_pass(git_buf_encode_base64(&auth, creds, strlen(creds))); + g_options.fetch_opts.custom_headers.count = 1; + g_options.fetch_opts.custom_headers.strings = &auth.ptr; + + cl_git_pass(git_clone(&g_repo, "https://bitbucket.org/libgit2/testgitrepository.git", "./foo", &g_options)); + + git_buf_dispose(&auth); +} + void test_online_clone__bitbucket_style(void) { git_credential_userpass_payload user_pass = { |
