SchemasTests.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.provectus.kafka.ui.tests;
  2. import com.provectus.kafka.ui.api.model.CompatibilityLevel;
  3. import com.provectus.kafka.ui.base.BaseTest;
  4. import com.provectus.kafka.ui.models.Schema;
  5. import com.provectus.kafka.ui.pages.MainPage;
  6. import com.provectus.kafka.ui.pages.schema.SchemaDetails;
  7. import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.AutomationStatus;
  8. import com.provectus.kafka.ui.utilities.qaseIoUtils.annotations.Suite;
  9. import com.provectus.kafka.ui.utilities.qaseIoUtils.enums.Status;
  10. import io.qase.api.annotation.CaseId;
  11. import lombok.SneakyThrows;
  12. import org.junit.jupiter.api.*;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import static com.provectus.kafka.ui.utilities.FileUtils.fileToString;
  16. @TestInstance(TestInstance.Lifecycle.PER_CLASS)
  17. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  18. public class SchemasTests extends BaseTest {
  19. private static final long SUITE_ID = 11;
  20. private static final String SUITE_TITLE = "Schema Registry";
  21. private static final List<Schema> SCHEMA_LIST = new ArrayList<>();
  22. private static final Schema AVRO_API = Schema.createSchemaAvro();
  23. private static final Schema JSON_API = Schema.createSchemaJson();
  24. private static final Schema PROTOBUF_API = Schema.createSchemaProtobuf();
  25. @BeforeAll
  26. @SneakyThrows
  27. public void beforeAll() {
  28. SCHEMA_LIST.addAll(List.of(AVRO_API, JSON_API, PROTOBUF_API));
  29. SCHEMA_LIST.forEach(schema -> apiHelper.createSchema(CLUSTER_NAME, schema));
  30. }
  31. @DisplayName("should create AVRO schema")
  32. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  33. @AutomationStatus(status = Status.AUTOMATED)
  34. @CaseId(43)
  35. @Test
  36. @Order(1)
  37. void createSchemaAvro() {
  38. Schema schemaAvro = Schema.createSchemaAvro();
  39. mainPage.goTo()
  40. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  41. schemaRegistryList.clickCreateSchema()
  42. .setSubjectName(schemaAvro.getName())
  43. .setSchemaField(fileToString(schemaAvro.getValuePath()))
  44. .selectSchemaTypeFromDropdown(schemaAvro.getType())
  45. .clickSubmit()
  46. .waitUntilScreenReady();
  47. mainPage.goTo()
  48. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  49. Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaAvro.getName()),"isSchemaVisible()");
  50. SCHEMA_LIST.add(schemaAvro);
  51. }
  52. @DisplayName("should update AVRO schema")
  53. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  54. @AutomationStatus(status = Status.AUTOMATED)
  55. @CaseId(186)
  56. @Test
  57. @Order(2)
  58. void updateSchemaAvro() {
  59. AVRO_API.setValuePath(System.getProperty("user.dir") + "/src/main/resources/testData/schema_avro_for_update.json");
  60. mainPage.goTo()
  61. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  62. schemaRegistryList.openSchema(AVRO_API.getName())
  63. .waitUntilScreenReady()
  64. .openEditSchema();
  65. Assertions.assertTrue(schemaCreateForm.isSchemaDropDownDisabled(),"isSchemaDropDownDisabled()");
  66. schemaCreateForm.selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
  67. .setNewSchemaValue(fileToString(AVRO_API.getValuePath()))
  68. .clickSubmit()
  69. .waitUntilScreenReady();
  70. Assertions.assertEquals(CompatibilityLevel.CompatibilityEnum.NONE.toString(), new SchemaDetails().getCompatibility(), "getCompatibility()");
  71. }
  72. @DisplayName("should delete AVRO schema")
  73. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  74. @AutomationStatus(status = Status.AUTOMATED)
  75. @CaseId(187)
  76. @Test
  77. @Order(3)
  78. void deleteSchemaAvro() {
  79. mainPage.goTo()
  80. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  81. schemaRegistryList.openSchema(AVRO_API.getName())
  82. .waitUntilScreenReady()
  83. .removeSchema();
  84. Assertions.assertFalse(schemaRegistryList.isSchemaVisible(AVRO_API.getName()),"isSchemaVisible()");
  85. SCHEMA_LIST.remove(AVRO_API);
  86. }
  87. @DisplayName("should create JSON schema")
  88. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  89. @AutomationStatus(status = Status.AUTOMATED)
  90. @CaseId(89)
  91. @Test
  92. @Order(4)
  93. void createSchemaJson() {
  94. Schema schemaJson = Schema.createSchemaJson();
  95. mainPage.goTo()
  96. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  97. schemaRegistryList.clickCreateSchema()
  98. .setSubjectName(schemaJson.getName())
  99. .setSchemaField(fileToString(schemaJson.getValuePath()))
  100. .selectSchemaTypeFromDropdown(schemaJson.getType())
  101. .clickSubmit()
  102. .waitUntilScreenReady();
  103. mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  104. Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaJson.getName()),"isSchemaVisible()");
  105. SCHEMA_LIST.add(schemaJson);
  106. }
  107. @DisplayName("should delete JSON schema")
  108. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  109. @AutomationStatus(status = Status.AUTOMATED)
  110. @CaseId(189)
  111. @Test
  112. @Order(5)
  113. void deleteSchemaJson() {
  114. mainPage.goTo()
  115. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  116. schemaRegistryList.openSchema(JSON_API.getName())
  117. .waitUntilScreenReady()
  118. .removeSchema();
  119. Assertions.assertFalse(schemaRegistryList.isSchemaVisible(JSON_API.getName()),"isSchemaVisible()");
  120. SCHEMA_LIST.remove(JSON_API);
  121. }
  122. @DisplayName("should create PROTOBUF schema")
  123. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  124. @AutomationStatus(status = Status.AUTOMATED)
  125. @CaseId(91)
  126. @Test
  127. @Order(6)
  128. void createSchemaProtobuf() {
  129. Schema schemaProtobuf = Schema.createSchemaProtobuf();
  130. mainPage.goTo()
  131. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  132. schemaRegistryList.clickCreateSchema()
  133. .setSubjectName(schemaProtobuf.getName())
  134. .setSchemaField(fileToString(schemaProtobuf.getValuePath()))
  135. .selectSchemaTypeFromDropdown(schemaProtobuf.getType())
  136. .clickSubmit()
  137. .waitUntilScreenReady();
  138. mainPage.goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  139. Assertions.assertTrue(schemaRegistryList.isSchemaVisible(schemaProtobuf.getName()),"isSchemaVisible()");
  140. SCHEMA_LIST.add(schemaProtobuf);
  141. }
  142. @DisplayName("should delete PROTOBUF schema")
  143. @Suite(suiteId = SUITE_ID, title = SUITE_TITLE)
  144. @AutomationStatus(status = Status.AUTOMATED)
  145. @CaseId(223)
  146. @Test
  147. @Order(7)
  148. void deleteSchemaProtobuf() {
  149. mainPage.goTo()
  150. .goToSideMenu(CLUSTER_NAME, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  151. schemaRegistryList.openSchema(PROTOBUF_API.getName())
  152. .waitUntilScreenReady()
  153. .removeSchema();
  154. Assertions.assertFalse(schemaRegistryList.isSchemaVisible(PROTOBUF_API.getName()),"isSchemaVisible()");
  155. SCHEMA_LIST.remove(PROTOBUF_API);
  156. }
  157. @AfterAll
  158. public void afterAll() {
  159. SCHEMA_LIST.forEach(schema -> apiHelper.deleteSchema(CLUSTER_NAME, schema.getName()));
  160. }
  161. }