create object models and implement them into tests (#2606)
* Update object models * SchemaLastUpdate * Added fileToString in ApiHelper * Added Connector model * Update ConnectorsTests * Added Topic model * Update TopicTests * Update SchemasTests * Added Schema model * Update TopicTests * refactor of Schema * Refactored TestClasses * TopicTests update * Topic update * ConnectorsTests update * Revert changes in QaseExtension * Refactored steps of ApiHelper with object models * Resolve conversation in ConnectorsTests * Resolve conversation in SchemasTests * Resolve conversation in TopicTests * Delete unused object message
This commit is contained in:
parent
e621a172d5
commit
93852b2600
13 changed files with 244 additions and 191 deletions
|
@ -6,7 +6,13 @@ import com.provectus.kafka.ui.api.api.KafkaConnectApi;
|
||||||
import com.provectus.kafka.ui.api.api.MessagesApi;
|
import com.provectus.kafka.ui.api.api.MessagesApi;
|
||||||
import com.provectus.kafka.ui.api.api.SchemasApi;
|
import com.provectus.kafka.ui.api.api.SchemasApi;
|
||||||
import com.provectus.kafka.ui.api.api.TopicsApi;
|
import com.provectus.kafka.ui.api.api.TopicsApi;
|
||||||
import com.provectus.kafka.ui.api.model.*;
|
import com.provectus.kafka.ui.api.model.CreateTopicMessage;
|
||||||
|
import com.provectus.kafka.ui.api.model.NewConnector;
|
||||||
|
import com.provectus.kafka.ui.api.model.NewSchemaSubject;
|
||||||
|
import com.provectus.kafka.ui.api.model.TopicCreation;
|
||||||
|
import com.provectus.kafka.ui.models.Connector;
|
||||||
|
import com.provectus.kafka.ui.models.Schema;
|
||||||
|
import com.provectus.kafka.ui.models.Topic;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.reactive.function.client.WebClientResponseException;
|
import org.springframework.web.reactive.function.client.WebClientResponseException;
|
||||||
|
@ -15,6 +21,7 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static com.codeborne.selenide.Selenide.sleep;
|
import static com.codeborne.selenide.Selenide.sleep;
|
||||||
|
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@ -67,11 +74,11 @@ public class ApiHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void createSchema(String clusterName, String schemaName, SchemaType type, String schemaValue) {
|
public void createSchema(String clusterName, Schema schema) {
|
||||||
NewSchemaSubject schemaSubject = new NewSchemaSubject();
|
NewSchemaSubject schemaSubject = new NewSchemaSubject();
|
||||||
schemaSubject.setSubject(schemaName);
|
schemaSubject.setSubject(schema.getName());
|
||||||
schemaSubject.setSchema(schemaValue);
|
schemaSubject.setSchema(fileToString(schema.getValuePath()));
|
||||||
schemaSubject.setSchemaType(type);
|
schemaSubject.setSchemaType(schema.getType());
|
||||||
try {
|
try {
|
||||||
schemaApi().createNewSchema(clusterName, schemaSubject).block();
|
schemaApi().createNewSchema(clusterName, schemaSubject).block();
|
||||||
} catch (WebClientResponseException ex) {
|
} catch (WebClientResponseException ex) {
|
||||||
|
@ -96,16 +103,16 @@ public class ApiHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void createConnector(String clusterName, String connectName, String connectorName, String configJson) {
|
public void createConnector(String clusterName, String connectName, Connector connector) {
|
||||||
NewConnector connector = new NewConnector();
|
NewConnector connectorProperties = new NewConnector();
|
||||||
connector.setName(connectorName);
|
connectorProperties.setName(connector.getName());
|
||||||
Map<String, Object> configMap = new ObjectMapper().readValue(configJson, HashMap.class);
|
Map<String, Object> configMap = new ObjectMapper().readValue(connector.getConfig(), HashMap.class);
|
||||||
connector.setConfig(configMap);
|
connectorProperties.setConfig(configMap);
|
||||||
try {
|
try {
|
||||||
connectorApi().deleteConnector(clusterName, connectName, connectorName).block();
|
connectorApi().deleteConnector(clusterName, connectName, connector.getName()).block();
|
||||||
} catch (WebClientResponseException ignored) {
|
} catch (WebClientResponseException ignored) {
|
||||||
}
|
}
|
||||||
connectorApi().createConnector(clusterName, connectName, connector).block();
|
connectorApi().createConnector(clusterName, connectName, connectorProperties).block();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFirstConnectName(String clusterName) {
|
public String getFirstConnectName(String clusterName) {
|
||||||
|
@ -113,14 +120,13 @@ public class ApiHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void sendMessage(String clusterName, String topicName, String messageContentJson,
|
public void sendMessage(String clusterName, Topic topic) {
|
||||||
String messageKey) {
|
|
||||||
CreateTopicMessage createMessage = new CreateTopicMessage();
|
CreateTopicMessage createMessage = new CreateTopicMessage();
|
||||||
createMessage.partition(0);
|
createMessage.partition(0);
|
||||||
createMessage.setContent(messageContentJson);
|
createMessage.setContent(topic.getMessageContent());
|
||||||
createMessage.setKey(messageKey);
|
createMessage.setKey(topic.getMessageKey());
|
||||||
try {
|
try {
|
||||||
messageApi().sendTopicMessages(clusterName, topicName, createMessage).block();
|
messageApi().sendTopicMessages(clusterName, topic.getName(), createMessage).block();
|
||||||
} catch (WebClientResponseException ex) {
|
} catch (WebClientResponseException ex) {
|
||||||
ex.getRawStatusCode();
|
ex.getRawStatusCode();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.provectus.kafka.ui.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class Connector {
|
||||||
|
|
||||||
|
private String name, config;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.provectus.kafka.ui.models;
|
||||||
|
|
||||||
|
import com.provectus.kafka.ui.api.model.SchemaType;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class Schema {
|
||||||
|
|
||||||
|
private String name,valuePath;
|
||||||
|
private SchemaType type;
|
||||||
|
|
||||||
|
public static Schema createSchemaAvro(){
|
||||||
|
return new Schema().setName(randomAlphabetic(10))
|
||||||
|
.setType(SchemaType.AVRO)
|
||||||
|
.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_value.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Schema createSchemaJson(){
|
||||||
|
return new Schema().setName(randomAlphabetic(10))
|
||||||
|
.setType(SchemaType.JSON)
|
||||||
|
.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_Json_Value.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Schema createSchemaProtobuf(){
|
||||||
|
return new Schema().setName(randomAlphabetic(10))
|
||||||
|
.setType(SchemaType.PROTOBUF)
|
||||||
|
.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_protobuf_value.txt");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.provectus.kafka.ui.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class Topic {
|
||||||
|
private String name, compactPolicyValue, timeToRetainData, maxSizeOnDisk, maxMessageBytes, messageKey, messageContent ;
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package com.provectus.kafka.ui.pages.schema;
|
package com.provectus.kafka.ui.pages.schema;
|
||||||
|
|
||||||
import com.codeborne.selenide.SelenideElement;
|
import com.codeborne.selenide.SelenideElement;
|
||||||
|
import com.provectus.kafka.ui.api.model.SchemaType;
|
||||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import org.openqa.selenium.By;
|
import org.openqa.selenium.By;
|
||||||
|
@ -34,19 +35,4 @@ public class SchemaCreateView {
|
||||||
schemaField.setValue(text);
|
schemaField.setValue(text);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SchemaType {
|
|
||||||
AVRO("AVRO"),
|
|
||||||
JSON("JSON"),
|
|
||||||
PROTOBUF("PROTOBUF");
|
|
||||||
|
|
||||||
final String value;
|
|
||||||
|
|
||||||
SchemaType(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
public String getValue(){
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.codeborne.selenide.Condition;
|
||||||
import com.codeborne.selenide.Selenide;
|
import com.codeborne.selenide.Selenide;
|
||||||
import com.codeborne.selenide.SelenideElement;
|
import com.codeborne.selenide.SelenideElement;
|
||||||
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
||||||
|
import com.provectus.kafka.ui.api.model.SchemaType;
|
||||||
import com.provectus.kafka.ui.utils.BrowserUtils;
|
import com.provectus.kafka.ui.utils.BrowserUtils;
|
||||||
import io.qameta.allure.Step;
|
import io.qameta.allure.Step;
|
||||||
import org.openqa.selenium.By;
|
import org.openqa.selenium.By;
|
||||||
|
@ -18,7 +19,7 @@ public class SchemaEditView {
|
||||||
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
|
protected SelenideElement schemaTypeDropDown = $x("//ul[@name='schemaType']");
|
||||||
|
|
||||||
@Step
|
@Step
|
||||||
public SchemaEditView selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType schemaType) {
|
public SchemaEditView selectSchemaTypeFromDropdown(SchemaType schemaType) {
|
||||||
$x("//ul[@name='schemaType']").click();
|
$x("//ul[@name='schemaType']").click();
|
||||||
$x("//li[text()='" + schemaType.getValue() + "']").click();
|
$x("//li[text()='" + schemaType.getValue() + "']").click();
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package com.provectus.kafka.ui.tests;
|
package com.provectus.kafka.ui.tests;
|
||||||
|
|
||||||
import com.provectus.kafka.ui.base.BaseTest;
|
import com.provectus.kafka.ui.base.BaseTest;
|
||||||
import com.provectus.kafka.ui.helpers.ApiHelper;
|
|
||||||
import com.provectus.kafka.ui.helpers.Helpers;
|
import com.provectus.kafka.ui.helpers.Helpers;
|
||||||
|
import com.provectus.kafka.ui.models.Connector;
|
||||||
|
import com.provectus.kafka.ui.models.Topic;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||||
|
@ -12,98 +13,102 @@ import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.jupiter.api.DisplayName;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.provectus.kafka.ui.extensions.FileUtils.getResourceAsString;
|
import static com.provectus.kafka.ui.extensions.FileUtils.getResourceAsString;
|
||||||
|
|
||||||
public class ConnectorsTests extends BaseTest {
|
public class ConnectorsTests extends BaseTest {
|
||||||
|
private static final long SUITE_ID = 10;
|
||||||
private final long suiteId = 10;
|
private static final String SUITE_TITLE = "Kafka Connect";
|
||||||
private final String suiteTitle = "Kafka Connect";
|
private static final String CONNECT_NAME = "first";
|
||||||
public static final String SINK_CONNECTOR = "sink_postgres_activities_e2e_checks";
|
private static final List<Topic> TOPIC_LIST = new ArrayList<>();
|
||||||
public static final String TOPIC_FOR_CONNECTOR = "topic_for_connector";
|
private static final List<Connector> CONNECTOR_LIST = new ArrayList<>();
|
||||||
public static final String TOPIC_FOR_DELETE_CONNECTOR = "topic_for_delete_connector";
|
private static final String MESSAGE_CONTENT = "message_content_create_topic.json";
|
||||||
public static final String TOPIC_FOR_UPDATE_CONNECTOR = "topic_for_update_connector";
|
private static final String MESSAGE_KEY = " ";
|
||||||
public static final String FIRST_CONNECTOR = "first";
|
private static final Topic TOPIC_FOR_CREATE = new Topic()
|
||||||
public static final String CONNECTOR_FOR_DELETE = "sink_postgres_activities_e2e_checks_for_delete";
|
.setName("topic_for_create_connector")
|
||||||
public static final String CONNECTOR_FOR_UPDATE = "sink_postgres_activities_e2e_checks_for_update";
|
.setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
|
||||||
|
private static final Topic TOPIC_FOR_DELETE = new Topic()
|
||||||
|
.setName("topic_for_delete_connector")
|
||||||
|
.setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
|
||||||
|
private static final Topic TOPIC_FOR_UPDATE = new Topic()
|
||||||
|
.setName("topic_for_update_connector")
|
||||||
|
.setMessageContent(MESSAGE_CONTENT).setMessageKey(MESSAGE_KEY);
|
||||||
|
private static final Connector CONNECTOR_FOR_DELETE = new Connector()
|
||||||
|
.setName("sink_postgres_activities_e2e_checks_for_delete")
|
||||||
|
.setConfig(getResourceAsString("delete_connector_config.json"));
|
||||||
|
private static final Connector CONNECTOR_FOR_UPDATE = new Connector()
|
||||||
|
.setName("sink_postgres_activities_e2e_checks_for_update")
|
||||||
|
.setConfig(getResourceAsString("config_for_create_connector_via_api.json"));
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void beforeAll() {
|
public static void beforeAll() {
|
||||||
ApiHelper apiHelper = Helpers.INSTANCE.apiHelper;
|
TOPIC_LIST.addAll(List.of(TOPIC_FOR_CREATE, TOPIC_FOR_DELETE, TOPIC_FOR_UPDATE));
|
||||||
|
TOPIC_LIST.forEach(topic -> {
|
||||||
String connectorToDelete = getResourceAsString("delete_connector_config.json");
|
Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, topic.getName());
|
||||||
String connectorToUpdate = getResourceAsString("config_for_create_connector_via_api.json");
|
Helpers.INSTANCE.apiHelper.sendMessage(CLUSTER_NAME, topic);
|
||||||
String message = getResourceAsString("message_content_create_topic.json");
|
});
|
||||||
|
CONNECTOR_LIST.addAll(List.of(CONNECTOR_FOR_DELETE, CONNECTOR_FOR_UPDATE));
|
||||||
apiHelper.deleteTopic(CLUSTER_NAME, CONNECTOR_FOR_DELETE);
|
CONNECTOR_LIST.forEach(connector -> Helpers.INSTANCE.apiHelper
|
||||||
|
.createConnector(CLUSTER_NAME, CONNECT_NAME, connector));
|
||||||
apiHelper.createTopic(CLUSTER_NAME, TOPIC_FOR_CONNECTOR);
|
|
||||||
apiHelper.sendMessage(CLUSTER_NAME, TOPIC_FOR_CONNECTOR, message, " ");
|
|
||||||
|
|
||||||
apiHelper.createTopic(CLUSTER_NAME, TOPIC_FOR_DELETE_CONNECTOR);
|
|
||||||
apiHelper.sendMessage(CLUSTER_NAME, TOPIC_FOR_DELETE_CONNECTOR, message, " ");
|
|
||||||
|
|
||||||
apiHelper.createTopic(CLUSTER_NAME, TOPIC_FOR_UPDATE_CONNECTOR);
|
|
||||||
apiHelper.sendMessage(CLUSTER_NAME, TOPIC_FOR_UPDATE_CONNECTOR, message, " ");
|
|
||||||
|
|
||||||
apiHelper.createConnector(CLUSTER_NAME, FIRST_CONNECTOR, CONNECTOR_FOR_DELETE, connectorToDelete);
|
|
||||||
apiHelper.createConnector(CLUSTER_NAME, FIRST_CONNECTOR, CONNECTOR_FOR_UPDATE, connectorToUpdate);
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterAll
|
|
||||||
public static void afterAll() {
|
|
||||||
ApiHelper apiHelper = Helpers.INSTANCE.apiHelper;
|
|
||||||
apiHelper.deleteConnector(CLUSTER_NAME, FIRST_CONNECTOR, SINK_CONNECTOR);
|
|
||||||
apiHelper.deleteConnector(CLUSTER_NAME, FIRST_CONNECTOR, CONNECTOR_FOR_UPDATE);
|
|
||||||
apiHelper.deleteTopic(CLUSTER_NAME, TOPIC_FOR_CONNECTOR);
|
|
||||||
apiHelper.deleteTopic(CLUSTER_NAME, TOPIC_FOR_DELETE_CONNECTOR);
|
|
||||||
apiHelper.deleteTopic(CLUSTER_NAME, TOPIC_FOR_UPDATE_CONNECTOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should create a connector")
|
@DisplayName("should create a connector")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(42)
|
@CaseId(42)
|
||||||
@Test
|
@Test
|
||||||
public void createConnector() {
|
public void createConnector() {
|
||||||
|
Connector connectorForCreate = new Connector()
|
||||||
|
.setName("sink_postgres_activities_e2e_checks")
|
||||||
|
.setConfig(getResourceAsString("config_for_create_connector.json"));
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.clickCreateConnectorButton()
|
.clickCreateConnectorButton()
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.setConnectorConfig(
|
.setConnectorConfig(connectorForCreate.getName(), connectorForCreate.getConfig());
|
||||||
SINK_CONNECTOR,
|
|
||||||
getResourceAsString("config_for_create_connector.json"));
|
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.connectorIsVisibleInList(SINK_CONNECTOR, TOPIC_FOR_CONNECTOR);
|
.connectorIsVisibleInList(connectorForCreate.getName(), TOPIC_FOR_CREATE.getName());
|
||||||
|
CONNECTOR_LIST.add(connectorForCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should update a connector")
|
@DisplayName("should update a connector")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(196)
|
@CaseId(196)
|
||||||
@Test
|
@Test
|
||||||
public void updateConnector() {
|
public void updateConnector() {
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openConnector(CONNECTOR_FOR_UPDATE);
|
.openConnector(CONNECTOR_FOR_UPDATE.getName());
|
||||||
pages.connectorsView.connectorIsVisibleOnOverview();
|
pages.connectorsView.connectorIsVisibleOnOverview();
|
||||||
pages.connectorsView.openEditConfig()
|
pages.connectorsView.openEditConfig()
|
||||||
.updConnectorConfig(getResourceAsString("config_for_update_connector.json"));
|
.updConnectorConfig(CONNECTOR_FOR_UPDATE.getConfig());
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.connectorIsVisibleInList(CONNECTOR_FOR_UPDATE, TOPIC_FOR_UPDATE_CONNECTOR);
|
.connectorIsVisibleInList(CONNECTOR_FOR_UPDATE.getName(), TOPIC_FOR_UPDATE.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete connector")
|
@DisplayName("should delete connector")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(195)
|
@CaseId(195)
|
||||||
@Test
|
@Test
|
||||||
public void deleteConnector() {
|
public void deleteConnector() {
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openConnector(CONNECTOR_FOR_DELETE);
|
.openConnector(CONNECTOR_FOR_DELETE.getName());
|
||||||
pages.connectorsView.clickDeleteButton();
|
pages.connectorsView.clickDeleteButton();
|
||||||
pages.openConnectorsList(CLUSTER_NAME)
|
pages.openConnectorsList(CLUSTER_NAME)
|
||||||
.isNotVisible(CONNECTOR_FOR_DELETE);
|
.isNotVisible(CONNECTOR_FOR_DELETE.getName());
|
||||||
|
CONNECTOR_LIST.remove(CONNECTOR_FOR_DELETE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public static void afterAll() {
|
||||||
|
CONNECTOR_LIST.forEach(connector ->
|
||||||
|
Helpers.INSTANCE.apiHelper.deleteConnector(CLUSTER_NAME, CONNECT_NAME, connector.getName()));
|
||||||
|
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,99 +1,85 @@
|
||||||
package com.provectus.kafka.ui.tests;
|
package com.provectus.kafka.ui.tests;
|
||||||
|
|
||||||
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
import com.provectus.kafka.ui.api.model.CompatibilityLevel;
|
||||||
import com.provectus.kafka.ui.api.model.SchemaType;
|
|
||||||
import com.provectus.kafka.ui.base.BaseTest;
|
import com.provectus.kafka.ui.base.BaseTest;
|
||||||
import com.provectus.kafka.ui.helpers.Helpers;
|
import com.provectus.kafka.ui.helpers.Helpers;
|
||||||
|
import com.provectus.kafka.ui.models.Schema;
|
||||||
import com.provectus.kafka.ui.pages.MainPage;
|
import com.provectus.kafka.ui.pages.MainPage;
|
||||||
import com.provectus.kafka.ui.pages.schema.SchemaCreateView;
|
|
||||||
import com.provectus.kafka.ui.pages.schema.SchemaEditView;
|
import com.provectus.kafka.ui.pages.schema.SchemaEditView;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
import com.provectus.kafka.ui.utils.qaseIO.annotation.AutomationStatus;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
import com.provectus.kafka.ui.utils.qaseIO.annotation.Suite;
|
||||||
import io.qase.api.annotation.CaseId;
|
import io.qase.api.annotation.CaseId;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
||||||
|
|
||||||
|
|
||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
public class SchemasTests extends BaseTest {
|
public class SchemasTests extends BaseTest {
|
||||||
|
private static final long SUITE_ID = 11;
|
||||||
private final long suiteId = 11;
|
private static final String SUITE_TITLE = "Schema Registry";
|
||||||
private final String suiteTitle = "Schema Registry";
|
private static final List<Schema> SCHEMA_LIST = new ArrayList<>();
|
||||||
public static final String SCHEMA_AVRO_CREATE = "avro_schema";
|
private static final Schema AVRO_API = Schema.createSchemaAvro();
|
||||||
public static final String SCHEMA_JSON_CREATE = "json_schema";
|
private static final Schema JSON_API = Schema.createSchemaJson();
|
||||||
public static final String SCHEMA_PROTOBUF_CREATE = "protobuf_schema";
|
private static final Schema PROTOBUF_API = Schema.createSchemaProtobuf();
|
||||||
public static final String SCHEMA_AVRO_API_UPDATE = "avro_schema_for_update_api";
|
|
||||||
public static final String SCHEMA_AVRO_API = "avro_schema_api";
|
|
||||||
public static final String SCHEMA_JSON_API = "json_schema_api";
|
|
||||||
public static final String SCHEMA_PROTOBUF_API = "protobuf_schema_api";
|
|
||||||
private static final String PATH_AVRO_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_avro_value.json";
|
|
||||||
private static final String PATH_AVRO_FOR_UPDATE = System.getProperty("user.dir") + "/src/test/resources/schema_avro_for_update.json";
|
|
||||||
private static final String PATH_PROTOBUF_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_protobuf_value.txt";
|
|
||||||
private static final String PATH_JSON_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_Json_Value.json";
|
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
|
@SneakyThrows
|
||||||
public static void beforeAll() {
|
public static void beforeAll() {
|
||||||
Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, SCHEMA_AVRO_API_UPDATE, SchemaType.AVRO, fileToString(PATH_AVRO_VALUE));
|
SCHEMA_LIST.addAll(List.of(AVRO_API, JSON_API, PROTOBUF_API));
|
||||||
Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, SCHEMA_AVRO_API, SchemaType.AVRO, fileToString(PATH_AVRO_VALUE));
|
SCHEMA_LIST.forEach(schema -> Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, schema));
|
||||||
Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, SCHEMA_JSON_API, SchemaType.JSON, fileToString(PATH_JSON_VALUE));
|
|
||||||
Helpers.INSTANCE.apiHelper.createSchema(CLUSTER_NAME, SCHEMA_PROTOBUF_API, SchemaType.PROTOBUF, fileToString(PATH_PROTOBUF_VALUE));
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterAll
|
|
||||||
public static void afterAll() {
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_AVRO_CREATE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_JSON_CREATE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_PROTOBUF_CREATE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_AVRO_API_UPDATE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_AVRO_API);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_JSON_API);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, SCHEMA_PROTOBUF_API);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should create AVRO schema")
|
@DisplayName("should create AVRO schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(43)
|
@CaseId(43)
|
||||||
@Test
|
@Test
|
||||||
@Order(1)
|
@Order(1)
|
||||||
void createSchemaAvro() {
|
void createSchemaAvro() {
|
||||||
|
Schema schemaAvro = Schema.createSchemaAvro();
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.clickCreateSchema()
|
pages.schemaRegistry.clickCreateSchema()
|
||||||
.setSubjectName(SCHEMA_AVRO_CREATE)
|
.setSubjectName(schemaAvro.getName())
|
||||||
.setSchemaField(fileToString(PATH_AVRO_VALUE))
|
.setSchemaField(fileToString(schemaAvro.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.AVRO)
|
.selectSchemaTypeFromDropdown(schemaAvro.getType())
|
||||||
.clickSubmit()
|
.clickSubmit()
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.mainPage
|
pages.mainPage
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.isSchemaVisible(SCHEMA_AVRO_CREATE);
|
pages.schemaRegistry.isSchemaVisible(schemaAvro.getName());
|
||||||
|
SCHEMA_LIST.add(schemaAvro);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should update AVRO schema")
|
@DisplayName("should update AVRO schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(186)
|
@CaseId(186)
|
||||||
@Test
|
@Test
|
||||||
@Order(2)
|
@Order(2)
|
||||||
void updateSchemaAvro() {
|
void updateSchemaAvro() {
|
||||||
|
AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json");
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.openSchema(SCHEMA_AVRO_API_UPDATE)
|
pages.schemaRegistry.openSchema(AVRO_API.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openEditSchema();
|
.openEditSchema();
|
||||||
Assertions.assertTrue(new SchemaEditView().isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
Assertions.assertTrue(new SchemaEditView().isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
|
||||||
new SchemaEditView().selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
new SchemaEditView().selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
|
||||||
.setNewSchemaValue(fileToString(PATH_AVRO_FOR_UPDATE))
|
.setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
|
||||||
.clickSubmit()
|
.clickSubmit()
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE);
|
.isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete AVRO schema")
|
@DisplayName("should delete AVRO schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(187)
|
@CaseId(187)
|
||||||
@Test
|
@Test
|
||||||
|
@ -101,34 +87,37 @@ public class SchemasTests extends BaseTest {
|
||||||
void deleteSchemaAvro() {
|
void deleteSchemaAvro() {
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.openSchema(SCHEMA_AVRO_API)
|
pages.schemaRegistry.openSchema(AVRO_API.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema()
|
.removeSchema()
|
||||||
.isNotVisible(SCHEMA_AVRO_API);
|
.isNotVisible(AVRO_API.getName());
|
||||||
|
SCHEMA_LIST.remove(AVRO_API);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should create JSON schema")
|
@DisplayName("should create JSON schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(89)
|
@CaseId(89)
|
||||||
@Test
|
@Test
|
||||||
@Order(4)
|
@Order(4)
|
||||||
void createSchemaJson() {
|
void createSchemaJson() {
|
||||||
|
Schema schemaJson = Schema.createSchemaJson();
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.clickCreateSchema()
|
pages.schemaRegistry.clickCreateSchema()
|
||||||
.setSubjectName(SCHEMA_JSON_CREATE)
|
.setSubjectName(schemaJson.getName())
|
||||||
.setSchemaField(fileToString(PATH_JSON_VALUE))
|
.setSchemaField(fileToString(schemaJson.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.JSON)
|
.selectSchemaTypeFromDropdown(schemaJson.getType())
|
||||||
.clickSubmit()
|
.clickSubmit()
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.mainPage
|
pages.mainPage
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.isSchemaVisible(SCHEMA_JSON_CREATE);
|
pages.schemaRegistry.isSchemaVisible(schemaJson.getName());
|
||||||
|
SCHEMA_LIST.add(schemaJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete JSON schema")
|
@DisplayName("should delete JSON schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(189)
|
@CaseId(189)
|
||||||
@Test
|
@Test
|
||||||
|
@ -136,34 +125,37 @@ public class SchemasTests extends BaseTest {
|
||||||
void deleteSchemaJson() {
|
void deleteSchemaJson() {
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.openSchema(SCHEMA_JSON_API)
|
pages.schemaRegistry.openSchema(JSON_API.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema()
|
.removeSchema()
|
||||||
.isNotVisible(SCHEMA_JSON_API);
|
.isNotVisible(JSON_API.getName());
|
||||||
|
SCHEMA_LIST.remove(JSON_API);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should create PROTOBUF schema")
|
@DisplayName("should create PROTOBUF schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(91)
|
@CaseId(91)
|
||||||
@Test
|
@Test
|
||||||
@Order(6)
|
@Order(6)
|
||||||
void createSchemaProtobuf() {
|
void createSchemaProtobuf() {
|
||||||
|
Schema schemaProtobuf = Schema.createSchemaProtobuf();
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.clickCreateSchema()
|
pages.schemaRegistry.clickCreateSchema()
|
||||||
.setSubjectName(SCHEMA_PROTOBUF_CREATE)
|
.setSubjectName(schemaProtobuf.getName())
|
||||||
.setSchemaField(fileToString(PATH_PROTOBUF_VALUE))
|
.setSchemaField(fileToString(schemaProtobuf.getValuePath()))
|
||||||
.selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.PROTOBUF)
|
.selectSchemaTypeFromDropdown(schemaProtobuf.getType())
|
||||||
.clickSubmit()
|
.clickSubmit()
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.mainPage
|
pages.mainPage
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.isSchemaVisible(SCHEMA_PROTOBUF_CREATE);
|
pages.schemaRegistry.isSchemaVisible(schemaProtobuf.getName());
|
||||||
|
SCHEMA_LIST.add(schemaProtobuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete PROTOBUF schema")
|
@DisplayName("should delete PROTOBUF schema")
|
||||||
@Suite(suiteId = suiteId, title = suiteTitle)
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(223)
|
@CaseId(223)
|
||||||
@Test
|
@Test
|
||||||
|
@ -171,9 +163,15 @@ public class SchemasTests extends BaseTest {
|
||||||
void deleteSchemaProtobuf() {
|
void deleteSchemaProtobuf() {
|
||||||
pages.openMainPage()
|
pages.openMainPage()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
|
||||||
pages.schemaRegistry.openSchema(SCHEMA_PROTOBUF_API)
|
pages.schemaRegistry.openSchema(PROTOBUF_API.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.removeSchema()
|
.removeSchema()
|
||||||
.isNotVisible(SCHEMA_PROTOBUF_API);
|
.isNotVisible(PROTOBUF_API.getName());
|
||||||
|
SCHEMA_LIST.remove(PROTOBUF_API);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public static void afterAll() {
|
||||||
|
SCHEMA_LIST.forEach(schema -> Helpers.INSTANCE.apiHelper.deleteSchema(CLUSTER_NAME, schema.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.provectus.kafka.ui.tests;
|
||||||
|
|
||||||
import com.provectus.kafka.ui.base.BaseTest;
|
import com.provectus.kafka.ui.base.BaseTest;
|
||||||
import com.provectus.kafka.ui.helpers.Helpers;
|
import com.provectus.kafka.ui.helpers.Helpers;
|
||||||
|
import com.provectus.kafka.ui.models.Topic;
|
||||||
import com.provectus.kafka.ui.pages.MainPage;
|
import com.provectus.kafka.ui.pages.MainPage;
|
||||||
import com.provectus.kafka.ui.pages.topic.TopicView;
|
import com.provectus.kafka.ui.pages.topic.TopicView;
|
||||||
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
import com.provectus.kafka.ui.utils.qaseIO.Status;
|
||||||
|
@ -11,32 +12,29 @@ import io.qameta.allure.Issue;
|
||||||
import io.qase.api.annotation.CaseId;
|
import io.qase.api.annotation.CaseId;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
import static com.provectus.kafka.ui.extensions.FileUtils.fileToString;
|
||||||
|
|
||||||
public class TopicTests extends BaseTest {
|
public class TopicTests extends BaseTest {
|
||||||
|
private static final long SUITE_ID = 2;
|
||||||
public static final String NEW_TOPIC = "new-topic";
|
private static final String SUITE_TITLE = "Topics";
|
||||||
public static final String TOPIC_TO_UPDATE = "topic-to-update";
|
private static final Topic TOPIC_FOR_UPDATE = new Topic()
|
||||||
public static final String TOPIC_TO_DELETE = "topic-to-delete";
|
.setName("topic-to-update")
|
||||||
public static final String COMPACT_POLICY_VALUE = "Compact";
|
.setCompactPolicyValue("Compact")
|
||||||
public static final String UPDATED_TIME_TO_RETAIN_VALUE = "604800001";
|
.setTimeToRetainData("604800001")
|
||||||
public static final String UPDATED_MAX_SIZE_ON_DISK = "20 GB";
|
.setMaxSizeOnDisk("20 GB")
|
||||||
public static final String UPDATED_MAX_MESSAGE_BYTES = "1000020";
|
.setMaxMessageBytes("1000020")
|
||||||
private static final String KEY_TO_PRODUCE_MESSAGE = System.getProperty("user.dir") + "/src/test/resources/producedkey.txt";
|
.setMessageKey(fileToString(System.getProperty("user.dir") + "/src/test/resources/producedkey.txt"))
|
||||||
private static final String CONTENT_TO_PRODUCE_MESSAGE = System.getProperty("user.dir") + "/src/test/resources/testData.txt";
|
.setMessageContent(fileToString(System.getProperty("user.dir") + "/src/test/resources/testData.txt"));
|
||||||
|
private static final Topic TOPIC_FOR_DELETE = new Topic().setName("topic-to-delete");
|
||||||
|
private static final List<Topic> TOPIC_LIST = new ArrayList<>();
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void beforeAll() {
|
public static void beforeAll() {
|
||||||
Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, TOPIC_TO_UPDATE);
|
TOPIC_LIST.addAll(List.of(TOPIC_FOR_UPDATE, TOPIC_FOR_DELETE));
|
||||||
Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, TOPIC_TO_DELETE);
|
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.createTopic(CLUSTER_NAME, topic.getName()));
|
||||||
}
|
|
||||||
|
|
||||||
@AfterAll
|
|
||||||
public static void afterAll() {
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, TOPIC_TO_UPDATE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, TOPIC_TO_DELETE);
|
|
||||||
Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, NEW_TOPIC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should create a topic")
|
@DisplayName("should create a topic")
|
||||||
|
@ -45,84 +43,88 @@ public class TopicTests extends BaseTest {
|
||||||
@CaseId(199)
|
@CaseId(199)
|
||||||
@Test
|
@Test
|
||||||
public void createTopic() {
|
public void createTopic() {
|
||||||
|
Topic topicToCreate = new Topic().setName("new-topic");
|
||||||
pages.open()
|
pages.open()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS);
|
||||||
pages.topicsList.pressCreateNewTopic()
|
pages.topicsList.pressCreateNewTopic()
|
||||||
.setTopicName(NEW_TOPIC)
|
.setTopicName(topicToCreate.getName())
|
||||||
.sendData()
|
.sendData()
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.open()
|
pages.open()
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS)
|
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS)
|
||||||
.topicIsVisible(NEW_TOPIC);
|
.topicIsVisible(topicToCreate.getName());
|
||||||
helpers.apiHelper.deleteTopic(CLUSTER_NAME, NEW_TOPIC);
|
TOPIC_LIST.add(topicToCreate);
|
||||||
pages.open()
|
|
||||||
.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.TOPICS)
|
|
||||||
.topicIsNotVisible(NEW_TOPIC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Disabled("Due to issue https://github.com/provectus/kafka-ui/issues/1500 ignore this test")
|
@Disabled("Due to issue https://github.com/provectus/kafka-ui/issues/1500 ignore this test")
|
||||||
@DisplayName("should update a topic")
|
@DisplayName("should update a topic")
|
||||||
@Issue("1500")
|
@Issue("1500")
|
||||||
@Suite(suiteId = 2, title = "Topics")
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(197)
|
@CaseId(197)
|
||||||
@Test
|
@Test
|
||||||
public void updateTopic() {
|
public void updateTopic() {
|
||||||
pages.openTopicsList(CLUSTER_NAME)
|
pages.openTopicsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.openTopicView(CLUSTER_NAME, TOPIC_TO_UPDATE)
|
pages.openTopicView(CLUSTER_NAME, TOPIC_FOR_UPDATE.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openEditSettings()
|
.openEditSettings()
|
||||||
.selectCleanupPolicy(COMPACT_POLICY_VALUE)
|
.selectCleanupPolicy(TOPIC_FOR_UPDATE.getCompactPolicyValue())
|
||||||
.setMinInsyncReplicas(10)
|
.setMinInsyncReplicas(10)
|
||||||
.setTimeToRetainDataInMs(UPDATED_TIME_TO_RETAIN_VALUE)
|
.setTimeToRetainDataInMs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
||||||
.setMaxSizeOnDiskInGB(UPDATED_MAX_SIZE_ON_DISK)
|
.setMaxSizeOnDiskInGB(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
||||||
.setMaxMessageBytes(UPDATED_MAX_MESSAGE_BYTES)
|
.setMaxMessageBytes(TOPIC_FOR_UPDATE.getMaxMessageBytes())
|
||||||
.sendData()
|
.sendData()
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
|
|
||||||
pages.openTopicsList(CLUSTER_NAME)
|
pages.openTopicsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady();
|
.waitUntilScreenReady();
|
||||||
pages.openTopicView(CLUSTER_NAME, TOPIC_TO_UPDATE)
|
pages.openTopicView(CLUSTER_NAME, TOPIC_FOR_UPDATE.getName())
|
||||||
.openEditSettings()
|
.openEditSettings()
|
||||||
// Assertions
|
// Assertions
|
||||||
.cleanupPolicyIs(COMPACT_POLICY_VALUE)
|
.cleanupPolicyIs(TOPIC_FOR_UPDATE.getCompactPolicyValue())
|
||||||
.timeToRetainIs(UPDATED_TIME_TO_RETAIN_VALUE)
|
.timeToRetainIs(TOPIC_FOR_UPDATE.getTimeToRetainData())
|
||||||
.maxSizeOnDiskIs(UPDATED_MAX_SIZE_ON_DISK)
|
.maxSizeOnDiskIs(TOPIC_FOR_UPDATE.getMaxSizeOnDisk())
|
||||||
.maxMessageBytesIs(UPDATED_MAX_MESSAGE_BYTES);
|
.maxMessageBytesIs(TOPIC_FOR_UPDATE.getMaxMessageBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("should delete topic")
|
@DisplayName("should delete topic")
|
||||||
@Suite(suiteId = 2, title = "Topics")
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(207)
|
@CaseId(207)
|
||||||
@Test
|
@Test
|
||||||
public void deleteTopic() {
|
public void deleteTopic() {
|
||||||
pages.openTopicsList(CLUSTER_NAME)
|
pages.openTopicsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopic(TOPIC_TO_DELETE)
|
.openTopic(TOPIC_FOR_DELETE.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.deleteTopic();
|
.deleteTopic();
|
||||||
pages.openTopicsList(CLUSTER_NAME)
|
pages.openTopicsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.isTopicNotVisible(TOPIC_TO_DELETE);
|
.isTopicNotVisible(TOPIC_FOR_DELETE.getName());
|
||||||
|
TOPIC_LIST.remove(TOPIC_FOR_DELETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("produce message")
|
@DisplayName("produce message")
|
||||||
@Suite(suiteId = 2, title = "Topics")
|
@Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
|
||||||
@AutomationStatus(status = Status.AUTOMATED)
|
@AutomationStatus(status = Status.AUTOMATED)
|
||||||
@CaseId(222)
|
@CaseId(222)
|
||||||
@Test
|
@Test
|
||||||
void produceMessage() {
|
void produceMessage() {
|
||||||
pages.openTopicsList(CLUSTER_NAME)
|
pages.openTopicsList(CLUSTER_NAME)
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopic(TOPIC_TO_UPDATE)
|
.openTopic(TOPIC_FOR_UPDATE.getName())
|
||||||
.waitUntilScreenReady()
|
.waitUntilScreenReady()
|
||||||
.openTopicMenu(TopicView.TopicMenu.MESSAGES)
|
.openTopicMenu(TopicView.TopicMenu.MESSAGES)
|
||||||
.clickOnButton("Produce Message")
|
.clickOnButton("Produce Message")
|
||||||
.setContentFiled(fileToString(CONTENT_TO_PRODUCE_MESSAGE))
|
.setContentFiled(TOPIC_FOR_UPDATE.getMessageContent())
|
||||||
.setKeyField(fileToString(KEY_TO_PRODUCE_MESSAGE))
|
.setKeyField(TOPIC_FOR_UPDATE.getMessageKey())
|
||||||
.submitProduceMessage();
|
.submitProduceMessage();
|
||||||
Assertions.assertTrue(pages.topicView.isKeyMessageVisible(fileToString(KEY_TO_PRODUCE_MESSAGE)));
|
Assertions.assertTrue(pages.topicView.isKeyMessageVisible(TOPIC_FOR_UPDATE.getMessageKey()));
|
||||||
Assertions.assertTrue(pages.topicView.isContentMessageVisible(fileToString(CONTENT_TO_PRODUCE_MESSAGE).trim()));
|
Assertions.assertTrue(pages.topicView.isContentMessageVisible(TOPIC_FOR_UPDATE.getMessageContent().trim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public static void afterAll() {
|
||||||
|
TOPIC_LIST.forEach(topic -> Helpers.INSTANCE.apiHelper.deleteTopic(CLUSTER_NAME, topic.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue