Skip to content

Commit 9112c94

Browse files
author
Dhriti Chopra
committed
adding tests
1 parent 33f225c commit 9112c94

1 file changed

Lines changed: 153 additions & 0 deletions

File tree

google-cloud-storage/src/test/java/com/google/cloud/storage/ITMultipartUploadHttpRequestManagerTest.java

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static com.google.common.truth.Truth.assertThat;
2020
import static io.grpc.netty.shaded.io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE;
21+
import static io.grpc.netty.shaded.io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
2122
import static io.grpc.netty.shaded.io.netty.handler.codec.http.HttpResponseStatus.OK;
2223
import static org.junit.Assert.assertThrows;
2324

@@ -745,6 +746,44 @@ public void sendListPartsRequest_errorResponse() throws Exception {
745746
}
746747
}
747748

749+
@Test
750+
public void sendListPartsRequest_withUserProject() throws Exception {
751+
HttpRequestHandler handler =
752+
req -> {
753+
assertThat(req.headers().get("x-goog-user-project")).isEqualTo("test-project");
754+
ListPartsResponse listPartsResponse =
755+
ListPartsResponse.builder()
756+
.bucket("test-bucket")
757+
.key("test-key")
758+
.uploadId("test-upload-id")
759+
.maxParts(1)
760+
.partNumberMarker(0)
761+
.parts(ImmutableList.of())
762+
.build();
763+
ByteBuf buf = Unpooled.wrappedBuffer(xmlMapper.writeValueAsBytes(listPartsResponse));
764+
DefaultFullHttpResponse resp = new DefaultFullHttpResponse(req.protocolVersion(), OK, buf);
765+
resp.headers().set(CONTENT_TYPE, "application/xml; charset=utf-8");
766+
return resp;
767+
};
768+
769+
try (FakeHttpServer fakeHttpServer = FakeHttpServer.of(handler)) {
770+
MultipartUploadHttpRequestManager multipartUploadHttpRequestManager =
771+
MultipartUploadHttpRequestManager.createFrom(fakeHttpServer.getHttpStorageOptions());
772+
ListPartsRequest request =
773+
ListPartsRequest.builder()
774+
.bucket("test-bucket")
775+
.key("test-key")
776+
.uploadId("test-upload-id")
777+
.userProject("test-project")
778+
.build();
779+
780+
ListPartsResponse response = multipartUploadHttpRequestManager.sendListPartsRequest(request);
781+
782+
assertThat(response).isNotNull();
783+
assertThat(response.bucket()).isEqualTo("test-bucket");
784+
}
785+
}
786+
748787
@Test
749788
public void sendAbortMultipartUploadRequest_success() throws Exception {
750789
HttpRequestHandler handler =
@@ -802,6 +841,36 @@ public void sendAbortMultipartUploadRequest_error() throws Exception {
802841
}
803842
}
804843

844+
@Test
845+
public void sendAbortMultipartUploadRequest_withUserProject() throws Exception {
846+
HttpRequestHandler handler =
847+
req -> {
848+
assertThat(req.headers().get("x-goog-user-project")).isEqualTo("test-project");
849+
AbortMultipartUploadResponse response = new AbortMultipartUploadResponse();
850+
ByteBuf buf = Unpooled.wrappedBuffer(xmlMapper.writeValueAsBytes(response));
851+
DefaultFullHttpResponse resp = new DefaultFullHttpResponse(req.protocolVersion(), OK, buf);
852+
resp.headers().set(CONTENT_TYPE, "application/xml; charset=utf-8");
853+
return resp;
854+
};
855+
856+
try (FakeHttpServer fakeHttpServer = FakeHttpServer.of(handler)) {
857+
MultipartUploadHttpRequestManager multipartUploadHttpRequestManager =
858+
MultipartUploadHttpRequestManager.createFrom(fakeHttpServer.getHttpStorageOptions());
859+
AbortMultipartUploadRequest request =
860+
AbortMultipartUploadRequest.builder()
861+
.bucket("test-bucket")
862+
.key("test-key")
863+
.uploadId("test-upload-id")
864+
.userProject("test-project")
865+
.build();
866+
867+
AbortMultipartUploadResponse response =
868+
multipartUploadHttpRequestManager.sendAbortMultipartUploadRequest(request);
869+
870+
assertThat(response).isNotNull();
871+
}
872+
}
873+
805874
@Test
806875
public void sendCompleteMultipartUploadRequest_success() throws Exception {
807876
HttpRequestHandler handler =
@@ -1094,6 +1163,40 @@ public void sendUploadPartRequest_withCustomChecksum() throws Exception {
10941163
}
10951164
}
10961165

1166+
@Test
1167+
public void sendUploadPartRequest_withUserProject() throws Exception {
1168+
String etag = "\"af1ed31420542285653c803a34aa839a\"";
1169+
byte[] contentBytes = "hello world".getBytes(StandardCharsets.UTF_8);
1170+
1171+
HttpRequestHandler handler =
1172+
req -> {
1173+
assertThat(req.headers().get("x-goog-user-project")).isEqualTo("test-project");
1174+
DefaultFullHttpResponse resp = new DefaultFullHttpResponse(req.protocolVersion(), OK);
1175+
resp.headers().set("ETag", etag);
1176+
return resp;
1177+
};
1178+
1179+
try (FakeHttpServer fakeHttpServer = FakeHttpServer.of(handler)) {
1180+
MultipartUploadHttpRequestManager multipartUploadHttpRequestManager =
1181+
MultipartUploadHttpRequestManager.createFrom(fakeHttpServer.getHttpStorageOptions());
1182+
UploadPartRequest request =
1183+
UploadPartRequest.builder()
1184+
.bucket("test-bucket")
1185+
.key("test-key")
1186+
.uploadId("test-upload-id")
1187+
.partNumber(1)
1188+
.userProject("test-project")
1189+
.build();
1190+
1191+
UploadPartResponse response =
1192+
multipartUploadHttpRequestManager.sendUploadPartRequest(
1193+
request, RewindableContent.of(ByteBuffer.wrap(contentBytes)));
1194+
1195+
assertThat(response).isNotNull();
1196+
assertThat(response.eTag()).isEqualTo(etag);
1197+
}
1198+
}
1199+
10971200
@Test
10981201
public void sendUploadPartRequest_error() throws Exception {
10991202
HttpRequestHandler handler =
@@ -1210,6 +1313,56 @@ public void sendListMultipartUploadsRequest_error() throws Exception {
12101313
}
12111314
}
12121315

1316+
@Test
1317+
public void sendListMultipartUploadsRequest_withUserProject() throws Exception {
1318+
HttpRequestHandler handler =
1319+
req -> {
1320+
assertThat(req.headers().get("x-goog-user-project")).isEqualTo("test-project");
1321+
ListMultipartUploadsResponse listMultipartUploadsResponse =
1322+
ListMultipartUploadsResponse.builder()
1323+
.bucket("test-bucket")
1324+
.keyMarker("key-marker")
1325+
.uploadIdMarker("upload-id-marker")
1326+
.nextKeyMarker("next-key-marker")
1327+
.nextUploadIdMarker("next-upload-id-marker")
1328+
.maxUploads(1)
1329+
.truncated(false)
1330+
.uploads(ImmutableList.of())
1331+
.build();
1332+
// Jackson fails to serialize ImmutableList without GuavaModule.
1333+
// We use reflection to replace it with ArrayList for the test.
1334+
forceSetUploads(listMultipartUploadsResponse, listMultipartUploadsResponse.uploads());
1335+
1336+
ByteBuf buf =
1337+
Unpooled.wrappedBuffer(xmlMapper.writeValueAsBytes(listMultipartUploadsResponse));
1338+
1339+
DefaultFullHttpResponse resp =
1340+
new DefaultFullHttpResponse(req.protocolVersion(), OK, buf);
1341+
1342+
resp.headers().set("Content-Type", "application/xml; charset=utf-8");
1343+
resp.headers().set("Content-Length", resp.content().readableBytes());
1344+
return resp;
1345+
};
1346+
1347+
try (FakeHttpServer fakeHttpServer = FakeHttpServer.of(handler)) {
1348+
MultipartUploadHttpRequestManager multipartUploadHttpRequestManager =
1349+
MultipartUploadHttpRequestManager.createFrom(fakeHttpServer.getHttpStorageOptions());
1350+
1351+
ListMultipartUploadsRequest request =
1352+
ListMultipartUploadsRequest.builder()
1353+
.bucket("test-bucket")
1354+
.maxUploads(1)
1355+
.userProject("test-project")
1356+
.build();
1357+
1358+
ListMultipartUploadsResponse response =
1359+
multipartUploadHttpRequestManager.sendListMultipartUploadsRequest(request);
1360+
1361+
assertThat(response).isNotNull();
1362+
assertThat(response.bucket()).isEqualTo("test-bucket");
1363+
}
1364+
}
1365+
12131366
private void forceSetUploads(
12141367
ListMultipartUploadsResponse response, java.util.List<MultipartUpload> uploads) {
12151368
try {

0 commit comments

Comments
 (0)