2 * Copyright (C) The Arvados Authors. All rights reserved.
4 * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
8 package org.arvados.client.api.client;
10 import com.google.common.collect.Maps;
11 import okhttp3.mockwebserver.MockResponse;
12 import okhttp3.mockwebserver.RecordedRequest;
14 import org.apache.commons.io.FileUtils;
15 import org.arvados.client.common.Headers;
16 import org.arvados.client.test.utils.ArvadosClientMockedWebServerTest;
17 import org.junit.Test;
22 import static org.arvados.client.test.utils.ApiClientTestUtils.assertAuthorizationHeader;
23 import static org.assertj.core.api.Assertions.assertThat;
25 public class KeepServerApiClientTest extends ArvadosClientMockedWebServerTest {
27 private KeepServerApiClient client = new KeepServerApiClient(CONFIG);
30 public void uploadFileToServer() throws Exception {
33 String blockLocator = "7df44272090cee6c0732382bba415ee9";
34 String signedBlockLocator = blockLocator + "+70+A189a93acda6e1fba18a9dffd42b6591cbd36d55d@5a1c17b6";
35 server.enqueue(new MockResponse().setBody(signedBlockLocator));
37 String url = server.url(blockLocator).toString();
38 File body = new File("README.md");
39 Map<String, String> headers = Maps.newHashMap();
40 headers.put(Headers.X_KEEP_DESIRED_REPLICAS, "2");
43 String actual = client.upload(url, headers, body);
46 RecordedRequest request = server.takeRequest();
47 assertAuthorizationHeader(request);
48 assertThat(request.getPath()).isEqualTo("/" + blockLocator);
50 assertThat(actual).isEqualTo(signedBlockLocator);
54 public void downloadFileFromServer() throws Exception {
55 File data = new File("README.md");
56 byte[] fileBytes = FileUtils.readFileToByteArray(data);
57 server.enqueue(new MockResponse().setBody(new Buffer().write(fileBytes)));
59 String blockLocator = "7df44272090cee6c0732382bba415ee9";
60 String signedBlockLocator = blockLocator + "+70+A189a93acda6e1fba18a9dffd42b6591cbd36d55d@5a1c17b6";
62 String url = server.url(signedBlockLocator).toString();
64 byte[] actual = client.download(url);
65 RecordedRequest request = server.takeRequest();
66 assertThat(request.getPath()).isEqualTo("/" + signedBlockLocator);
67 assertThat(actual).isEqualTo(fileBytes);