summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka
diff options
context:
space:
mode:
authorMavlushechka <mavlushechka@gmail.com>2022-10-07 23:46:46 +0500
committerMavlushechka <mavlushechka@gmail.com>2022-10-07 23:46:46 +0500
commitf8501d374dbd39a66078bad11384ea241848acc6 (patch)
tree41deb41375982e3db1d4071117dcf22377145ab8 /src/main/java/com/mavlushechka
parent4495c73482a9fb3bdb87a75816974602e833278e (diff)
Solve 1st test case
Diffstat (limited to 'src/main/java/com/mavlushechka')
-rw-r--r--src/main/java/com/mavlushechka/a1qa/constants/Attachment.java (renamed from src/main/java/com/mavlushechka/a1qa/constants/Browser.java)4
-rw-r--r--src/main/java/com/mavlushechka/a1qa/constants/Endpoint.java14
-rw-r--r--src/main/java/com/mavlushechka/a1qa/constants/Method.java14
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java25
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java31
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java20
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/HttpURLConnectionFactory.java26
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java66
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java21
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java33
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java17
-rw-r--r--src/main/java/com/mavlushechka/a1qa/elements/BaseElement.java86
-rw-r--r--src/main/java/com/mavlushechka/a1qa/elements/Button.java11
-rw-r--r--src/main/java/com/mavlushechka/a1qa/elements/Field.java36
-rw-r--r--src/main/java/com/mavlushechka/a1qa/elements/Label.java11
-rw-r--r--src/main/java/com/mavlushechka/a1qa/elements/Slider.java29
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Address.java30
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Attachment.java10
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Comment.java4
-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/Liker.java22
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/Post.java39
-rw-r--r--src/main/java/com/mavlushechka/a1qa/models/User.java66
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/BaseForm.java11
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/CommentForm.java28
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/CommentsForm.java32
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/FeedPage.java19
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/HomePage.java25
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/PostForm.java67
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/ProfilePage.java41
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/ProfileWallForm.java43
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/SideBarForm.java20
-rw-r--r--src/main/java/com/mavlushechka/a1qa/pages/SignInPage.java30
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/HttpUrlConnectionFactory.java25
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/JSONPlaceholderAPIManager.java60
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/JsonParser.java (renamed from src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java)14
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/LoggerUtils.java10
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/Posts.java16
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/StringUtils.java2
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/UrlConnectionManager.java (renamed from src/main/java/com/mavlushechka/a1qa/utils/URLConnectionManager.java)15
-rw-r--r--src/main/java/com/mavlushechka/a1qa/utils/VkApiUtils.java62
42 files changed, 503 insertions, 682 deletions
diff --git a/src/main/java/com/mavlushechka/a1qa/constants/Browser.java b/src/main/java/com/mavlushechka/a1qa/constants/Attachment.java
index 3a9a99c..a011430 100644
--- a/src/main/java/com/mavlushechka/a1qa/constants/Browser.java
+++ b/src/main/java/com/mavlushechka/a1qa/constants/Attachment.java
@@ -1,7 +1,7 @@
package com.mavlushechka.a1qa.constants;
-public enum Browser {
+public enum Attachment {
- CHROME, FIREFOX
+ PHOTO
}
diff --git a/src/main/java/com/mavlushechka/a1qa/constants/Endpoint.java b/src/main/java/com/mavlushechka/a1qa/constants/Endpoint.java
deleted file mode 100644
index a43547f..0000000
--- a/src/main/java/com/mavlushechka/a1qa/constants/Endpoint.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mavlushechka.a1qa.constants;
-
-public enum Endpoint {
-
- POSTS("/posts"), USERS("/users");
-
- public final String spec;
-
-
- Endpoint(String spec) {
- this.spec = spec;
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/constants/Method.java b/src/main/java/com/mavlushechka/a1qa/constants/Method.java
new file mode 100644
index 0000000..221f98b
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/constants/Method.java
@@ -0,0 +1,14 @@
+package com.mavlushechka.a1qa.constants;
+
+public enum Method {
+
+ WALL_GET_LIKES("wall.getLikes"), WALL_POST("wall.post"), WALL_EDIT("wall.edit"), WALL_DELETE("wall.delete"),
+ WALL_CREATE_COMMENT("wall.createComment"), USERS_GET("users.get");
+
+ public final String name;
+
+ Method(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java
deleted file mode 100644
index bd7b85b..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import org.openqa.selenium.Point;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.interactions.Actions;
-
-public class ActionUtils {
-
- private ActionUtils() {
- }
-
- public static void dragAndDrop(WebElement element, Point currentPoint, Point expectedPoint) {
- new Actions(WebDriverSingleton.getInstance())
- .moveToElement(element, currentPoint.x, currentPoint.y)
- .click()
- .dragAndDropBy(element, expectedPoint.x, expectedPoint.y)
- .build()
- .perform();
- }
-
- public static void scrollTo(WebElement webElement) {
- new Actions(WebDriverSingleton.getInstance()).moveToElement(webElement);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java
deleted file mode 100644
index 8095365..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import org.openqa.selenium.Alert;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-public class AlertUtils {
-
- private AlertUtils() {
- }
-
- public static boolean isAlertPresent() {
- return ExpectedConditions.alertIsPresent().apply(WebDriverSingleton.getInstance()) != null;
- }
-
- public static String getAlertText() {
- return findAlert().getText();
- }
-
- public static void sendKeysToAlert(String keysToSend) {
- findAlert().sendKeys(keysToSend);
- }
-
- public static void acceptAlert() {
- findAlert().accept();
- }
-
- private static Alert findAlert() {
- return WebDriverWaitFactory.createWebDriverWait().until(ExpectedConditions.alertIsPresent());
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java
deleted file mode 100644
index d270cae..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-public class FrameUtils {
-
- private FrameUtils() {
- }
-
- public static void switchToFrame(String nameOrId) {
- WebDriverSingleton.getInstance().switchTo().frame(nameOrId);
- }
-
- public static void switchToFrame(int index) {
- WebDriverSingleton.getInstance().switchTo().frame(index);
- }
-
- public static void switchToDefaultContent() {
- WebDriverSingleton.getInstance().switchTo().defaultContent();
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/HttpURLConnectionFactory.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/HttpURLConnectionFactory.java
deleted file mode 100644
index 13145c4..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/HttpURLConnectionFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import com.mavlushechka.a1qa.constants.RequestMethod;
-import com.mavlushechka.a1qa.utils.JSONParser;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-public class HttpURLConnectionFactory {
-
- private HttpURLConnectionFactory() {
- }
-
- public static HttpURLConnection createHttpURLConnection(String spec, RequestMethod requestMethod, boolean doOutput) throws IOException {
- HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(JSONParser.parseData("config", "browser.url") + spec).openConnection();
-
- httpURLConnection.setRequestMethod(requestMethod.name());
- httpURLConnection.setConnectTimeout(Integer.parseInt(JSONParser.parseData("config", "httpURLConnection.connectTimeout")));
- httpURLConnection.setReadTimeout(Integer.parseInt(JSONParser.parseData("config", "httpURLConnection.readTimeout")));
- httpURLConnection.setDoOutput(doOutput);
- httpURLConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
- return httpURLConnection;
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java
deleted file mode 100644
index 7fde704..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import com.mavlushechka.a1qa.constants.Browser;
-import com.mavlushechka.a1qa.utils.JSONParser;
-import com.mavlushechka.a1qa.utils.LoggerUtils;
-import com.mavlushechka.a1qa.utils.StringUtils;
-import io.github.bonigarcia.wdm.WebDriverManager;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.chrome.ChromeOptions;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxOptions;
-
-public class WebDriverFactory {
-
- private WebDriverFactory() {
- }
-
- protected static WebDriver createWebDriver() {
- switch (Browser.valueOf(StringUtils.convertToConstantCase(JSONParser.parseData("config", "browser.name")))) {
- case CHROME -> {
- LoggerUtils.info("Creating ChromeDriver.");
- return createChromeDriver();
- }
- case FIREFOX -> {
- LoggerUtils.info("Creating FirefoxDriver.");
- return createFirefoxDriver();
- }
- default -> {
- LoggerUtils.error("Incorrect browser name.");
- throw new IllegalStateException("Incorrect browser name.");
- }
- }
- }
-
- private static ChromeDriver createChromeDriver() {
- ChromeOptions chromeOptions = new ChromeOptions();
-
- WebDriverManager.chromedriver().setup();
- if (Boolean.parseBoolean(JSONParser.parseData("config", "browser.isIncognito"))) {
- LoggerUtils.info("Turning on Chrome incognito mode.");
- chromeOptions.addArguments("--incognito");
- }
- if (Boolean.parseBoolean(JSONParser.parseData("config", "browser.isKiosk"))) {
- LoggerUtils.info("Turning on Chrome kiosk mode.");
- chromeOptions.addArguments("--kiosk");
- }
- return new ChromeDriver(chromeOptions);
- }
-
- private static FirefoxDriver createFirefoxDriver() {
- FirefoxOptions firefoxOptions = new FirefoxOptions();
-
- WebDriverManager.firefoxdriver().setup();
- if (Boolean.parseBoolean(JSONParser.parseData("config", "browser.isIncognito"))) {
- LoggerUtils.info("Turning on Firefox incognito mode.");
- firefoxOptions.addArguments("--private");
- }
- if (Boolean.parseBoolean(JSONParser.parseData("config", "browser.isKiosk"))) {
- LoggerUtils.info("Turning on Firefox kiosk mode.");
- firefoxOptions.addArguments("--kiosk");
- }
- return new FirefoxDriver(firefoxOptions);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java
deleted file mode 100644
index e363ae7..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import org.openqa.selenium.WebDriver;
-
-public class WebDriverSingleton {
-
- private static WebDriver instance;
-
-
- private WebDriverSingleton() {
- }
-
- public static WebDriver getInstance() {
- if (instance == null) {
- instance = WebDriverFactory.createWebDriver();
- }
-
- return instance;
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java
deleted file mode 100644
index a95717a..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import org.openqa.selenium.WebDriver;
-
-public class WebDriverUtils {
-
- private final static WebDriver webDriver = WebDriverSingleton.getInstance();
-
-
- private WebDriverUtils() {
- }
-
- public static void goToAddress(String address) {
- webDriver.get(address);
- }
-
- public static int getWindowHandlesCount() {
- return webDriver.getWindowHandles().size();
- }
-
- public static void switchToWindowHandle(int index) {
- webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[index].toString());
- }
-
- public static void close() {
- webDriver.close();
- }
-
- public static void quit() {
- webDriver.quit();
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java
deleted file mode 100644
index 9a9ac91..0000000
--- a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.mavlushechka.a1qa.driverUtils;
-
-import com.mavlushechka.a1qa.utils.JSONParser;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import java.time.Duration;
-
-public class WebDriverWaitFactory {
-
- private WebDriverWaitFactory() {
- }
-
- public static WebDriverWait createWebDriverWait() {
- return new WebDriverWait(WebDriverSingleton.getInstance(), Duration.ofSeconds(Integer.parseInt(JSONParser.parseData("config", "webDriverWait.durationOfSeconds"))));
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/elements/BaseElement.java b/src/main/java/com/mavlushechka/a1qa/elements/BaseElement.java
deleted file mode 100644
index 6f40af6..0000000
--- a/src/main/java/com/mavlushechka/a1qa/elements/BaseElement.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.mavlushechka.a1qa.elements;
-
-import com.mavlushechka.a1qa.driverUtils.ActionUtils;
-import com.mavlushechka.a1qa.driverUtils.WebDriverSingleton;
-import com.mavlushechka.a1qa.driverUtils.WebDriverWaitFactory;
-import com.mavlushechka.a1qa.utils.LoggerUtils;
-import org.openqa.selenium.By;
-import org.openqa.selenium.Dimension;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-public abstract class BaseElement {
-
- private final By locator;
- private final String name;
-
-
- public BaseElement(By locator, String name) {
- this.locator = locator;
- this.name = name;
- }
-
- public void click() {
- WebElement webElement = find();
-
- scrollTo();
- LoggerUtils.info("Clicking on the \"" + name + "\" element.");
- webElement.click();
- }
-
- public String getText() {
- WebElement webElement = find();
-
- LoggerUtils.info("Getting text of the \"" + name + "\" element.");
- return webElement.getText();
- }
-
- public boolean isEnabled() {
- WebElement webElement = find();
-
- LoggerUtils.info("Getting state of the \"" + name + "\" element.");
- return webElement.isEnabled();
- }
-
- public boolean isVisible() {
- LoggerUtils.info("Getting visibility of the \"" + name + "\" element.");
- return WebDriverWaitFactory.createWebDriverWait().until(ExpectedConditions.visibilityOfElementLocated(locator)).isDisplayed();
- }
-
- public boolean isInvisible() {
- LoggerUtils.info("Getting invisibility of the \"" + name + "\" element.");
- return WebDriverWaitFactory.createWebDriverWait().until(ExpectedConditions.invisibilityOfElementLocated(locator));
- }
-
- public String getName() {
- return name;
- }
-
- public Dimension getDimension() {
- WebElement webElement = find();
-
- LoggerUtils.info("Getting dimension of the \"" + name + "\" element.");
- return webElement.getSize();
- }
-
- public String getAttributeValue(String attribute) {
- WebElement webElement = find();
-
- LoggerUtils.info("Getting \"" + attribute + "\" attribute of the \"" + name + "\" element.");
- return webElement.getAttribute(attribute);
- }
-
- protected WebElement find() {
- isVisible();
- LoggerUtils.info("Finding the \"" + name + "\" element.");
- return WebDriverSingleton.getInstance().findElement(locator);
- }
-
- protected void scrollTo() {
- WebElement webElement = find();
-
- LoggerUtils.info("Scrolling to the \"" + name + "\" element.");
- ActionUtils.scrollTo(webElement);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/elements/Button.java b/src/main/java/com/mavlushechka/a1qa/elements/Button.java
deleted file mode 100644
index d68b5f6..0000000
--- a/src/main/java/com/mavlushechka/a1qa/elements/Button.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.mavlushechka.a1qa.elements;
-
-import org.openqa.selenium.By;
-
-public class Button extends BaseElement {
-
- public Button(By locator, String name) {
- super(locator, name);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/elements/Field.java b/src/main/java/com/mavlushechka/a1qa/elements/Field.java
deleted file mode 100644
index 99cd41d..0000000
--- a/src/main/java/com/mavlushechka/a1qa/elements/Field.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.mavlushechka.a1qa.elements;
-
-import com.mavlushechka.a1qa.utils.LoggerUtils;
-import com.mavlushechka.a1qa.utils.StringUtils;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebElement;
-
-public class Field extends BaseElement {
-
- public Field(By locator, String name) {
- super(locator, name);
- }
-
- public void sendKeys(String keys) {
- sendKeys(keys, false);
- }
-
- public void sendKeys(String keys, boolean isSecret) {
- WebElement field = find();
-
- LoggerUtils.info("Entering \"" + (isSecret ? StringUtils.replaceByStars(keys) : keys) + "\" keys to the \"" + getName() + "\" field.");
- field.sendKeys(keys);
- }
-
- public void clear() {
- WebElement field = find();
-
- LoggerUtils.info("Clearing the \"" + getName() + "\" field.");
- field.clear();
- }
-
- public String getValue() {
- return find().getAttribute("value");
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/elements/Label.java b/src/main/java/com/mavlushechka/a1qa/elements/Label.java
deleted file mode 100644
index a822f63..0000000
--- a/src/main/java/com/mavlushechka/a1qa/elements/Label.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.mavlushechka.a1qa.elements;
-
-import org.openqa.selenium.By;
-
-public class Label extends BaseElement {
-
- public Label(By locator, String name) {
- super(locator, name);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/elements/Slider.java b/src/main/java/com/mavlushechka/a1qa/elements/Slider.java
deleted file mode 100644
index 45c1e69..0000000
--- a/src/main/java/com/mavlushechka/a1qa/elements/Slider.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mavlushechka.a1qa.elements;
-
-import com.mavlushechka.a1qa.driverUtils.ActionUtils;
-import com.mavlushechka.a1qa.utils.DoubleUtils;
-import com.mavlushechka.a1qa.utils.LoggerUtils;
-import org.openqa.selenium.By;
-import org.openqa.selenium.Point;
-import org.openqa.selenium.WebElement;
-
-public class Slider extends BaseElement {
-
- public Slider(By locator, String name) {
- super(locator, name);
- }
-
- public void slideTo(int percentage) {
- WebElement slider = find();
- Point currentPoint = new Point((int) Math.round(DoubleUtils.getPercentageOf(slider.getSize().getWidth(), getValue())-getDimension().width/2.0), 0);
- Point expectedPoint = new Point((int) Math.round(DoubleUtils.getPercentageOf(slider.getSize().getWidth(), percentage)-getDimension().width/2.0), 0);
-
- LoggerUtils.info("Sliding on the \"" + getName() + "\" element.");
- ActionUtils.dragAndDrop(slider, currentPoint, expectedPoint);
- }
-
- public int getValue() {
- return Integer.parseInt(find().getAttribute("value"));
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Address.java b/src/main/java/com/mavlushechka/a1qa/models/Address.java
deleted file mode 100644
index ca2da32..0000000
--- a/src/main/java/com/mavlushechka/a1qa/models/Address.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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/Attachment.java b/src/main/java/com/mavlushechka/a1qa/models/Attachment.java
new file mode 100644
index 0000000..a05ee71
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Attachment.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.a1qa.models;
+
+public record Attachment(com.mavlushechka.a1qa.constants.Attachment attachment, int ownerId, int mediaId) {
+
+ @Override
+ public String toString() {
+ return attachment.name().toLowerCase() + ownerId + "_" + mediaId;
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Comment.java b/src/main/java/com/mavlushechka/a1qa/models/Comment.java
new file mode 100644
index 0000000..b8de1e0
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Comment.java
@@ -0,0 +1,4 @@
+package com.mavlushechka.a1qa.models;
+
+public record Comment(int id, User user, Post post, String message) {
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Company.java b/src/main/java/com/mavlushechka/a1qa/models/Company.java
deleted file mode 100644
index 3a1a448..0000000
--- a/src/main/java/com/mavlushechka/a1qa/models/Company.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 4a514da..0000000
--- a/src/main/java/com/mavlushechka/a1qa/models/Geo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-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/Liker.java b/src/main/java/com/mavlushechka/a1qa/models/Liker.java
new file mode 100644
index 0000000..045852f
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/models/Liker.java
@@ -0,0 +1,22 @@
+package com.mavlushechka.a1qa.models;
+
+public class Liker {
+
+ private final int uid;
+ private final int copied;
+
+
+ public Liker(int uid, int copied) {
+ this.uid = uid;
+ this.copied = copied;
+ }
+
+ public int getUid() {
+ return uid;
+ }
+
+ public int getCopied() {
+ return copied;
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Post.java b/src/main/java/com/mavlushechka/a1qa/models/Post.java
index c936a71..9cf8474 100644
--- a/src/main/java/com/mavlushechka/a1qa/models/Post.java
+++ b/src/main/java/com/mavlushechka/a1qa/models/Post.java
@@ -1,41 +1,4 @@
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);
- }
-
+public record Post(int id, User owner, String message, Attachment attachment) {
}
diff --git a/src/main/java/com/mavlushechka/a1qa/models/User.java b/src/main/java/com/mavlushechka/a1qa/models/User.java
index ac13c82..c9bb3ff 100644
--- a/src/main/java/com/mavlushechka/a1qa/models/User.java
+++ b/src/main/java/com/mavlushechka/a1qa/models/User.java
@@ -1,50 +1,46 @@
package com.mavlushechka.a1qa.models;
-import java.util.Objects;
+import com.google.gson.annotations.SerializedName;
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;
+ private final int id;
+ @SerializedName("first_name")
+ private final String firstName;
+ @SerializedName("last_name")
+ private final String lastName;
+ @SerializedName("can_access_closed")
+ private final boolean canAccessClosed;
+ @SerializedName("is_closed")
+ private final boolean isClosed;
- public User(String id, String name, String username, String email, Address address, String phone, String website, Company company) {
+ public User(int id, String firstName, String lastName, boolean canAccessClosed, boolean isClosed) {
this.id = id;
- this.name = name;
- this.username = username;
- this.email = email;
- this.address = address;
- this.phone = phone;
- this.website = website;
- this.company = company;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.canAccessClosed = canAccessClosed;
+ this.isClosed = isClosed;
}
- @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);
+ public int getId() {
+ return id;
}
- @Override
- public String toString() {
- return "User{" +
- "id='" + id + '\'' +
- ", name='" + name + '\'' +
- ", username='" + username + '\'' +
- ", email='" + email + '\'' +
- ", address=" + address +
- ", phone='" + phone + '\'' +
- ", website='" + website + '\'' +
- ", company=" + company +
- '}';
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public boolean isCanAccessClosed() {
+ return canAccessClosed;
+ }
+
+ public boolean isClosed() {
+ return isClosed;
}
}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/BaseForm.java b/src/main/java/com/mavlushechka/a1qa/pages/BaseForm.java
index 3ac855a..8ed6026 100644
--- a/src/main/java/com/mavlushechka/a1qa/pages/BaseForm.java
+++ b/src/main/java/com/mavlushechka/a1qa/pages/BaseForm.java
@@ -1,20 +1,21 @@
package com.mavlushechka.a1qa.pages;
-import com.mavlushechka.a1qa.elements.BaseElement;
+import aquality.selenium.elements.interfaces.IElement;
+import aquality.selenium.elements.interfaces.ILabel;
public abstract class BaseForm {
- protected final BaseElement uniqueElement;
- protected final String name;
+ private final IElement uniqueElement;
+ private final String name;
- public BaseForm(BaseElement uniqueElement, String name) {
+ public BaseForm(ILabel uniqueElement, String name) {
this.uniqueElement = uniqueElement;
this.name = name;
}
public boolean isOpened() {
- return uniqueElement.isVisible();
+ return uniqueElement.getElement().isDisplayed();
}
public String getName() {
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/CommentForm.java b/src/main/java/com/mavlushechka/a1qa/pages/CommentForm.java
new file mode 100644
index 0000000..d087336
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/CommentForm.java
@@ -0,0 +1,28 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.ILabel;
+import com.mavlushechka.a1qa.models.Comment;
+import org.openqa.selenium.By;
+
+import java.util.Objects;
+
+public class CommentForm extends BaseForm {
+
+ private final ILabel commentLabel;
+ private final ILabel commentText;
+
+
+ public CommentForm(Comment comment) {
+ super(AqualityServices.getElementFactory().getLabel(By.id("post" + comment.user().getId() + "_" + comment.id()), "Comment"), "Comment form");
+ String commentXpath = "//*[@id='" + "post" + comment.user().getId() + "_" + comment.id() + "']";
+ commentLabel = AqualityServices.getElementFactory().getLabel(By.xpath(commentXpath), "Comment");
+ commentText = AqualityServices.getElementFactory().getLabel(By.xpath(commentXpath + "//*[contains(@class, 'wall_reply_text')]"), "Comment");
+ }
+
+ public boolean contains(Comment comment) {
+ return Objects.equals(Integer.parseInt(commentLabel.getAttribute("data-answering-id")), comment.user().getId())
+ && Objects.equals(commentText.getText(), comment.message());
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/CommentsForm.java b/src/main/java/com/mavlushechka/a1qa/pages/CommentsForm.java
new file mode 100644
index 0000000..4ae6a01
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/CommentsForm.java
@@ -0,0 +1,32 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.IButton;
+import com.mavlushechka.a1qa.models.Comment;
+import com.mavlushechka.a1qa.models.Post;
+import org.openqa.selenium.By;
+
+public class CommentsForm extends BaseForm {
+
+ private final IButton nextCommentsButton;
+
+
+ public CommentsForm(Post post) {
+ super(AqualityServices.getElementFactory().getLabel(By.id("replies_wrap" + post.owner().getId() + "_" + post.id()), "Comments"),
+ "Comments form");
+ nextCommentsButton = AqualityServices.getElementFactory().getButton(
+ By.xpath("//*[@id='" + "replies_wrap" + post.owner().getId() + "_" + post.id() + "']//*[contains(@class, 'replies_next')]"),
+ "Next comments"
+ );
+ }
+
+ public boolean contains(Comment comment) {
+ CommentForm commentForm = new CommentForm(comment);
+
+ if (nextCommentsButton.getElement().isDisplayed()) {
+ nextCommentsButton.click();
+ }
+ return commentForm.contains(comment);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/FeedPage.java b/src/main/java/com/mavlushechka/a1qa/pages/FeedPage.java
new file mode 100644
index 0000000..bebecc1
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/FeedPage.java
@@ -0,0 +1,19 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import org.openqa.selenium.By;
+
+public class FeedPage extends BaseForm {
+
+ private final SideBarForm sideBarForm = new SideBarForm();
+
+
+ public FeedPage() {
+ super(AqualityServices.getElementFactory().getLabel(By.id("main_feed"), "Main feed"), "Feed");
+ }
+
+ public void clickMyProfileButton() {
+ sideBarForm.clickMyProfileButton();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java b/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java
new file mode 100644
index 0000000..20339f8
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java
@@ -0,0 +1,25 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.IButton;
+import aquality.selenium.elements.interfaces.ITextBox;
+import org.openqa.selenium.By;
+
+public class HomePage extends BaseForm {
+
+ private final ITextBox phoneOrEmailTextBox = AqualityServices.getElementFactory().getTextBox(By.id("index_email"), "Phone or email");
+ private final IButton signInButton = AqualityServices.getElementFactory().getButton(
+ By.xpath("//button[contains(@class, 'VkIdForm__signInButton')]"),"Sign in"
+ );
+
+
+ public HomePage() {
+ super(AqualityServices.getElementFactory().getLabel(By.xpath("//*[contains(@class, 'IndexPageContent')]"), "Index page content"), "Home");
+ }
+
+ public void performAuthorization(String phoneOrEmail) {
+ phoneOrEmailTextBox.clearAndType(phoneOrEmail);
+ signInButton.click();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/PostForm.java b/src/main/java/com/mavlushechka/a1qa/pages/PostForm.java
new file mode 100644
index 0000000..dc5f8b0
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/PostForm.java
@@ -0,0 +1,67 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.IButton;
+import aquality.selenium.elements.interfaces.ILabel;
+import com.mavlushechka.a1qa.models.Comment;
+import com.mavlushechka.a1qa.models.Post;
+import org.openqa.selenium.By;
+
+import java.util.Objects;
+
+public class PostForm extends BaseForm {
+
+ private final ILabel authorLabel;
+ private final ILabel textLabel;
+ private final ILabel imageLabel;
+ private final IButton likeButton;
+
+
+ public PostForm(Post post) {
+ super(AqualityServices.getElementFactory().getLabel(By.id("post" + post.owner().getId() + "_" + post.id()), "Post"), "Post form");
+ String postXpath = "//*[@id='" + "post" + post.owner().getId() + "_" + post.id() + "']";
+ authorLabel = AqualityServices.getElementFactory().getLabel(
+ By.xpath(postXpath + "//*[contains(@class, 'post_author')]//a[contains(@class, 'author')]"), "Post author"
+ );
+ textLabel = AqualityServices.getElementFactory().getLabel(By.xpath(postXpath + "//*[contains(@class, 'wall_post_text')]"), "Post text");
+ imageLabel = AqualityServices.getElementFactory().getLabel(
+ By.xpath(postXpath + "//*[contains(@class, 'page_post_thumb_wrap')]"), "Post image"
+ );
+ likeButton = AqualityServices.getElementFactory().getButton(By.xpath(postXpath + "//*[@data-reaction-set-id='reactions']"), "Like");
+ }
+
+ public boolean contains(Post post) {
+ boolean containsPost = Objects.equals(authorLabel.getText(), post.owner().getFirstName() + " " + post.owner().getLastName())
+ && Objects.equals(textLabel.getText(), post.message());
+
+ if (post.attachment() != null) {
+ containsPost &= Objects.equals(post.attachment().toString(), imageLabel.getAttribute("href").split("vk.com/")[1]);
+ } else {
+ containsPost &= !imageLabel.state().isDisplayed();
+ }
+
+ return containsPost;
+ }
+
+ public boolean contains(Comment comment) {
+ return new CommentsForm(comment.post()).contains(comment);
+ }
+
+ public void clickLikeButton() {
+ likeButton.getElement().click();
+ }
+
+ public void waitForUpdate() {
+ String text = textLabel.getText();
+ AqualityServices.getConditionalWait().waitFor(() -> !Objects.equals(textLabel.getText(), text));
+ }
+
+ public void waitForDelete() {
+ AqualityServices.getConditionalWait().waitFor(this::notExists);
+ }
+
+ public boolean notExists() {
+ return !authorLabel.state().isDisplayed();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/ProfilePage.java b/src/main/java/com/mavlushechka/a1qa/pages/ProfilePage.java
new file mode 100644
index 0000000..816517d
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/ProfilePage.java
@@ -0,0 +1,41 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import com.mavlushechka.a1qa.models.Comment;
+import com.mavlushechka.a1qa.models.Post;
+import org.openqa.selenium.By;
+
+public class ProfilePage extends BaseForm {
+
+ private final ProfileWallForm profileWallForm = new ProfileWallForm();
+
+
+ public ProfilePage() {
+ super(AqualityServices.getElementFactory().getLabel(By.id("profile"), "Profile"), "Profile");
+ }
+
+ public boolean contains(Post post) {
+ return profileWallForm.contains(post);
+ }
+
+ public boolean contains(Comment comment) {
+ return profileWallForm.contains(comment);
+ }
+
+ public boolean notContains(Post post) {
+ return profileWallForm.notContains(post);
+ }
+
+ public void clickPostLikeButton(Post post) {
+ profileWallForm.clickPostLikeButton(post);
+ }
+
+ public void waitForPostUpdate(Post post) {
+ profileWallForm.waitForPostUpdate(post);
+ }
+
+ public void waitForPostDelete(Post post) {
+ profileWallForm.waitForPostDelete(post);
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/ProfileWallForm.java b/src/main/java/com/mavlushechka/a1qa/pages/ProfileWallForm.java
new file mode 100644
index 0000000..d8ddc37
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/ProfileWallForm.java
@@ -0,0 +1,43 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import com.mavlushechka.a1qa.models.Comment;
+import com.mavlushechka.a1qa.models.Post;
+import org.openqa.selenium.By;
+
+public class ProfileWallForm extends BaseForm {
+
+ public ProfileWallForm() {
+ super(AqualityServices.getElementFactory().getLabel(By.id("profile_wall"), "Profile wall"), "Profile wall form");
+ }
+
+ public boolean contains(Post post) {
+ PostForm postForm = new PostForm(post);
+
+ if (!postForm.isOpened()) {
+ return false;
+ }
+ return postForm.contains(post);
+ }
+
+ public boolean notContains(Post post) {
+ return new PostForm(post).notExists();
+ }
+
+ public boolean contains(Comment comment) {
+ return new PostForm(comment.post()).contains(comment);
+ }
+
+ public void clickPostLikeButton(Post post) {
+ new PostForm(post).clickLikeButton();
+ }
+
+ public void waitForPostUpdate(Post post) {
+ new PostForm(post).waitForUpdate();
+ }
+
+ public void waitForPostDelete(Post post) {
+ new PostForm(post).waitForDelete();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/SideBarForm.java b/src/main/java/com/mavlushechka/a1qa/pages/SideBarForm.java
new file mode 100644
index 0000000..8df8c3d
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/SideBarForm.java
@@ -0,0 +1,20 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.IButton;
+import org.openqa.selenium.By;
+
+public class SideBarForm extends BaseForm {
+
+ private final IButton myProfileButton = AqualityServices.getElementFactory().getButton(By.id("l_pr"), "My profile");
+
+
+ public SideBarForm() {
+ super(AqualityServices.getElementFactory().getLabel(By.id("side_bar"), "Side bar"), "Side bar form");
+ }
+
+ public void clickMyProfileButton() {
+ myProfileButton.click();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/pages/SignInPage.java b/src/main/java/com/mavlushechka/a1qa/pages/SignInPage.java
new file mode 100644
index 0000000..56c16e7
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/pages/SignInPage.java
@@ -0,0 +1,30 @@
+package com.mavlushechka.a1qa.pages;
+
+import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.elements.interfaces.IButton;
+import aquality.selenium.elements.interfaces.ITextBox;
+import org.openqa.selenium.By;
+
+public class SignInPage extends BaseForm {
+
+ private final ITextBox passwordTextBox = AqualityServices.getElementFactory().getTextBox(
+ By.xpath("//input[contains(@name, 'password')]"), "Password"
+ );
+ private final IButton continueButton = AqualityServices.getElementFactory().getButton(
+ By.xpath("//*[contains(@class, 'vkc__EnterPasswordNoUserInfo__buttonWrap')]//button[contains(@class, 'vkuiButton')]"), "Continue"
+ );
+
+
+ public SignInPage() {
+ super(
+ AqualityServices.getElementFactory().getLabel(By.xpath("//form[contains(@class, 'vkc__EnterPasswordNoUserInfo__content')]"),
+ "Password form"), "Sign in"
+ );
+ }
+
+ public void performAuthorization(String password) {
+ passwordTextBox.clearAndType(password);
+ continueButton.click();
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/HttpUrlConnectionFactory.java b/src/main/java/com/mavlushechka/a1qa/utils/HttpUrlConnectionFactory.java
new file mode 100644
index 0000000..25d3a90
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/utils/HttpUrlConnectionFactory.java
@@ -0,0 +1,25 @@
+package com.mavlushechka.a1qa.utils;
+
+import com.mavlushechka.a1qa.constants.RequestMethod;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class HttpUrlConnectionFactory {
+
+ private HttpUrlConnectionFactory() {
+ }
+
+ public static HttpURLConnection createHttpUrlConnection(String spec, RequestMethod requestMethod, boolean doOutput) throws IOException {
+ HttpURLConnection httpUrlConnection = (HttpURLConnection) new URL(spec).openConnection();
+
+ httpUrlConnection.setRequestMethod(requestMethod.name());
+ httpUrlConnection.setConnectTimeout(Integer.parseInt(JsonParser.parseData("config", "httpUrlConnection.connectTimeout")));
+ httpUrlConnection.setReadTimeout(Integer.parseInt(JsonParser.parseData("config", "httpUrlConnection.readTimeout")));
+ httpUrlConnection.setDoOutput(doOutput);
+ httpUrlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+ return httpUrlConnection;
+ }
+
+}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/JSONPlaceholderAPIManager.java b/src/main/java/com/mavlushechka/a1qa/utils/JSONPlaceholderAPIManager.java
deleted file mode 100644
index 54df569..0000000
--- a/src/main/java/com/mavlushechka/a1qa/utils/JSONPlaceholderAPIManager.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.mavlushechka.a1qa.utils;
-
-import com.mavlushechka.a1qa.constants.Endpoint;
-import com.mavlushechka.a1qa.constants.RequestMethod;
-import com.mavlushechka.a1qa.models.Post;
-import com.mavlushechka.a1qa.models.User;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class JSONPlaceholderAPIManager {
-
- private final static String postsSpec = Endpoint.POSTS.spec;
- private final static String usersSpec = Endpoint.USERS.spec;
-
-
- public static Post getPost(int id) throws IOException {
- return JSONParser.convertToObject(URLConnectionManager.get(postsSpec + "/" + id), Post.class);
- }
-
- public static int getPostResponseCode(int id, RequestMethod requestMethod) throws IOException {
- return URLConnectionManager.getResponseCode(postsSpec + "/" + id, requestMethod);
- }
-
- public static List<Post> getPosts() throws IOException {
- return getObjects(postsSpec, Post.class);
- }
-
- public static int getPostsResponseCode(RequestMethod requestMethod) throws IOException {
- return URLConnectionManager.getResponseCode(postsSpec, requestMethod);
- }
-
- public static Post postPost(Post post) throws IOException {
- return JSONParser.convertToObject(URLConnectionManager.post(postsSpec, JSONParser.convertToJSON(post)), Post.class);
- }
-
- public static User getUser(int id) throws IOException {
- return JSONParser.convertToObject(URLConnectionManager.get(usersSpec + "/" + id), User.class);
- }
-
- public static List<User> getUsers() throws IOException {
- return getObjects(usersSpec, User.class);
- }
-
- public static int getUsersResponseCode(RequestMethod requestMethod) throws IOException {
- return URLConnectionManager.getResponseCode(usersSpec, requestMethod);
- }
-
- private static <T> List<T> getObjects(String spec, Class<T> classOfObject) throws IOException {
- Object[] objects = JSONParser.convertArray(URLConnectionManager.get(spec), classOfObject);
- ArrayList<T> objectsArrayList = new ArrayList<>();
-
- for (Object object : objects) {
- objectsArrayList.add((T) object);
- }
- return objectsArrayList.stream().toList();
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java b/src/main/java/com/mavlushechka/a1qa/utils/JsonParser.java
index 67595f9..bbcc732 100644
--- a/src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java
+++ b/src/main/java/com/mavlushechka/a1qa/utils/JsonParser.java
@@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
-public class JSONParser {
+public class JsonParser {
private final static TreeMap<String, JSONObject> parsedJSON = new TreeMap<>();
@@ -43,7 +43,7 @@ public class JSONParser {
return new Gson().fromJson(json, classToConvert);
}
- public static <T> String convertToJSON(T object) {
+ public static <T> String convertToJson(T object) {
return new Gson().toJson(object);
}
@@ -71,11 +71,11 @@ public class JSONParser {
parsedJSON.put(filename, new JSONObject(FileParser.parse("src/main/resources/" + filename + ".json")));
}
- private static String parseData(String JSONName, String key, boolean isObject) {
- JSONObject jsonObject = new JSONObject(parsedJSON.get(JSONName).toString());
+ private static String parseData(String jsonName, String key, boolean isObject) {
+ JSONObject jsonObject = new JSONObject(parsedJSON.get(jsonName).toString());
String[] keys = key.split("\\.");
- for (int i = 0; i < keys.length-1; i++) {
+ for (int i = 0; i < keys.length - 1; i++) {
if (keys[i].contains("[") && keys[i].contains("]")) {
String splitKey = keys[i].split("\\[")[0];
int index = Integer.parseInt(keys[i].split("\\[")[1].replaceAll("[\\[\\]]", ""));
@@ -86,9 +86,9 @@ public class JSONParser {
}
}
if (isObject) {
- return jsonObject.getJSONObject(keys[keys.length-1]).toString();
+ return jsonObject.getJSONObject(keys[keys.length - 1]).toString();
}
- return jsonObject.getString(keys[keys.length-1]);
+ return jsonObject.getString(keys[keys.length - 1]);
}
}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/LoggerUtils.java b/src/main/java/com/mavlushechka/a1qa/utils/LoggerUtils.java
index 51d49ae..2498f87 100644
--- a/src/main/java/com/mavlushechka/a1qa/utils/LoggerUtils.java
+++ b/src/main/java/com/mavlushechka/a1qa/utils/LoggerUtils.java
@@ -30,6 +30,11 @@ public class LoggerUtils {
logger = LogManager.getLogger();
}
+ public static void step(String text) {
+ step++;
+ info("Step %d: %s".formatted(step, text));
+ }
+
public static void info(String text) {
logger.log(Level.INFO, text);
}
@@ -38,9 +43,4 @@ public class LoggerUtils {
logger.log(Level.ERROR, text);
}
- public static void step(String text) {
- step++;
- logger.log(Level.INFO, "Step %d: %s".formatted(step, text));
- }
-
}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/Posts.java b/src/main/java/com/mavlushechka/a1qa/utils/Posts.java
deleted file mode 100644
index d0bdfaa..0000000
--- a/src/main/java/com/mavlushechka/a1qa/utils/Posts.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mavlushechka.a1qa.utils;
-
-import com.mavlushechka.a1qa.models.Post;
-
-import java.util.List;
-import java.util.stream.IntStream;
-
-public class Posts {
-
- public static boolean isPostsAscending(List<Post> posts) {
- return IntStream.range(1, posts.size())
- .map(index -> posts.get(index - 1).compareTo(posts.get(index)))
- .allMatch(order -> order <= 0);
- }
-
-}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/StringUtils.java b/src/main/java/com/mavlushechka/a1qa/utils/StringUtils.java
index cbce72f..854d7cc 100644
--- a/src/main/java/com/mavlushechka/a1qa/utils/StringUtils.java
+++ b/src/main/java/com/mavlushechka/a1qa/utils/StringUtils.java
@@ -13,7 +13,7 @@ public class StringUtils {
for (int i = 0; i < words.length; i++) {
stringBuilder.append(words[i].toUpperCase());
- if (i != words.length-1) {
+ if (i != words.length - 1) {
stringBuilder.append("_");
}
}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/URLConnectionManager.java b/src/main/java/com/mavlushechka/a1qa/utils/UrlConnectionManager.java
index c6c9fae..7ea092c 100644
--- a/src/main/java/com/mavlushechka/a1qa/utils/URLConnectionManager.java
+++ b/src/main/java/com/mavlushechka/a1qa/utils/UrlConnectionManager.java
@@ -1,7 +1,6 @@
package com.mavlushechka.a1qa.utils;
import com.mavlushechka.a1qa.constants.RequestMethod;
-import com.mavlushechka.a1qa.driverUtils.HttpURLConnectionFactory;
import java.io.BufferedReader;
import java.io.DataOutputStream;
@@ -9,12 +8,14 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
-public class URLConnectionManager {
+public class UrlConnectionManager {
public static String get(String spec) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
- try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(HttpURLConnectionFactory.createHttpURLConnection(spec, RequestMethod.GET, false).getInputStream()))) {
+ try (BufferedReader bufferedReader = new BufferedReader(
+ new InputStreamReader(HttpUrlConnectionFactory.createHttpUrlConnection(spec, RequestMethod.GET, false).getInputStream()))
+ ) {
String inputLine;
while ((inputLine = bufferedReader.readLine()) != null) {
@@ -25,14 +26,14 @@ public class URLConnectionManager {
}
public static String post(String spec, String content) throws IOException {
- HttpURLConnection httpURLConnection = HttpURLConnectionFactory.createHttpURLConnection(spec, RequestMethod.POST, true);
+ HttpURLConnection httpUrlConnection = HttpUrlConnectionFactory.createHttpUrlConnection(spec, RequestMethod.POST, true);
StringBuilder stringBuilder = new StringBuilder();
- try (DataOutputStream dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream())) {
+ try (DataOutputStream dataOutputStream = new DataOutputStream(httpUrlConnection.getOutputStream())) {
dataOutputStream.writeBytes(content);
dataOutputStream.flush();
}
- try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()))) {
+ try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream()))) {
String inputLine;
while ((inputLine = bufferedReader.readLine()) != null) {
@@ -43,7 +44,7 @@ public class URLConnectionManager {
}
public static int getResponseCode(String spec, RequestMethod requestMethod) throws IOException {
- return HttpURLConnectionFactory.createHttpURLConnection(spec, requestMethod, false).getResponseCode();
+ return HttpUrlConnectionFactory.createHttpUrlConnection(spec, requestMethod, false).getResponseCode();
}
}
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/VkApiUtils.java b/src/main/java/com/mavlushechka/a1qa/utils/VkApiUtils.java
new file mode 100644
index 0000000..845ecc7
--- /dev/null
+++ b/src/main/java/com/mavlushechka/a1qa/utils/VkApiUtils.java
@@ -0,0 +1,62 @@
+package com.mavlushechka.a1qa.utils;
+
+import com.mavlushechka.a1qa.constants.Method;
+import com.mavlushechka.a1qa.models.Liker;
+import com.mavlushechka.a1qa.models.Post;
+import com.mavlushechka.a1qa.models.User;
+import org.json.JSONObject;
+
+import java.io.IOException;
+
+public class VkApiUtils {
+
+ private final static double apiVersion = 5.131;
+ private final static String url = "https://api.vk.com/method/%s?v=" + apiVersion + "&%s&access_token=" + JsonParser.parseData("testData", "vkontakte.account.token");
+
+
+ public static User getCurrentUser() throws IOException {
+ return JsonParser.convertToObject(
+ new JSONObject(UrlConnectionManager.get(url.formatted(Method.USERS_GET.name, "")))
+ .getJSONArray("response").get(0).toString(), User.class
+ );
+ }
+
+ public static int createPost(String message) throws IOException {
+ return new JSONObject(UrlConnectionManager.get(url.formatted(Method.WALL_POST.name, "message=" + message)))
+ .getJSONObject("response").getInt("post_id");
+ }
+
+ public static void editPost(Post post, Post editedPost) throws IOException {
+ UrlConnectionManager.get(
+ url.formatted(
+ Method.WALL_EDIT.name,
+ "post_id=" + post.id() + "&message=" + editedPost.message() + "&attachments=" + editedPost.attachment()
+ )
+ );
+ }
+
+ public static void deletePost(Post post) throws IOException {
+ UrlConnectionManager.get(url.formatted(Method.WALL_DELETE.name, "post_id=" + post.id()));
+ }
+
+ public static int createComment(int postId, String message) throws IOException {
+ return new JSONObject(UrlConnectionManager.get(url.formatted(Method.WALL_CREATE_COMMENT.name, "post_id=" + postId + "&message=" + message)))
+ .getJSONObject("response").getInt("comment_id");
+ }
+
+ public static boolean containsLike(Post post, User user) throws IOException {
+ Object[] users = JsonParser.convertArray(new JSONObject(UrlConnectionManager.get(
+ url.formatted(Method.WALL_GET_LIKES.name, "post_id=" + post.id())
+ )).getJSONObject("response").getJSONArray("users").toString(),
+ Liker.class
+ );
+
+ for (Object userObject : users) {
+ if (((Liker) userObject).getUid() == user.getId()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}