6

I have a spring boot application and a controller will redirect to a page based on the post parameter.
And I am creating the test case which want to assert the redirect page But I failed to get the redirected html from the rest assured response

    @Test
    public void test() throws Exception {

        Response response = given()
            .param("name", "myName")
        .when()
            .redirects().follow(true).redirects().max(100)
            .post("/myPath");      // it will redirect to another page


        // I want to print from <html> to </html> of the redirected page
        System.out.println("returned full html /n" + response.getBody().asString());  
    }

I receive 302 and the location of the redirect page in the response header.

11:38:03.291 [main] DEBUG org.apache.http.headers - << "Location: http://localhost:8080/myRedirectPage[\r][\n]"
.........
11:38:03.291 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Receiving response: HTTP/1.1 302 
11:38:03.291 [main] DEBUG org.apache.http.headers - << HTTP/1.1 302 
brian661
  • 538
  • 3
  • 11
  • 31

2 Answers2

8

I had similar issue, "post" with status code 302 and 307 is not supported for rest assured redirect. Either we have to change to "get" or "post" with 303 status code. More information click here

  • Tried this approach. But does not work. I get response 200 but the output is an html file and not the expected json. In fiddler/postman, the api returns json correctly but not restassured. – MansoorShaikh Mar 15 '22 at 14:53
  • We cannot change the status code to 303. What is the solution? We are stuck. Tried capturing cookies, headers and explicitly calling the redirect url with headers, cookies and params, still not luck. GEtting html instead of json. I would have expected restassured library to do this automatically just like fiddler/postman does. – MansoorShaikh Mar 15 '22 at 15:03
1

Try using Ip address in place of "localhost" in the URL.

satyajeet
  • 19
  • 2