pekko/akka-http-tests/src/test/java/akka/http/javadsl/server/CodingDirectivesTest.java

94 lines
2.9 KiB
Java
Raw Normal View History

/*
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.http.javadsl.server;
import static akka.http.javadsl.server.Directives.*;
import akka.actor.ActorSystem;
import akka.http.javadsl.model.HttpRequest;
import akka.http.javadsl.model.headers.AcceptEncoding;
import akka.http.javadsl.model.headers.ContentEncoding;
import akka.http.javadsl.model.headers.HttpEncodings;
import akka.stream.ActorFlowMaterializer;
import akka.util.ByteString;
import org.junit.*;
import scala.concurrent.Await;
import scala.concurrent.duration.Duration;
import akka.http.javadsl.testkit.*;
import java.util.concurrent.TimeUnit;
public class CodingDirectivesTest extends JUnitRouteTest {
static ActorSystem system;
@BeforeClass
public static void setup() {
system = ActorSystem.create("FlowGraphDocTest");
}
@AfterClass
public static void tearDown() {
system.shutdown();
system.awaitTermination();
system = null;
}
final ActorFlowMaterializer mat = ActorFlowMaterializer.create(system);
@Test
public void testAutomaticEncodingWhenNoEncodingRequested() throws Exception {
TestRoute route =
testRoute(
encodeResponse(
complete("TestString")
)
);
TestResponse response = route.run(HttpRequest.create());
response
.assertStatusCode(200);
Assert.assertEquals("TestString", response.entityBytes().utf8String());
}
@Test
public void testAutomaticEncodingWhenDeflateRequested() throws Exception {
TestRoute route =
testRoute(
encodeResponse(
complete("tester")
)
);
HttpRequest request = HttpRequest.create().addHeader(AcceptEncoding.create(HttpEncodings.DEFLATE));
TestResponse response = route.run(request);
response
.assertStatusCode(200)
.assertHeaderExists(ContentEncoding.create(HttpEncodings.DEFLATE));
ByteString decompressed =
Await.result(Coder.Deflate.decode(response.entityBytes(), mat), Duration.apply(3, TimeUnit.SECONDS));
Assert.assertEquals("tester", decompressed.utf8String());
}
@Test
public void testEncodingWhenDeflateRequestedAndGzipSupported() {
TestRoute route =
testRoute(
encodeResponse(Coder.Gzip).route(
complete("tester")
)
);
HttpRequest request = HttpRequest.create().addHeader(AcceptEncoding.create(HttpEncodings.DEFLATE));
route.run(request)
.assertStatusCode(406)
.assertEntity("Resource representation is only available with these Content-Encodings:\ngzip");
}
@Test
public void testAutomaticDecoding() {}
@Test
public void testGzipDecoding() {}
}