package com.provectus.kafka.ui.tests; 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.helpers.Helpers; import com.provectus.kafka.ui.pages.MainPage; import com.provectus.kafka.ui.pages.schema.SchemaCreateView; import lombok.SneakyThrows; import org.junit.jupiter.api.*; import static org.apache.kafka.common.utils.Utils.readFileAsString; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class SchemasTests extends BaseTest { public static final String SECOND_LOCAL = "secondLocal"; public static final String SCHEMA_AVRO_CREATE = "avro_schema"; public static final String SCHEMA_JSON_CREATE = "json_schema"; public static final String SCHEMA_PROTOBUF_CREATE = "protobuf_schema"; 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 @SneakyThrows public static void beforeAll() { Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE)); Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE)); Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_JSON_API, SchemaType.JSON, readFileAsString(PATH_JSON_VALUE)); Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API, SchemaType.PROTOBUF, readFileAsString(PATH_PROTOBUF_VALUE)); } @AfterAll @SneakyThrows public static void afterAll() { Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_CREATE); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_JSON_CREATE); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_CREATE); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_API); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_JSON_API); Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API); } @SneakyThrows @DisplayName("should create AVRO schema") @Test @Order(1) void createSchemaAvro() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.clickCreateSchema() .setSubjectName(SCHEMA_AVRO_CREATE) .setSchemaField(readFileAsString(PATH_AVRO_VALUE)) .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.AVRO) .clickSubmit() .isOnSchemaViewPage(); pages.mainPage .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.isSchemaVisible(SCHEMA_AVRO_CREATE); } @SneakyThrows @DisplayName("should update AVRO schema") @Test @Order(2) void updateSchemaAvro() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.openSchema(SCHEMA_AVRO_API_UPDATE) .isOnSchemaViewPage() .openEditSchema() .selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE) .setNewSchemaValue(readFileAsString(PATH_AVRO_FOR_UPDATE)) .clickSubmit() .isOnSchemaViewPage() .isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE); } @SneakyThrows @DisplayName("should delete AVRO schema") @Test @Order(3) void deleteSchemaAvro() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.openSchema(SCHEMA_AVRO_API) .isOnSchemaViewPage() .removeSchema() .isNotVisible(SCHEMA_AVRO_API); } @SneakyThrows @DisplayName("should create JSON schema") @Test @Order(4) void createSchemaJson() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.clickCreateSchema() .setSubjectName(SCHEMA_JSON_CREATE) .setSchemaField(readFileAsString(PATH_JSON_VALUE)) .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.JSON) .clickSubmit() .isOnSchemaViewPage(); pages.mainPage .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.isSchemaVisible(SCHEMA_JSON_CREATE); } @SneakyThrows @DisplayName("should delete JSON schema") @Test @Order(5) void deleteSchemaJson() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.openSchema(SCHEMA_JSON_API) .isOnSchemaViewPage() .removeSchema() .isNotVisible(SCHEMA_JSON_API); } @SneakyThrows @DisplayName("should create PROTOBUF schema") @Test @Order(6) void createSchemaProtobuf() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.clickCreateSchema() .setSubjectName(SCHEMA_PROTOBUF_CREATE) .setSchemaField(readFileAsString(PATH_PROTOBUF_VALUE)) .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.PROTOBUF) .clickSubmit() .isOnSchemaViewPage(); pages.mainPage .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.isSchemaVisible(SCHEMA_PROTOBUF_CREATE); } @SneakyThrows @DisplayName("should delete PROTOBUF schema") @Test @Order(7) void deleteSchemaProtobuf() { pages.openMainPage() .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY); pages.schemaRegistry.openSchema(SCHEMA_PROTOBUF_API) .isOnSchemaViewPage() .removeSchema() .isNotVisible(SCHEMA_PROTOBUF_API); } }