diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java new file mode 100644 index 0000000000..69093f37c4 --- /dev/null +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/io/http/ning/NingHttpHeaders.java @@ -0,0 +1,46 @@ +package uk.ac.ic.wlgitbridge.io.http.ning; + +import com.ning.http.client.FluentCaseInsensitiveStringsMap; +import com.ning.http.client.HttpResponseHeaders; + +import java.util.*; + +public class NingHttpHeaders extends HttpResponseHeaders { + + private final FluentCaseInsensitiveStringsMap map; + + private NingHttpHeaders(FluentCaseInsensitiveStringsMap map) { + this.map = map; + } + + public static NingHttpHeadersBuilder builder() { + return new NingHttpHeadersBuilder(); + } + + @Override + public FluentCaseInsensitiveStringsMap getHeaders() { + return map; + } + + public static class NingHttpHeadersBuilder { + + private final Map> map; + + private NingHttpHeadersBuilder() { + map = new HashMap<>(); + } + + public NingHttpHeadersBuilder addHeader(String key, String... values) { + map.computeIfAbsent(key, __ -> new ArrayList<>()) + .addAll(Arrays.asList(values)); + return this; + } + + public NingHttpHeaders build() { + return new NingHttpHeaders( + new FluentCaseInsensitiveStringsMap(map)); + } + + } + +} diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java index e180a07731..77c38f8996 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/resource/UrlResourceCacheTest.java @@ -1,13 +1,19 @@ package uk.ac.ic.wlgitbridge.bridge.resource; +import com.ning.http.client.HttpResponseHeaders; import org.junit.Test; import uk.ac.ic.wlgitbridge.bridge.db.noop.NoopDbStore; +import uk.ac.ic.wlgitbridge.git.exception.SizeLimitExceededException; import uk.ac.ic.wlgitbridge.io.http.ning.NingHttpClientFacade; +import uk.ac.ic.wlgitbridge.io.http.ning.NingHttpHeaders; +import uk.ac.ic.wlgitbridge.util.FunctionT; -import java.util.Collections; +import java.util.HashMap; import java.util.Optional; +import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class UrlResourceCacheTest { @@ -22,6 +28,13 @@ public class UrlResourceCacheTest { private final UrlResourceCache cache = new UrlResourceCache(new NoopDbStore(), http); + private static HttpResponseHeaders withContentLength(long cl) { + return NingHttpHeaders + .builder() + .addHeader("Content-Length", String.valueOf(cl)) + .build(); + } + @Test public void getThrowsSizeLimitWhenContentLengthTooBig() throws Exception { when(http.get(any(), any())).thenAnswer(invoc -> { @@ -35,7 +48,7 @@ public class UrlResourceCacheTest { cache.get( PROJ, URL, NEW_PATH, - Collections.emptyMap(), Collections.emptyMap(), + new HashMap<>(), new HashMap<>(), Optional.of(2L) ); }