|
|
|
@ -15,23 +15,29 @@
@@ -15,23 +15,29 @@
|
|
|
|
|
*/ |
|
|
|
|
package feign.assertj; |
|
|
|
|
|
|
|
|
|
import com.squareup.okhttp.Headers; |
|
|
|
|
import com.squareup.okhttp.mockwebserver.RecordedRequest; |
|
|
|
|
|
|
|
|
|
import org.assertj.core.api.AbstractAssert; |
|
|
|
|
import org.assertj.core.data.MapEntry; |
|
|
|
|
import org.assertj.core.internal.ByteArrays; |
|
|
|
|
import org.assertj.core.internal.Failures; |
|
|
|
|
import org.assertj.core.internal.Iterables; |
|
|
|
|
import org.assertj.core.internal.Maps; |
|
|
|
|
import org.assertj.core.internal.Objects; |
|
|
|
|
|
|
|
|
|
import java.io.ByteArrayInputStream; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.LinkedHashSet; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Set; |
|
|
|
|
import java.util.zip.GZIPInputStream; |
|
|
|
|
import java.util.zip.InflaterInputStream; |
|
|
|
|
|
|
|
|
|
import feign.Util; |
|
|
|
|
|
|
|
|
|
import static org.assertj.core.data.MapEntry.entry; |
|
|
|
|
import static org.assertj.core.error.ShouldNotContain.shouldNotContain; |
|
|
|
|
|
|
|
|
|
public final class RecordedRequestAssert |
|
|
|
@ -39,7 +45,7 @@ public final class RecordedRequestAssert
@@ -39,7 +45,7 @@ public final class RecordedRequestAssert
|
|
|
|
|
|
|
|
|
|
ByteArrays arrays = ByteArrays.instance(); |
|
|
|
|
Objects objects = Objects.instance(); |
|
|
|
|
Iterables iterables = Iterables.instance(); |
|
|
|
|
Maps maps = Maps.instance(); |
|
|
|
|
Failures failures = Failures.instance(); |
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert(RecordedRequest actual) { |
|
|
|
@ -60,13 +66,13 @@ public final class RecordedRequestAssert
@@ -60,13 +66,13 @@ public final class RecordedRequestAssert
|
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasBody(String utf8Expected) { |
|
|
|
|
isNotNull(); |
|
|
|
|
objects.assertEqual(info, actual.getUtf8Body(), utf8Expected); |
|
|
|
|
objects.assertEqual(info, actual.getBody().readUtf8(), utf8Expected); |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasGzippedBody(byte[] expectedUncompressed) { |
|
|
|
|
isNotNull(); |
|
|
|
|
byte[] compressedBody = actual.getBody(); |
|
|
|
|
byte[] compressedBody = actual.getBody().readByteArray(); |
|
|
|
|
byte[] uncompressedBody; |
|
|
|
|
try { |
|
|
|
|
uncompressedBody = |
|
|
|
@ -80,7 +86,7 @@ public final class RecordedRequestAssert
@@ -80,7 +86,7 @@ public final class RecordedRequestAssert
|
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasDeflatedBody(byte[] expectedUncompressed) { |
|
|
|
|
isNotNull(); |
|
|
|
|
byte[] compressedBody = actual.getBody(); |
|
|
|
|
byte[] compressedBody = actual.getBody().readByteArray(); |
|
|
|
|
byte[] uncompressedBody; |
|
|
|
|
try { |
|
|
|
|
uncompressedBody = |
|
|
|
@ -94,20 +100,38 @@ public final class RecordedRequestAssert
@@ -94,20 +100,38 @@ public final class RecordedRequestAssert
|
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasBody(byte[] expected) { |
|
|
|
|
isNotNull(); |
|
|
|
|
arrays.assertContains(info, actual.getBody(), expected); |
|
|
|
|
arrays.assertContains(info, actual.getBody().readByteArray(), expected); |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasHeaders(String... headers) { |
|
|
|
|
/** |
|
|
|
|
* @deprecated use {@link #hasHeaders(MapEntry...)} |
|
|
|
|
*/ |
|
|
|
|
@Deprecated |
|
|
|
|
public RecordedRequestAssert hasHeaders(String... headerLines) { |
|
|
|
|
isNotNull(); |
|
|
|
|
iterables.assertContainsSubsequence(info, actual.getHeaders(), headers); |
|
|
|
|
Headers.Builder builder = new Headers.Builder(); |
|
|
|
|
for (String next : headerLines) { |
|
|
|
|
builder.add(next); |
|
|
|
|
} |
|
|
|
|
List<MapEntry> expected = new ArrayList<MapEntry>(); |
|
|
|
|
for (Map.Entry<String, List<String>> next : builder.build().toMultimap().entrySet()) { |
|
|
|
|
expected.add(entry(next.getKey(), next.getValue())); |
|
|
|
|
} |
|
|
|
|
hasHeaders(expected.toArray(new MapEntry[expected.size()])); |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasHeaders(MapEntry... expected) { |
|
|
|
|
isNotNull(); |
|
|
|
|
maps.assertContains(info, actual.getHeaders().toMultimap(), expected); |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RecordedRequestAssert hasNoHeaderNamed(final String... names) { |
|
|
|
|
isNotNull(); |
|
|
|
|
Set<String> found = new LinkedHashSet<String>(); |
|
|
|
|
for (String header : actual.getHeaders()) { |
|
|
|
|
for (String header : actual.getHeaders().names()) { |
|
|
|
|
for (String name : names) { |
|
|
|
|
if (header.toLowerCase().startsWith(name.toLowerCase() + ":")) { |
|
|
|
|
found.add(header); |
|
|
|
|