Search in sources :

Example 61 with ForestRequest

use of com.dtflys.forest.http.ForestRequest in project forest by dromara.

the class TestBaseRedirectClient method testBaseNotAutoRedirect_302.

@Test
public void testBaseNotAutoRedirect_302() {
    server.enqueue(new MockResponse().addHeader("Location", "http://localhost:" + server.getPort() + "/b").setResponseCode(302));
    server.enqueue(new MockResponse().setBody(EXPECTED));
    AtomicReference<ForestRequest> atomicReq = new AtomicReference<>(null);
    ForestResponse<String> response = baseRedirectClient.testNotAutoRedirect(((redirectReq, prevReq, prevRes) -> {
        atomicReq.set(redirectReq);
    }));
    assertThat(response).isNotNull();
    assertThat(response.getStatusCode()).isEqualTo(302);
    assertThat(response.isRedirection()).isTrue();
    assertThat(response.getRedirectionLocation()).isEqualTo("http://localhost:" + server.getPort() + "/b");
    String result = response.redirectionRequest().execute(String.class);
    assertThat(result).isNotNull().isEqualTo(EXPECTED);
    mockRequest(server).assertPathEquals("/");
    mockRequest(server).assertPathEquals("/b").assertBodyEquals("body=" + RedirectInterceptor.BODY);
}
Also used : BeforeClass(org.junit.BeforeClass) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) AtomicReference(java.util.concurrent.atomic.AtomicReference) ForestResponse(com.dtflys.forest.http.ForestResponse) TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) ForestConfiguration(com.dtflys.forest.config.ForestConfiguration) Rule(org.junit.Rule) MockWebServer(okhttp3.mockwebserver.MockWebServer) MockResponse(okhttp3.mockwebserver.MockResponse) MockServerRequest.mockRequest(com.dtflys.forest.mock.MockServerRequest.mockRequest) AssertionsForClassTypes.assertThat(org.assertj.core.api.AssertionsForClassTypes.assertThat) HttpBackend(com.dtflys.forest.backend.HttpBackend) BaseClientTest(com.dtflys.test.http.BaseClientTest) MockResponse(okhttp3.mockwebserver.MockResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) BaseClientTest(com.dtflys.test.http.BaseClientTest)

Example 62 with ForestRequest

use of com.dtflys.forest.http.ForestRequest in project forest by dromara.

the class TestBaseRedirectClient method testAsyncAutoRedirect.

/**
 * ====================================================== 测试异步自动重定向 ======================================================
 */
@Test
public void testAsyncAutoRedirect() throws InterruptedException {
    server.enqueue(new MockResponse().addHeader("Location", "http://localhost:" + server.getPort() + "/b").setResponseCode(301));
    server.enqueue(new MockResponse().setBody(EXPECTED));
    CountDownLatch latch = new CountDownLatch(1);
    AtomicReference<ForestRequest> atomicReq = new AtomicReference<>(null);
    AtomicReference<ForestResponse> atomicRes = new AtomicReference<>(null);
    redirectClient.testAutoRedirect_async(((redirectReq, prevReq, prevRes) -> {
        atomicReq.set(redirectReq);
    }), ((data, req, res) -> {
        atomicRes.set(res);
        latch.countDown();
    }));
    latch.await(10, TimeUnit.SECONDS);
    assertThat(atomicReq.get()).isNotNull();
    assertThat(atomicReq.get().path()).isEqualTo("/b");
    assertThat(atomicRes.get()).isNotNull();
    assertThat(atomicRes.get().getStatusCode()).isEqualTo(200);
    String result = atomicRes.get().getContent();
    assertThat(result).isNotNull().isEqualTo(EXPECTED);
}
Also used : BeforeClass(org.junit.BeforeClass) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) AtomicReference(java.util.concurrent.atomic.AtomicReference) ForestResponse(com.dtflys.forest.http.ForestResponse) TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) ForestConfiguration(com.dtflys.forest.config.ForestConfiguration) Rule(org.junit.Rule) MockWebServer(okhttp3.mockwebserver.MockWebServer) MockResponse(okhttp3.mockwebserver.MockResponse) MockServerRequest.mockRequest(com.dtflys.forest.mock.MockServerRequest.mockRequest) AssertionsForClassTypes.assertThat(org.assertj.core.api.AssertionsForClassTypes.assertThat) HttpBackend(com.dtflys.forest.backend.HttpBackend) BaseClientTest(com.dtflys.test.http.BaseClientTest) MockResponse(okhttp3.mockwebserver.MockResponse) ForestResponse(com.dtflys.forest.http.ForestResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) ForestRequest(com.dtflys.forest.http.ForestRequest) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test) BaseClientTest(com.dtflys.test.http.BaseClientTest)

Example 63 with ForestRequest

use of com.dtflys.forest.http.ForestRequest in project forest by dromara.

the class TestEncoderClient method testEncoder2.

@Test
public void testEncoder2() {
    EncoderClient.Entry entry = new EncoderClient.Entry("AAA", "BBB");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    ForestRequest request = encoderClient.testEncoder2("json", entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.JSON);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("{\"name\":\"AAA\",\"value\":\"BBB\"}");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    request = encoderClient.testEncoder2("xml", entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.XML);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<entry>\n" + "    <name>AAA</name>\n" + "    <value>BBB</value>\n" + "</entry>\n");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    request = encoderClient.testEncoder2("form", entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.FORM);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("name=AAA&value=BBB");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    request = encoderClient.testEncoder2("text", entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.TEXT);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("Entry{name='AAA', value='BBB'}");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    request = encoderClient.testEncoder2("binary", entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.BINARY);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("Entry{name='AAA', value='BBB'}".getBytes(StandardCharsets.UTF_8));
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) BaseClientTest(com.dtflys.test.http.BaseClientTest)

Example 64 with ForestRequest

use of com.dtflys.forest.http.ForestRequest in project forest by dromara.

the class TestEncoderClient method testEncoder3.

@Test
public void testEncoder3() {
    EncoderClient.Entry entry = new EncoderClient.Entry("AAA", "BBB");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    ForestRequest request = encoderClient.testEncoder3(entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.JSON);
    assertThat(request.getEncoder()).isNotNull().isInstanceOf(MyEncoder.class);
    request.execute();
    mockRequest(server).assertHeaderEquals("Content-Type", ContentType.APPLICATION_X_WWW_FORM_URLENCODED).assertBodyEquals("Data: " + entry);
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) BaseClientTest(com.dtflys.test.http.BaseClientTest)

Example 65 with ForestRequest

use of com.dtflys.forest.http.ForestRequest in project forest by dromara.

the class TestEncoderClient method testFastjson.

@Test
public void testFastjson() {
    EncoderClient.Entry entry = new EncoderClient.Entry("AAA", "BBB");
    server.enqueue(new MockResponse().setBody(EXPECTED));
    ForestRequest request = encoderClient.testFastjson(entry);
    assertThat(request).isNotNull();
    assertThat(request.bodyType()).isNotNull().isEqualTo(ForestDataType.JSON);
    assertThat(request.getEncoder()).isNotNull().isInstanceOf(ForestFastjsonConverter.class);
    request.execute();
    mockRequest(server).assertBodyEquals("{\"name\":\"AAA\",\"value\":\"BBB\"}");
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) ForestRequest(com.dtflys.forest.http.ForestRequest) Test(org.junit.Test) BaseClientTest(com.dtflys.test.http.BaseClientTest)

Aggregations

ForestRequest (com.dtflys.forest.http.ForestRequest)85 Test (org.junit.Test)75 MockResponse (okhttp3.mockwebserver.MockResponse)59 BaseClientTest (com.dtflys.test.http.BaseClientTest)48 HttpBackend (com.dtflys.forest.backend.HttpBackend)42 MockWebServer (okhttp3.mockwebserver.MockWebServer)42 Rule (org.junit.Rule)42 ForestConfiguration (com.dtflys.forest.config.ForestConfiguration)39 ForestResponse (com.dtflys.forest.http.ForestResponse)37 CountDownLatch (java.util.concurrent.CountDownLatch)36 BeforeClass (org.junit.BeforeClass)36 MockServerRequest.mockRequest (com.dtflys.forest.mock.MockServerRequest.mockRequest)35 AssertionsForClassTypes.assertThat (org.assertj.core.api.AssertionsForClassTypes.assertThat)35 TimeUnit (java.util.concurrent.TimeUnit)29 AtomicReference (java.util.concurrent.atomic.AtomicReference)29 ContentType (com.dtflys.forest.backend.ContentType)15 File (java.io.File)14 URL (java.net.URL)14 HashMap (java.util.HashMap)14 LinkedHashMap (java.util.LinkedHashMap)14