@Test public void shouldGetHelloFromRouter() throws Exception { protocols.forEach(scheme -> { final HttpClient client = HttpClient.of(clientFactory, scheme + "://example.com:" + port); final AggregatedHttpMessage res = client.get("/route").aggregate().join(); assertThat(res.content().toStringUtf8()).isEqualTo("route"); final AggregatedHttpMessage res2 = client.execute(HttpHeaders.of(HttpMethod.POST, "/route2") .contentType(com.linecorp.armeria.common.MediaType.JSON_UTF_8), HttpData.of("{\"a\":1}".getBytes())).aggregate().join(); assertThatJson(res2.content().toStringUtf8()).isArray() .ofLength(1) .thatContains("route"); }); }
@Test public void observable() { final HttpClient client = HttpClient.of(rule.uri("/observable")); AggregatedHttpMessage msg; msg = client.get("/string").aggregate().join(); assertThat(msg.headers().contentType()).isEqualTo(MediaType.PLAIN_TEXT_UTF_8); assertThat(msg.content().toStringUtf8()).isEqualTo("a"); msg = client.get("/json/1").aggregate().join(); assertThat(msg.headers().contentType()).isEqualTo(MediaType.JSON_UTF_8); assertThatJson(msg.content().toStringUtf8()) .isArray().ofLength(1).thatContains("a"); msg = client.get("/json/3").aggregate().join(); assertThat(msg.headers().contentType()).isEqualTo(MediaType.JSON_UTF_8); assertThatJson(msg.content().toStringUtf8()) .isArray().ofLength(3).thatContains("a").thatContains("b").thatContains("c"); msg = client.get("/error").aggregate().join(); assertThat(msg.headers().status()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); }
@Test public void testInjectionService() { AggregatedHttpMessage res; res = client.get("/injection/param/armeria/1?gender=male").aggregate().join(); assertThat(res.status()).isEqualTo(HttpStatus.OK); assertThatJson(res.content().toStringUtf8()).isArray() .ofLength(3) .thatContains("armeria") .thatContains(1) .thatContains("MALE"); final HttpHeaders headers = HttpHeaders.of(HttpMethod.GET, "/injection/header") .add(HttpHeaderNames.of("x-armeria-text"), "armeria") .add(HttpHeaderNames.of("x-armeria-sequence"), "1") .add(HttpHeaderNames.of("x-armeria-sequence"), "2") .add(HttpHeaderNames.COOKIE, "a=1") .add(HttpHeaderNames.COOKIE, "b=1"); res = client.execute(headers).aggregate().join(); assertThat(res.status()).isEqualTo(HttpStatus.OK); assertThatJson(res.content().toStringUtf8()).isArray() .ofLength(3) .thatContains("armeria") .thatContains(Arrays.asList(1, 2)) .thatContains(Arrays.asList("a", "b")); }
@Test void arrayThatContainsShouldPass() { assertThatJson("{\"test\":[{\"id\":36},{\"id\":37},{\"id\":38}]}").node("test").isArray().thatContains("{\"id\":37}"); }
@Test void arrayOfLengthShouldPass() { assertThatJson("{\"test\":[1,2,3]}").node("test").isArray().ofLength(3); }
@Test void testContains() { assertThatJson("[\"foo\", \"bar\"]").isArray().ofLength(2).thatContains("foo").thatContains("bar"); }
@Test void arrayOfLengthShouldFailOnIncorrectSize() { assertThatThrownBy(() -> assertThatJson("{\"test\":[1,2,3]}").node("test").isArray().ofLength(2)) .hasMessage("Node \"test\" has invalid length, expected: <2> but was: <3>."); }
@Test void isArrayShouldFailIfArrayDoesNotExist() { assertThatThrownBy(() -> assertThatJson("{\"test\":1}").node("test2").isArray()) .hasMessage("Different value found in node \"test2\", expected: <array> but was: <missing>."); }
@Test void testLogging() { assertThatJson("[\"foo\", \"bar\"]") .isArray() .ofLength(2) .thatContains("foo") .thatContains("bar"); }
@Test void shoulEscapeDotWithArray() { assertThatJson("{\"errors\":{\"days[0].date\":[\"validation.failed\"]}}").node("errors.days[0]\\.date").isArray(); }
@Test void isArrayShouldFailIfItIsNotArray() { assertThatThrownBy(() -> assertThatJson("{\"test\":\"1\"}").node("test").isArray()) .hasMessage("Node \"test\" has invalid type, expected: <array> but was: <\"1\">."); }
@Test void arrayThatContainsShouldFailOnMissingNode() { assertThatThrownBy(() -> assertThatJson("{\"test\":[{\"id\":36},{\"id\":37},{\"id\":38}]}").node("test").isArray().thatContains("{\"id\":42}")) .hasMessage("Node \"test\" is '[{\"id\":36}, {\"id\":37}, {\"id\":38}]', expected to contain '{\"id\":42}'."); }
@Test public void shouldMigrateV1ToV2_ByChangingEnablePipelineLockingFalse_To_LockBehaviorNone() throws Exception { ConfigRepoDocumentMother documentMother = new ConfigRepoDocumentMother(); String oldJSON = documentMother.versionOneWithLockingSetTo(false); String transformedJSON = migrator.migrate(oldJSON, 2); assertThatJson(transformedJSON).node("target_version").isEqualTo("\"2\""); assertThatJson(transformedJSON).node("pipelines[0].name").isEqualTo("firstpipe"); assertThatJson(transformedJSON).node("pipelines[0].lock_behavior").isEqualTo("none"); assertThatJson(transformedJSON).node("errors").isArray().ofLength(0); }
@Test public void shouldMigrateV1ToV2_ByChangingEnablePipelineLockingTrue_To_LockBehaviorLockOnFailure() throws Exception { ConfigRepoDocumentMother documentMother = new ConfigRepoDocumentMother(); String oldJSON = documentMother.versionOneWithLockingSetTo(true); String transformedJSON = migrator.migrate(oldJSON, 2); assertThatJson(transformedJSON).node("target_version").isEqualTo("\"2\""); assertThatJson(transformedJSON).node("pipelines[0].name").isEqualTo("firstpipe"); assertThatJson(transformedJSON).node("pipelines[0].lock_behavior").isEqualTo("lockOnFailure"); assertThatJson(transformedJSON).node("errors").isArray().ofLength(0); }