summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Address.java30
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Company.java26
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Geo.java24
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Post.java41
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/User.java50
-rw-r--r--src/main/resources/testData.json70
-rw-r--r--src/test/java/com/mavlushechka/a1qa/TestCase1.java96
7 files changed, 336 insertions, 1 deletions
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Address.java b/src/main/java/com/mavlushechka/a1qa/models/Address.java
new file mode 100644
index 0000000..ca2da32
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Address.java
@@ -0,0 +1,30 @@
+package com.mavlushechka.a1qa.models;
+
+import java.util.Objects;
+
+public class Address {
+
+ public final String street;
+ public final String suite;
+ public final String city;
+ public final String zipcode;
+ public final Geo geo;
+
+
+ public Address(String street, String suite, String city, String zipcode, Geo geo) {
+ this.street = street;
+ this.suite = suite;
+ this.city = city;
+ this.zipcode = zipcode;
+ this.geo = geo;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Address address = (Address) o;
+ return Objects.equals(street, address.street) && Objects.equals(suite, address.suite) && Objects.equals(city, address.city) && Objects.equals(zipcode, address.zipcode) && Objects.equals(geo, address.geo);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Company.java b/src/main/java/com/mavlushechka/a1qa/models/Company.java
new file mode 100644
index 0000000..3a1a448
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Company.java
@@ -0,0 +1,26 @@
+package com.mavlushechka.a1qa.models;
+
+import java.util.Objects;
+
+public class Company {
+
+ public final String name;
+ public final String catchPhrase;
+ public final String bs;
+
+
+ public Company(String name, String catchPhrase, String bs) {
+ this.name = name;
+ this.catchPhrase = catchPhrase;
+ this.bs = bs;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) return true;
+ if (object == null || getClass() != object.getClass()) return false;
+ Company company = (Company) object;
+ return Objects.equals(name, company.name) && Objects.equals(catchPhrase, company.catchPhrase) && Objects.equals(bs, company.bs);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Geo.java b/src/main/java/com/mavlushechka/a1qa/models/Geo.java
new file mode 100644
index 0000000..4a514da
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Geo.java
@@ -0,0 +1,24 @@
+package com.mavlushechka.a1qa.models;
+
+import java.util.Objects;
+
+public class Geo {
+
+ public final String lat;
+ public final String lng;
+
+
+ public Geo(String lat, String lng) {
+ this.lat = lat;
+ this.lng = lng;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) return true;
+ if (object == null || getClass() != object.getClass()) return false;
+ Geo geo = (Geo) object;
+ return Objects.equals(lat, geo.lat) && Objects.equals(lng, geo.lng);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Post.java b/src/main/java/com/mavlushechka/a1qa/models/Post.java
new file mode 100644
index 0000000..c936a71
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Post.java
@@ -0,0 +1,41 @@
+package com.mavlushechka.a1qa.models;
+
+import java.util.Objects;
+
+public class Post implements Comparable<Post> {
+
+ public final String id;
+ public final String title;
+ public final String body;
+ public final String userId;
+
+
+ public Post(String id, String title, String body, String userId) {
+ this.id = id;
+ this.title = title;
+ this.body = body;
+ this.userId = userId;
+ }
+
+ @Override
+ public int compareTo(Post post) {
+ int thisId = Integer.parseInt(id);
+ int otherId = Integer.parseInt(post.id);
+
+ return Integer.compare(thisId, otherId);
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) return true;
+ if (object == null || getClass() != object.getClass()) return false;
+ Post post = (Post) object;
+ return Objects.equals(id, post.id) && Objects.equals(title, post.title) && Objects.equals(body, post.body) && Objects.equals(userId, post.userId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, title, body, userId);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/User.java b/src/main/java/com/mavlushechka/a1qa/models/User.java
new file mode 100644
index 0000000..ac13c82
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/User.java
@@ -0,0 +1,50 @@
+package com.mavlushechka.a1qa.models;
+
+import java.util.Objects;
+
+public class User {
+
+ public final String id;
+ public final String name;
+ public final String username;
+ public final String email;
+ public final Address address;
+ public final String phone;
+ public final String website;
+ public final Company company;
+
+
+ public User(String id, String name, String username, String email, Address address, String phone, String website, Company company) {
+ this.id = id;
+ this.name = name;
+ this.username = username;
+ this.email = email;
+ this.address = address;
+ this.phone = phone;
+ this.website = website;
+ this.company = company;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) return true;
+ if (object == null || getClass() != object.getClass()) return false;
+ User user = (User) object;
+ return Objects.equals(id, user.id) && Objects.equals(name, user.name) && Objects.equals(username, user.username) && Objects.equals(email, user.email) && Objects.equals(address, user.address) && Objects.equals(phone, user.phone) && Objects.equals(website, user.website) && Objects.equals(company, user.company);
+ }
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", username='" + username + '\'' +
+ ", email='" + email + '\'' +
+ ", address=" + address +
+ ", phone='" + phone + '\'' +
+ ", website='" + website + '\'' +
+ ", company=" + company +
+ '}';
+ }
+
+}
diff --git a/src/main/resources/testData.json b/src/main/resources/testData.json
index 0e0dcd2..b495e75 100644
--- a/src/main/resources/testData.json
+++ b/src/main/resources/testData.json
@@ -1,3 +1,71 @@
{
-
+ "testCases": [
+ {
+ "steps": [
+ {
+ "spec": "/posts",
+ "requestMethod": "GET",
+ "responseCode": "200"
+ },
+ {
+ "spec": "/posts/99",
+ "requestMethod": "GET",
+ "responseCode": "200",
+ "post": {
+ "id": "99",
+ "userId": "10",
+ "isTitleEmpty": "false",
+ "isBodyEmpty": "false"
+ }
+ },
+ {
+ "spec": "/posts/150",
+ "requestMethod": "GET",
+ "responseCode": "404",
+ "isResponseBodyEmpty": "true"
+ },
+ {
+ "spec": "/posts",
+ "requestMethod": "POST",
+ "responseCode": "201",
+ "post": {
+ "userId": "1"
+ }
+ },
+ {
+ "spec": "/users",
+ "requestMethod": "GET",
+ "responseCode": "200",
+ "user": {
+ "id": "5",
+ "name": "Chelsey Dietrich",
+ "username": "Kamren",
+ "email": "Lucio_Hettinger@annie.ca",
+ "address": {
+ "street": "Skiles Walks",
+ "suite": "Suite 351",
+ "city": "Roscoeview",
+ "zipcode": "33263",
+ "geo": {
+ "lat": "-31.8129",
+ "lng": "62.5342"
+ }
+ },
+ "phone": "(254)954-1289",
+ "website": "demarco.info",
+ "company": {
+ "name": "Keebler LLC",
+ "catchPhrase": "User-centric fault-tolerant solution",
+ "bs": "revolutionize end-to-end systems"
+ }
+ }
+ },
+ {
+ "spec": "/users/5",
+ "requestMethod": "GET",
+ "responseCode": "200"
+ }
+ ]
+ }
+ ]
} \ No newline at end of file
diff --git a/src/test/java/com/mavlushechka/a1qa/TestCase1.java b/src/test/java/com/mavlushechka/a1qa/TestCase1.java
new file mode 100644
index 0000000..a823980
--- /dev/null
+++ b/src/test/java/com/mavlushechka/a1qa/TestCase1.java
@@ -0,0 +1,96 @@
+package com.mavlushechka.a1qa;
+
+import com.mavlushechka.a1qa.models.Post;
+import com.mavlushechka.a1qa.models.User;
+import com.mavlushechka.a1qa.utils.*;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.stream.IntStream;
+
+public class TestCase1 extends BaseTest {
+
+ @Test
+ public void test1() throws IOException {
+ String postsSpec = JSONParser.parseData("testData", "testCases[0].steps[0].spec");
+ String postsRequestMethod = JSONParser.parseData("testData", "testCases[0].steps[0].requestMethod");
+ int postsResponseCode = URLConnectionManager.getResponseCode(postsSpec, postsRequestMethod);
+ Assert.assertEquals(postsResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[0].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send GET Request to get all posts (/posts).");
+ String postsJson = URLConnectionManager.get(postsSpec);
+ Assert.assertTrue(JSONParser.isJson(postsJson), "Response is not json.");
+ Object[] posts = JSONParser.convertArray(postsJson, Post.class);
+ ArrayList<Post> postsArrayList = new ArrayList<>();
+ for (Object post : posts) {
+ postsArrayList.add((Post) post);
+ }
+ boolean isPostsAscending = IntStream.range(1, postsArrayList.size())
+ .map(index -> postsArrayList.get(index - 1).compareTo(postsArrayList.get(index)))
+ .allMatch(order -> order <= 0);
+ Assert.assertTrue(isPostsAscending, "Posts are not sorted ascending.");
+
+ String post99Spec = JSONParser.parseData("testData", "testCases[0].steps[1].spec");
+ String post99RequestMethod = JSONParser.parseData("testData", "testCases[0].steps[1].requestMethod");
+ int post99ResponseCode = URLConnectionManager.getResponseCode(post99Spec, post99RequestMethod);
+ Assert.assertEquals(post99ResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[1].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send GET request to get post with id=99 (/posts/99).");
+ String post99Json = URLConnectionManager.get(post99Spec);
+ Post post99 = JSONParser.convertToObject(post99Json, Post.class);
+ Assert.assertEquals(post99.id, JSONParser.parseData("testData", "testCases[0].steps[1].post.id"), "Post id is not correct.");
+ Assert.assertEquals(post99.userId, JSONParser.parseData("testData", "testCases[0].steps[1].post.userId"), "Post user id is not correct.");
+ Assert.assertEquals(post99.title.isEmpty(), Boolean.parseBoolean(JSONParser.parseData("testData", "testCases[0].steps[1].post.isTitleEmpty")), "Post title is not correct.");
+ Assert.assertEquals(post99.body.isEmpty(), Boolean.parseBoolean(JSONParser.parseData("testData", "testCases[0].steps[1].post.isBodyEmpty")), "Post body is not correct.");
+
+ String post150Spec = JSONParser.parseData("testData", "testCases[0].steps[2].spec");
+ String post150RequestMethod = JSONParser.parseData("testData", "testCases[0].steps[2].requestMethod");
+ int post150ResponseCode = URLConnectionManager.getResponseCode(post150Spec, post150RequestMethod);
+ Assert.assertEquals(post150ResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[2].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send GET request to get post with id=150 (/posts/150).");
+ String post150Json;
+ try {
+ post150Json = URLConnectionManager.get(post150Spec);
+ } catch (IOException ioException) {
+ post150Json = "{}";
+ }
+ Assert.assertEquals(JSONParser.isBodyEmpty(post150Json), Boolean.parseBoolean(JSONParser.parseData("testData", "testCases[0].steps[2].isResponseBodyEmpty")), "Response body is not correct.");
+
+ String postSpec = JSONParser.parseData("testData", "testCases[0].steps[3].spec");
+ String postRequestMethod = JSONParser.parseData("testData", "testCases[0].steps[3].requestMethod");
+ Post post = new Post(
+ String.valueOf(postsArrayList.size()+1),
+ StringUtils.generateRandomText(Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.lettersLowerBound")), Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.lettersUpperBound")), Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.length"))),
+ StringUtils.generateRandomText(Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.lettersLowerBound")), Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.lettersUpperBound")), Integer.parseInt(JSONParser.parseData("config", "randomTextGenerator.length"))),
+ JSONParser.parseData("testData", "testCases[0].steps[3].post.userId")
+ );
+ int postResponseCode = URLConnectionManager.getResponseCode(postSpec, postRequestMethod);
+ Assert.assertEquals(postResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[3].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send POST request to create post with userId=1 and random body and random title (/posts).");
+ String postJson = URLConnectionManager.post(postSpec, JSONParser.convertToJSON(post));
+ Assert.assertEquals(post, JSONParser.convertToObject(postJson, Post.class), "Post information is not correct.");
+
+ String usersSpec = JSONParser.parseData("testData", "testCases[0].steps[4].spec");
+ String usersRequestMethod = JSONParser.parseData("testData", "testCases[0].steps[4].requestMethod");
+ int usersResponseCode = URLConnectionManager.getResponseCode(usersSpec, usersRequestMethod);
+ Assert.assertEquals(usersResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[4].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send GET request to get users (/users).");
+ Object[] users = JSONParser.convertArray(URLConnectionManager.get(usersSpec), User.class);
+ User user = null;
+ for (Object userObject : users) {
+ if (Integer.parseInt(((User) userObject).id) == Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[4].user.id"))) {
+ user = (User) userObject;
+ }
+ }
+ Assert.assertEquals(JSONParser.convertToObject(JSONParser.parseObject("testData", "testCases[0].steps[4].user"), User.class), user, "User information is not correct.");
+
+ String user5Spec = JSONParser.parseData("testData", "testCases[0].steps[5].spec");
+ String user5RequestMethod = JSONParser.parseData("testData", "testCases[0].steps[5].requestMethod");
+ int user5ResponseCode = URLConnectionManager.getResponseCode(user5Spec, user5RequestMethod);
+ Assert.assertEquals(user5ResponseCode, Integer.parseInt(JSONParser.parseData("testData", "testCases[0].steps[5].responseCode")), "Response code is not correct.");
+ LoggerUtils.step("Send GET request to get user with id=5 (/users/5).");
+ Object user5 = JSONParser.convertToObject(URLConnectionManager.get(user5Spec), User.class);
+ Assert.assertEquals(user, user5, "User information is not correct.");
+ }
+
+}