SchemasTests.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.provectus.kafka.ui.tests;
  2. import com.provectus.kafka.ui.api.model.CompatibilityLevel;
  3. import com.provectus.kafka.ui.api.model.SchemaType;
  4. import com.provectus.kafka.ui.base.BaseTest;
  5. import com.provectus.kafka.ui.helpers.Helpers;
  6. import com.provectus.kafka.ui.pages.MainPage;
  7. import com.provectus.kafka.ui.pages.schema.SchemaCreateView;
  8. import lombok.SneakyThrows;
  9. import org.junit.jupiter.api.*;
  10. import static org.apache.kafka.common.utils.Utils.readFileAsString;
  11. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  12. public class SchemasTests extends BaseTest {
  13. public static final String SECOND_LOCAL = "secondLocal";
  14. public static final String SCHEMA_AVRO_CREATE = "avro_schema";
  15. public static final String SCHEMA_JSON_CREATE = "json_schema";
  16. public static final String SCHEMA_PROTOBUF_CREATE = "protobuf_schema";
  17. public static final String SCHEMA_AVRO_API_UPDATE = "avro_schema_for_update_api";
  18. public static final String SCHEMA_AVRO_API = "avro_schema_api";
  19. public static final String SCHEMA_JSON_API = "json_schema_api";
  20. public static final String SCHEMA_PROTOBUF_API = "protobuf_schema_api";
  21. private static final String PATH_AVRO_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_avro_value.json";
  22. private static final String PATH_AVRO_FOR_UPDATE = System.getProperty("user.dir") + "/src/test/resources/schema_avro_for_update.json";
  23. private static final String PATH_PROTOBUF_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_protobuf_value.txt";
  24. private static final String PATH_JSON_VALUE = System.getProperty("user.dir") + "/src/test/resources/schema_Json_Value.json";
  25. @BeforeAll
  26. @SneakyThrows
  27. public static void beforeAll() {
  28. Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE));
  29. Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_AVRO_API, SchemaType.AVRO, readFileAsString(PATH_AVRO_VALUE));
  30. Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_JSON_API, SchemaType.JSON, readFileAsString(PATH_JSON_VALUE));
  31. Helpers.INSTANCE.apiHelper.createSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API, SchemaType.PROTOBUF, readFileAsString(PATH_PROTOBUF_VALUE));
  32. }
  33. @AfterAll
  34. @SneakyThrows
  35. public static void afterAll() {
  36. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_CREATE);
  37. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_JSON_CREATE);
  38. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_CREATE);
  39. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_API_UPDATE);
  40. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_AVRO_API);
  41. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_JSON_API);
  42. Helpers.INSTANCE.apiHelper.deleteSchema(SECOND_LOCAL, SCHEMA_PROTOBUF_API);
  43. }
  44. @SneakyThrows
  45. @DisplayName("should create AVRO schema")
  46. @Test
  47. @Order(1)
  48. void createSchemaAvro() {
  49. pages.openMainPage()
  50. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  51. pages.schemaRegistry.clickCreateSchema()
  52. .setSubjectName(SCHEMA_AVRO_CREATE)
  53. .setSchemaField(readFileAsString(PATH_AVRO_VALUE))
  54. .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.AVRO)
  55. .clickSubmit()
  56. .isOnSchemaViewPage();
  57. pages.mainPage
  58. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  59. pages.schemaRegistry.isSchemaVisible(SCHEMA_AVRO_CREATE);
  60. }
  61. @SneakyThrows
  62. @DisplayName("should update AVRO schema")
  63. @Test
  64. @Order(2)
  65. void updateSchemaAvro() {
  66. pages.openMainPage()
  67. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  68. pages.schemaRegistry.openSchema(SCHEMA_AVRO_API_UPDATE)
  69. .isOnSchemaViewPage()
  70. .openEditSchema()
  71. .selectCompatibilityLevelFromDropdown(CompatibilityLevel.CompatibilityEnum.NONE)
  72. .setNewSchemaValue(readFileAsString(PATH_AVRO_FOR_UPDATE))
  73. .clickSubmit()
  74. .isOnSchemaViewPage()
  75. .isCompatibility(CompatibilityLevel.CompatibilityEnum.NONE);
  76. }
  77. @SneakyThrows
  78. @DisplayName("should delete AVRO schema")
  79. @Test
  80. @Order(3)
  81. void deleteSchemaAvro() {
  82. pages.openMainPage()
  83. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  84. pages.schemaRegistry.openSchema(SCHEMA_AVRO_API)
  85. .isOnSchemaViewPage()
  86. .removeSchema()
  87. .isNotVisible(SCHEMA_AVRO_API);
  88. }
  89. @SneakyThrows
  90. @DisplayName("should create JSON schema")
  91. @Test
  92. @Order(4)
  93. void createSchemaJson() {
  94. pages.openMainPage()
  95. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  96. pages.schemaRegistry.clickCreateSchema()
  97. .setSubjectName(SCHEMA_JSON_CREATE)
  98. .setSchemaField(readFileAsString(PATH_JSON_VALUE))
  99. .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.JSON)
  100. .clickSubmit()
  101. .isOnSchemaViewPage();
  102. pages.mainPage
  103. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  104. pages.schemaRegistry.isSchemaVisible(SCHEMA_JSON_CREATE);
  105. }
  106. @SneakyThrows
  107. @DisplayName("should delete JSON schema")
  108. @Test
  109. @Order(5)
  110. void deleteSchemaJson() {
  111. pages.openMainPage()
  112. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  113. pages.schemaRegistry.openSchema(SCHEMA_JSON_API)
  114. .isOnSchemaViewPage()
  115. .removeSchema()
  116. .isNotVisible(SCHEMA_JSON_API);
  117. }
  118. @SneakyThrows
  119. @DisplayName("should create PROTOBUF schema")
  120. @Test
  121. @Order(6)
  122. void createSchemaProtobuf() {
  123. pages.openMainPage()
  124. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  125. pages.schemaRegistry.clickCreateSchema()
  126. .setSubjectName(SCHEMA_PROTOBUF_CREATE)
  127. .setSchemaField(readFileAsString(PATH_PROTOBUF_VALUE))
  128. .selectSchemaTypeFromDropdown(SchemaCreateView.SchemaType.PROTOBUF)
  129. .clickSubmit()
  130. .isOnSchemaViewPage();
  131. pages.mainPage
  132. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  133. pages.schemaRegistry.isSchemaVisible(SCHEMA_PROTOBUF_CREATE);
  134. }
  135. @SneakyThrows
  136. @DisplayName("should delete PROTOBUF schema")
  137. @Test
  138. @Order(7)
  139. void deleteSchemaProtobuf() {
  140. pages.openMainPage()
  141. .goToSideMenu(SECOND_LOCAL, MainPage.SideMenuOptions.SCHEMA_REGISTRY);
  142. pages.schemaRegistry.openSchema(SCHEMA_PROTOBUF_API)
  143. .isOnSchemaViewPage()
  144. .removeSchema()
  145. .isNotVisible(SCHEMA_PROTOBUF_API);
  146. }
  147. }