Skip to content

Commit e630faf

Browse files
committed
Add test
1 parent 3c9e5b9 commit e630faf

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

datamodel/odata-client/src/test/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataRequestResultGenericTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
import static org.mockito.Mockito.mock;
1212
import static org.mockito.Mockito.when;
1313

14+
import java.io.ByteArrayInputStream;
15+
import java.io.InputStream;
1416
import java.net.SocketException;
17+
import java.nio.charset.StandardCharsets;
1518
import java.util.Collection;
1619
import java.util.Collections;
1720
import java.util.Map;
@@ -20,6 +23,7 @@
2023
import org.apache.http.HttpEntity;
2124
import org.apache.http.HttpResponse;
2225
import org.apache.http.client.HttpClient;
26+
import org.apache.http.entity.InputStreamEntity;
2327
import org.apache.http.entity.StringEntity;
2428
import org.apache.http.message.BasicHeader;
2529
import org.apache.http.message.BasicHttpResponse;
@@ -162,4 +166,35 @@ void ensureNoRedundantHeadersForPaginatedRequests()
162166
final Map<String, Collection<String>> lastRequestHeaders = nextResult.getODataRequest().getHeaders();
163167
assertThat(lastRequestHeaders).containsExactly(entry("Accept", Collections.singletonList("application/json")));
164168
}
169+
170+
@Test
171+
@SneakyThrows
172+
void testDisabledBuffer()
173+
{
174+
// test setup for request
175+
final ODataRequestGeneric oDataRequest =
176+
new ODataRequestRead("generic/service/path", "entity(123)", null, ODataProtocol.V4);
177+
178+
// test setup for streamed http response
179+
final BasicHttpResponse httpResponse = new BasicHttpResponse(HTTP_1_1, 200, "OK");
180+
final String json = "{\"value\":[]}";
181+
final InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8));
182+
httpResponse.setEntity(new InputStreamEntity(inputStream, json.length()));
183+
184+
// system under test
185+
final ODataRequestResultGeneric testResult = new ODataRequestResultGeneric(oDataRequest, httpResponse);
186+
testResult.disableBufferingHttpResponse();
187+
188+
// sanity checks do not consume the response
189+
assertThat(testResult.getHeaderValues("Content-Length")).isEmpty();
190+
assertThat(testResult.getHttpResponse().getStatusLine().getStatusCode()).isEqualTo(200);
191+
192+
// true-positive, successfully read once
193+
assertThat(testResult.asListOfMaps()).isEmpty();
194+
195+
// true-negative, no second read possible
196+
assertThatThrownBy(testResult::asListOfMaps)
197+
.isInstanceOf(ODataDeserializationException.class)
198+
.hasMessageContaining("Unable to read OData 4.0 response.");
199+
}
165200
}

0 commit comments

Comments
 (0)