diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/mavlushechka/a1qa/TestCase1.java | 96 |
1 files changed, 96 insertions, 0 deletions
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."); + } + +} |