diff --git a/pom.xml b/pom.xml
index de78097..6424f89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,6 +86,12 @@
2.10.1
compile
+
+ io.rest-assured
+ rest-assured
+ 5.5.0
+ test
+
diff --git a/src/test/java/hse/java/restcountries/RestCountriesTest.java b/src/test/java/hse/java/restcountries/RestCountriesTest.java
new file mode 100644
index 0000000..11d94e2
--- /dev/null
+++ b/src/test/java/hse/java/restcountries/RestCountriesTest.java
@@ -0,0 +1,89 @@
+package hse.java.restcountries;
+
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.*;
+
+public class RestCountriesTest {
+ public static final String BASE_URL = "https://restcountries.com/v3.1";
+
+ @BeforeAll
+ public static void setUp() {
+ RestAssured.baseURI = BASE_URL;
+ }
+
+ @Test
+ public void shouldReturn200WhenFetchingAllCountries() {
+ given()
+ .when()
+ .get("/all")
+ .then()
+ .statusCode(200)
+ .body("", hasSize(greaterThan(0)));
+ }
+
+ @Test
+ public void hasCountryWithCapitalMoscow() {
+ given()
+ .when()
+ .get("/name/russia")
+ .then()
+ .statusCode(200)
+ .body("[0].capital", hasItem("Moscow"));
+
+ }
+
+ @Test
+ public void hasCountryWithNameGermany() {
+ given()
+ .when()
+ .get("/alpha/de")
+ .then()
+ .statusCode(200)
+ .body("[0].name.common", equalTo("Germany"));
+
+ }
+
+ @Test
+ public void notExistingCountry() {
+ given()
+ .when()
+ .get("/name/nonexistentcountryxyz")
+ .then()
+ .statusCode(404);
+
+ }
+
+ @Test
+ public void everyCountryShouldHavePositivePopulation() {
+ given()
+ .when()
+ .get("/all")
+ .then()
+ .body("population", everyItem(greaterThan(0)));
+ }
+
+ @Test
+ public void officialLanguageInFranceFrench() {
+ given()
+ .when()
+ .get("/name/france")
+ .then()
+ .statusCode(200)
+ .body("[0].languages.values()", hasItem("French"));
+ }
+
+ @Test
+ public void CanadaShouldHaveOneNeighbour() {
+ given()
+ .when()
+ .get("/name/canada")
+ .then()
+ .statusCode(200)
+ .body("[0].borders", hasSize(1));
+ }
+}