I am new to using Rest Assured,Java and Api testing so please be gentle with me. When I use rest assured to test an api that uses Bearer authentication the tests fail resulting in:- java.net.ConnectException: Connection refused: connect
I know the issue is likely to do with the authentication but am unsure on how to use "Bearer". I searched around and believe that somehow I need to make an initial request using my username and password. Then get a token back to be used for bearer authentication. Please can someone help me to do this with a very simple example?
My code is
import com.jayway.restassured.RestAssured;
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.hasItem;
@BeforeTest
public void setUp() {
RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
RestAssured.authentication = preemptive().basic("username","password");
}
@Test
public void successfulTest() {
given()
.contentType("application/json; charset=UTF-8");
when().
get("http://mydomain/testpath/Id=2").
then().
statusCode(200);
}
My Cucumber step definition looks like this:
Much depends on how your endpoint was coded.
When I want to learn this kind of thing I go to the Rest-assured examples and search.
Here for instance.
If the error was "Connection refused", it sounds more like a network issue instead of authentication. Basically you haven't reached the point to authenticate your client with the service. You can check to see if your service is running on a different port other than 80. If that's the case, just provide the port before sending out the request:
You can use a more visualized rest client app to try your request to make sure it actually works before putting it into your code. "Postman" could be a good candidate.
In order to get the bearer token you can use this code to authorize your request:
After you get the token, send it in your request this way: