ReadOnlyModeTests.java 2.5 KB

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