ReadOnlyModeTests.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.provectus.kafka.ui;
  2. import com.provectus.kafka.ui.model.TopicFormData;
  3. import lombok.extern.log4j.Log4j2;
  4. import org.junit.jupiter.api.Test;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
  7. import org.springframework.http.HttpStatus;
  8. import org.springframework.test.context.ContextConfiguration;
  9. import org.springframework.test.web.reactive.server.WebTestClient;
  10. import java.util.Map;
  11. import java.util.UUID;
  12. @ContextConfiguration(initializers = {AbstractBaseTest.Initializer.class})
  13. @Log4j2
  14. @AutoConfigureWebTestClient(timeout = "60000")
  15. public class ReadOnlyModeTests extends AbstractBaseTest {
  16. @Autowired
  17. private WebTestClient webTestClient;
  18. @Test
  19. public void shouldCreateTopicForNonReadonlyCluster() {
  20. var topicName = UUID.randomUUID().toString();
  21. webTestClient.post()
  22. .uri("/api/clusters/{clusterName}/topics", LOCAL)
  23. .bodyValue(new TopicFormData()
  24. .name(topicName)
  25. .partitions(1)
  26. .replicationFactor(1)
  27. .configs(Map.of())
  28. )
  29. .exchange()
  30. .expectStatus()
  31. .isOk();
  32. }
  33. @Test
  34. public void shouldNotCreateTopicForReadonlyCluster() {
  35. var topicName = UUID.randomUUID().toString();
  36. webTestClient.post()
  37. .uri("/api/clusters/{clusterName}/topics", SECOND_LOCAL)
  38. .bodyValue(new TopicFormData()
  39. .name(topicName)
  40. .partitions(1)
  41. .replicationFactor(1)
  42. .configs(Map.of())
  43. )
  44. .exchange()
  45. .expectStatus()
  46. .isEqualTo(HttpStatus.METHOD_NOT_ALLOWED);
  47. }
  48. @Test
  49. public void shouldUpdateTopicForNonReadonlyCluster() {
  50. var topicName = UUID.randomUUID().toString();
  51. webTestClient.post()
  52. .uri("/api/clusters/{clusterName}/topics", LOCAL)
  53. .bodyValue(new TopicFormData()
  54. .name(topicName)
  55. .partitions(1)
  56. .replicationFactor(1)
  57. .configs(Map.of())
  58. )
  59. .exchange()
  60. .expectStatus()
  61. .isOk();
  62. webTestClient.patch()
  63. .uri("/api/clusters/{clusterName}/topics/{topicName}", LOCAL, topicName)
  64. .bodyValue(new TopicFormData()
  65. .name(topicName)
  66. .partitions(2)
  67. .replicationFactor(1)
  68. .configs(Map.of())
  69. )
  70. .exchange()
  71. .expectStatus()
  72. .isOk();
  73. }
  74. @Test
  75. public void shouldNotUpdateTopicForReadonlyCluster() {
  76. var topicName = UUID.randomUUID().toString();
  77. webTestClient.patch()
  78. .uri("/api/clusters/{clusterName}/topics/{topicName}", SECOND_LOCAL, topicName)
  79. .bodyValue(new TopicFormData()
  80. .name(topicName)
  81. .partitions(1)
  82. .replicationFactor(1)
  83. .configs(Map.of())
  84. )
  85. .exchange()
  86. .expectStatus()
  87. .isEqualTo(HttpStatus.METHOD_NOT_ALLOWED);
  88. }
  89. }