Tweak test script no issue #
[arvados.git] / src / test / java / org / arvados / client / logic / keep / KeepClientTest.java
1 /*
2  * Copyright (C) The Arvados Authors. All rights reserved.
3  *
4  * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
5  *
6  */
7
8 package org.arvados.client.logic.keep;
9
10 import okhttp3.mockwebserver.MockResponse;
11 import okio.Buffer;
12 import org.apache.commons.io.FileUtils;
13 import org.arvados.client.config.FileConfigProvider;
14 import org.arvados.client.config.ConfigProvider;
15 import org.arvados.client.exception.ArvadosClientException;
16 import org.arvados.client.test.utils.ArvadosClientMockedWebServerTest;
17 import org.junit.Assert;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.InjectMocks;
21 import org.mockito.Mock;
22 import org.mockito.junit.MockitoJUnitRunner;
23
24 import java.io.File;
25
26 import static junit.framework.TestCase.fail;
27 import static org.arvados.client.test.utils.ApiClientTestUtils.getResponse;
28 import static org.assertj.core.api.Assertions.assertThat;
29
30 @RunWith(MockitoJUnitRunner.class)
31 public class KeepClientTest extends ArvadosClientMockedWebServerTest {
32
33     private ConfigProvider configProvider = new FileConfigProvider();
34     private static final String TEST_FILE_PATH ="src/test/resources/org/arvados/client/api/client/keep-client-test-file.txt";
35
36     @InjectMocks
37     private KeepClient keepClient  = new KeepClient(configProvider);
38
39     @Mock
40     private KeepLocator keepLocator;
41
42     @Test
43     public void uploadedFile() throws Exception {
44         // given
45         server.enqueue(getResponse("keep-services-accessible"));
46         server.enqueue(new MockResponse().setBody("0887c78c7d6c1a60ac0b3709a4302ee4"));
47
48         // when
49         String actual = keepClient.put(new File(TEST_FILE_PATH), 1, 0);
50
51         // then
52         assertThat(actual).isEqualTo("0887c78c7d6c1a60ac0b3709a4302ee4");
53     }
54
55     @Test
56     public void fileIsDownloaded() throws Exception {
57         //given
58         File data = new File(TEST_FILE_PATH);
59         byte[] fileBytes = FileUtils.readFileToByteArray(data);
60
61         // when
62         server.enqueue(getResponse("keep-services-accessible"));
63         server.enqueue(new MockResponse().setBody(new Buffer().write(fileBytes)));
64
65         byte[] actual = keepClient.getDataChunk(keepLocator);
66
67         Assert.assertArrayEquals(fileBytes, actual);
68     }
69
70     @Test
71     public void fileIsDownloadedWhenFirstServerDoesNotRespond() throws Exception {
72         // given
73         File data = new File(TEST_FILE_PATH);
74         byte[] fileBytes = FileUtils.readFileToByteArray(data);
75         server.enqueue(getResponse("keep-services-accessible")); // two servers accessible
76         server.enqueue(new MockResponse().setResponseCode(404)); // first one not responding
77         server.enqueue(new MockResponse().setBody(new Buffer().write(fileBytes))); // second one responding
78
79         //when
80         byte[] actual = keepClient.getDataChunk(keepLocator);
81
82         //then
83         Assert.assertArrayEquals(fileBytes, actual);
84     }
85
86     @Test
87     public void exceptionIsThrownWhenNoServerResponds() throws Exception {
88         //given
89         File data = new File(TEST_FILE_PATH);
90         server.enqueue(getResponse("keep-services-accessible")); // two servers accessible
91         server.enqueue(new MockResponse().setResponseCode(404)); // first one not responding
92         server.enqueue(new MockResponse().setResponseCode(404)); // second one not responding
93
94         try {
95             //when
96             keepClient.getDataChunk(keepLocator);
97             fail();
98         } catch (ArvadosClientException e) {
99             //then
100             Assert.assertEquals("No server responding. Unable to download data chunk.", e.getMessage());
101         }
102     }
103
104     @Test
105     public void exceptionIsThrownWhenThereAreNoServersAccessible() throws Exception {
106         //given
107         server.enqueue(getResponse("keep-services-not-accessible")); // no servers accessible
108
109         try {
110             //when
111             keepClient.getDataChunk(keepLocator);
112             fail();
113         } catch (ArvadosClientException e) {
114             //then
115             Assert.assertEquals("No gateway services available!", e.getMessage());
116         }
117     }
118 }