Skip to content

Commit b7d567f

Browse files
committed
The PR resolves an issue reported under oras-project#132.
Use existing query parameter string from blobstore response and then append digest. Test updated to ensure existing query parameters are maintained Signed-off-by: Daniel Robinson <[email protected]>
1 parent 20cfbce commit b7d567f

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/OrasProject.Oras/Registry/Remote/BlobStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public async Task PushAsync(Descriptor expected, Stream content, CancellationTok
152152
// add digest key to query string with expected digest value
153153
var req = new HttpRequestMessage(HttpMethod.Put, new UriBuilder(url)
154154
{
155-
Query = $"digest={HttpUtility.UrlEncode(expected.Digest)}"
155+
Query = $"{url.Query}&digest={HttpUtility.UrlEncode(expected.Digest)}"
156156
}.Uri);
157157
req.Content = new StreamContent(content);
158158
req.Content.Headers.ContentLength = expected.Size;

tests/OrasProject.Oras.Tests/Remote/RepositoryTest.cs

+7-1
Original file line numberDiff line numberDiff line change
@@ -1082,19 +1082,25 @@ public async Task BlobStore_PushAsync()
10821082
};
10831083
var gotBlob = new byte[blob.Length];
10841084
var uuid = Guid.NewGuid().ToString();
1085+
var existingQueryParameter = "existingParam=value";
1086+
10851087
var func = (HttpRequestMessage req, CancellationToken cancellationToken) =>
10861088
{
10871089
var res = new HttpResponseMessage();
10881090
res.RequestMessage = req;
10891091
if (req.Method == HttpMethod.Post && req.RequestUri?.AbsolutePath == $"/v2/test/blobs/uploads/")
10901092
{
10911093
res.StatusCode = HttpStatusCode.Accepted;
1092-
res.Headers.Add("Location", "/v2/test/blobs/uploads/" + uuid);
1094+
res.Headers.Add("Location", $"/v2/test/blobs/uploads/{uuid}?{existingQueryParameter}");
10931095
return res;
10941096
}
10951097

10961098
if (req.Method == HttpMethod.Put && req.RequestUri?.AbsolutePath == "/v2/test/blobs/uploads/" + uuid)
10971099
{
1100+
// Assert that the existing query parameter is present
1101+
var queryParameters = HttpUtility.ParseQueryString(req.RequestUri.Query);
1102+
Assert.Equal("value", queryParameters["existingParam"]);
1103+
10981104
if (req.Headers.TryGetValues("Content-Type", out var contentType) &&
10991105
contentType.FirstOrDefault() != "application/octet-stream")
11001106
{

0 commit comments

Comments
 (0)