From 8bc1f45cc3aabc7af6ddc1e1c67f7ed1380a5507 Mon Sep 17 00:00:00 2001 From: Mavlushechka Date: Fri, 4 Nov 2022 17:16:54 +0500 Subject: Add framework.utils and framework.constants package --- .../a1qa/framework/constants/RequestMethod.java | 7 ++ .../a1qa/framework/constants/Status.java | 13 +++ .../a1qa/framework/utils/DoubleUtils.java | 9 +++ .../a1qa/framework/utils/FileParser.java | 22 +++++ .../framework/utils/HttpUrlConnectionFactory.java | 25 ++++++ .../a1qa/framework/utils/JsonParser.java | 94 ++++++++++++++++++++++ .../a1qa/framework/utils/LoggerUtils.java | 46 +++++++++++ 7 files changed, 216 insertions(+) create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/constants/RequestMethod.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/constants/Status.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/utils/DoubleUtils.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/utils/FileParser.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/utils/HttpUrlConnectionFactory.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/utils/JsonParser.java create mode 100644 src/main/java/com/mavlushechka/a1qa/framework/utils/LoggerUtils.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/mavlushechka/a1qa/framework/constants/RequestMethod.java b/src/main/java/com/mavlushechka/a1qa/framework/constants/RequestMethod.java new file mode 100644 index 0000000..85316c9 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/constants/RequestMethod.java @@ -0,0 +1,7 @@ +package com.mavlushechka.a1qa.framework.constants; + +public enum RequestMethod { + + GET, POST + +} diff --git a/src/main/java/com/mavlushechka/a1qa/framework/constants/Status.java b/src/main/java/com/mavlushechka/a1qa/framework/constants/Status.java new file mode 100644 index 0000000..63fbc9a --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/constants/Status.java @@ -0,0 +1,13 @@ +package com.mavlushechka.a1qa.framework.constants; + +public enum Status { + + OK(200), CREATED(201), NOT_FOUND(404); + + public final int code; + + Status(int code) { + this.code = code; + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/framework/utils/DoubleUtils.java b/src/main/java/com/mavlushechka/a1qa/framework/utils/DoubleUtils.java new file mode 100644 index 0000000..1865715 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/utils/DoubleUtils.java @@ -0,0 +1,9 @@ +package com.mavlushechka.a1qa.framework.utils; + +public class DoubleUtils { + + public static double getPercentageOf(double number, double percentage) { + return number / 100 * percentage; + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/framework/utils/FileParser.java b/src/main/java/com/mavlushechka/a1qa/framework/utils/FileParser.java new file mode 100644 index 0000000..40ea62d --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/utils/FileParser.java @@ -0,0 +1,22 @@ +package com.mavlushechka.a1qa.framework.utils; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + +public class FileParser { + + public static String parse(String filename) { + StringBuilder stringBuilder = new StringBuilder(); + + try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filename))) { + while (bufferedReader.ready()) { + stringBuilder.append(bufferedReader.readLine()); + } + } catch (IOException ioException) { + throw new IllegalArgumentException("Cannot find required file."); + } + return stringBuilder.toString(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/framework/utils/HttpUrlConnectionFactory.java b/src/main/java/com/mavlushechka/a1qa/framework/utils/HttpUrlConnectionFactory.java new file mode 100644 index 0000000..cfa0628 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/utils/HttpUrlConnectionFactory.java @@ -0,0 +1,25 @@ +package com.mavlushechka.a1qa.framework.utils; + +import com.mavlushechka.a1qa.framework.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/framework/utils/JsonParser.java b/src/main/java/com/mavlushechka/a1qa/framework/utils/JsonParser.java new file mode 100644 index 0000000..4f89e12 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/utils/JsonParser.java @@ -0,0 +1,94 @@ +package com.mavlushechka.a1qa.framework.utils; + +import com.google.gson.Gson; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.Map; +import java.util.TreeMap; + +public class JsonParser { + + private final static TreeMap parsedJSON = new TreeMap<>(); + + + public static String parseData(String filename, String key) { + return parse(filename, key, false); + } + + public static String parseObject(String filename, String key) { + return parse(filename, key, true); + } + + public static boolean isJson(String json) { + try { + new JSONObject(json); + } catch (JSONException jsonObjectException) { + try { + new JSONArray(json); + } catch (JSONException jsonArrayException) { + return false; + } + } + return true; + } + + public static boolean isBodyEmpty(String json) { + return json.equals("{}"); + } + + public static T convertToObject(String json, Class classToConvert) { + return new Gson().fromJson(json, classToConvert); + } + + public static String convertToJson(T object) { + return new Gson().toJson(object); + } + + public static T[] convertArray(String json, Class classToConvert) { + Gson gson = new Gson(); + JSONArray jsonArray = new JSONArray(json); + ArrayList objects = new ArrayList<>(); + + for (int i = 0; i < jsonArray.length(); i++) { + objects.add(gson.fromJson(jsonArray.getJSONObject(i).toString(), classToConvert)); + } + return (T[]) objects.toArray(); + } + + private static String parse(String filename, String key, boolean isObject) { + Map.Entry ceilingEntry = parsedJSON.ceilingEntry(filename); + + if (ceilingEntry == null || !ceilingEntry.getKey().startsWith(filename)) { + parseFile(filename); + } + return parseData(filename, key, isObject); + } + + private static void parseFile(String filename) { + 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()); + String[] keys = key.split("\\."); + + 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("[\\[\\]]", "")); + + jsonObject = jsonObject.getJSONArray(splitKey).getJSONObject(index); + } else { + jsonObject = jsonObject.getJSONObject(keys[i]); + } + } + if (isObject) { + return jsonObject.getJSONObject(keys[keys.length - 1]).toString(); + } + return jsonObject.getString(keys[keys.length - 1]); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/framework/utils/LoggerUtils.java b/src/main/java/com/mavlushechka/a1qa/framework/utils/LoggerUtils.java new file mode 100644 index 0000000..8675d92 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/framework/utils/LoggerUtils.java @@ -0,0 +1,46 @@ +package com.mavlushechka.a1qa.framework.utils; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.xml.XmlConfiguration; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +public class LoggerUtils { + + private final static File CONFIGURATION_FILE = new File("src/main/resources/log4j2.xml"); + private static Logger logger; + private static int step = 0; + + + private LoggerUtils() { + } + + public static void initialize() { + try { + Configurator.initialize(new XmlConfiguration(null, new ConfigurationSource(new FileInputStream(CONFIGURATION_FILE)))); + } catch (IOException ioException) { + throw new RuntimeException(ioException); + } + 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); + } + + public static void error(String text) { + logger.log(Level.ERROR, text); + } + +} -- cgit v1.2.3