diff --git a/api-tests-module/pom.xml b/api-tests-module/pom.xml
new file mode 100644
index 0000000..a6cc4c2
--- /dev/null
+++ b/api-tests-module/pom.xml
@@ -0,0 +1,40 @@
+
+
+ 4.0.0
+
+
+ school-2016
+ ru.qatools.school
+ 1.0-SNAPSHOT
+
+
+
+
+ ru.qatools.school
+ steps-module
+ ${project.version}
+
+
+ com.squareup.retrofit2
+ retrofit
+ 2.0.2
+
+
+ com.jayway.restassured
+ rest-assured
+ 2.9.0
+ test
+
+
+ com.squareup.retrofit2
+ converter-gson
+ 2.0.2
+
+
+
+ api-tests-module
+ Web API tests
+
+
\ No newline at end of file
diff --git a/api-tests-module/src/test/java/RestassuredTests.java b/api-tests-module/src/test/java/RestassuredTests.java
new file mode 100644
index 0000000..e6ae9a4
--- /dev/null
+++ b/api-tests-module/src/test/java/RestassuredTests.java
@@ -0,0 +1,31 @@
+import org.apache.http.HttpStatus;
+import org.junit.Test;
+
+import static com.jayway.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.is;
+
+public class RestassuredTests {
+
+ public static final String BASE_URI = "http://weather.lanwen.ru";
+ public static final String BASE_PATH = "api";
+ public static final String LIMIT_PARAMETER = "limit";
+ public static final String CITIES_RESOURCE = "cities";
+ public static final int POSITIVE_CITIES_LIMIT = 1;
+ public static final int CITIES_LIST_ONE = 1;
+ public static final int NEGATIVE_CITIES_LIMIT = -1;
+
+ @Test
+ public void shouldGetCitiesListWhenRequestPositiveCitiesLimit() {
+ given().baseUri(BASE_URI)
+ .basePath(BASE_PATH).param(LIMIT_PARAMETER, POSITIVE_CITIES_LIMIT)
+ .get(CITIES_RESOURCE).then().assertThat().statusCode(HttpStatus.SC_OK)
+ .and().body("toSet.size()", is(CITIES_LIST_ONE));
+ }
+
+ @Test
+ public void shouldGetErrorWhenRequestNegativeCitiesLimit() {
+ given().baseUri(BASE_URI)
+ .basePath(BASE_PATH).param(LIMIT_PARAMETER, NEGATIVE_CITIES_LIMIT)
+ .get(CITIES_RESOURCE).then().assertThat().statusCode(HttpStatus.SC_BAD_REQUEST);
+ }
+}
\ No newline at end of file
diff --git a/api-tests-module/src/test/java/RetrofitTests.java b/api-tests-module/src/test/java/RetrofitTests.java
new file mode 100644
index 0000000..5c7556c
--- /dev/null
+++ b/api-tests-module/src/test/java/RetrofitTests.java
@@ -0,0 +1,44 @@
+import org.apache.http.HttpStatus;
+import org.junit.Test;
+import retrofit2.Call;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+import ru.qatools.school.apiData.Cities;
+import ru.qatools.school.apiData.CityJSON;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+public class RetrofitTests {
+
+ private static final String BASE_URL = "http://weather.lanwen.ru";
+ public static final int POSITIVE_CITIES_LIMIT = 1;
+ public static final int CITIES_LIST_ONE = 1;
+ private static final String NEGATIVE_CITIES_LIMIT = "-1";
+
+ private Retrofit citiesRetrofit = new Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+
+ @Test
+ public void shouldGetCitiesListWhenRequestPositiveCitiesLimit() throws IOException {
+ Cities cities = citiesRetrofit.create(Cities.class);
+ Call> request = cities.cities(String.valueOf(POSITIVE_CITIES_LIMIT));
+ Response> response = request.execute();
+ assertThat(response.code(), is(HttpStatus.SC_OK));
+ assertThat(response.body().size(), is(CITIES_LIST_ONE));
+ }
+
+ @Test
+ public void shouldGetErrorWhenRequestNegativeCitiesLimit() throws IOException {
+ Cities cities = citiesRetrofit.create(Cities.class);
+ Call> request = cities.cities(NEGATIVE_CITIES_LIMIT);
+ Response> response = request.execute();
+ assertThat(response.code(), is(HttpStatus.SC_BAD_REQUEST));
+ }
+}
\ No newline at end of file
diff --git a/commons-module/pom.xml b/commons-module/pom.xml
new file mode 100644
index 0000000..b1372c7
--- /dev/null
+++ b/commons-module/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+
+ school-2016
+ ru.qatools.school
+ 1.0-SNAPSHOT
+
+
+ commons-module
+ jar
+
+ Commons Module
+
+
+
+ ru.qatools.school
+ steps-module
+ ${project.version}
+
+
+ com.tngtech.java
+ junit-dataprovider
+ 1.10.4
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+
+
+ true
+
+
+ ru.yandex.qatools.allure
+ allure-maven-plugin
+ 2.0
+
+
+
+
+
diff --git a/commons-module/src/test/java/ru/qatools/school/MyFirstTest.java b/commons-module/src/test/java/ru/qatools/school/MyFirstTest.java
new file mode 100644
index 0000000..7b9da2e
--- /dev/null
+++ b/commons-module/src/test/java/ru/qatools/school/MyFirstTest.java
@@ -0,0 +1,53 @@
+package ru.qatools.school;
+
+import com.tngtech.java.junit.dataprovider.DataProvider;
+import com.tngtech.java.junit.dataprovider.DataProviderRunner;
+import com.tngtech.java.junit.dataprovider.UseDataProvider;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import ru.qatools.school.data.Place;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static ru.qatools.school.steps.UserSteps.user;
+
+
+/**
+ * @author gladnik (Nikolai Gladkov)
+ */
+@RunWith(DataProviderRunner.class)
+public class MyFirstTest {
+
+ @DataProvider
+ public static List