KafkaConfigSanitizerTest.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.provectus.kafka.ui.service;
  2. import static org.assertj.core.api.Assertions.assertThat;
  3. import java.util.Arrays;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.junit.jupiter.api.Test;
  8. class KafkaConfigSanitizerTest {
  9. @Test
  10. void doNothingIfEnabledPropertySetToFalse() {
  11. final var sanitizer = new KafkaConfigSanitizer(false, List.of());
  12. assertThat(sanitizer.sanitize("password", "secret")).isEqualTo("secret");
  13. assertThat(sanitizer.sanitize("sasl.jaas.config", "secret")).isEqualTo("secret");
  14. assertThat(sanitizer.sanitize("database.password", "secret")).isEqualTo("secret");
  15. }
  16. @Test
  17. void obfuscateCredentials() {
  18. final var sanitizer = new KafkaConfigSanitizer(true, List.of());
  19. assertThat(sanitizer.sanitize("sasl.jaas.config", "secret")).isEqualTo("******");
  20. assertThat(sanitizer.sanitize("consumer.sasl.jaas.config", "secret")).isEqualTo("******");
  21. assertThat(sanitizer.sanitize("producer.sasl.jaas.config", "secret")).isEqualTo("******");
  22. assertThat(sanitizer.sanitize("main.consumer.sasl.jaas.config", "secret")).isEqualTo("******");
  23. assertThat(sanitizer.sanitize("database.password", "secret")).isEqualTo("******");
  24. assertThat(sanitizer.sanitize("basic.auth.user.info", "secret")).isEqualTo("******");
  25. //AWS var sanitizing
  26. assertThat(sanitizer.sanitize("aws.access.key.id", "secret")).isEqualTo("******");
  27. assertThat(sanitizer.sanitize("aws.accessKeyId", "secret")).isEqualTo("******");
  28. assertThat(sanitizer.sanitize("aws.secret.access.key", "secret")).isEqualTo("******");
  29. assertThat(sanitizer.sanitize("aws.secretAccessKey", "secret")).isEqualTo("******");
  30. assertThat(sanitizer.sanitize("aws.sessionToken", "secret")).isEqualTo("******");
  31. }
  32. @Test
  33. void notObfuscateNormalConfigs() {
  34. final var sanitizer = new KafkaConfigSanitizer(true, List.of());
  35. assertThat(sanitizer.sanitize("security.protocol", "SASL_SSL")).isEqualTo("SASL_SSL");
  36. final String[] bootstrapServer = new String[] {"test1:9092", "test2:9092"};
  37. assertThat(sanitizer.sanitize("bootstrap.servers", bootstrapServer)).isEqualTo(bootstrapServer);
  38. }
  39. @Test
  40. void obfuscateCredentialsWithDefinedPatterns() {
  41. final var sanitizer = new KafkaConfigSanitizer(true, Arrays.asList("kafka.ui", ".*test.*"));
  42. assertThat(sanitizer.sanitize("consumer.kafka.ui", "secret")).isEqualTo("******");
  43. assertThat(sanitizer.sanitize("this.is.test.credentials", "secret")).isEqualTo("******");
  44. assertThat(sanitizer.sanitize("this.is.not.credential", "not.credential"))
  45. .isEqualTo("not.credential");
  46. assertThat(sanitizer.sanitize("database.password", "no longer credential"))
  47. .isEqualTo("no longer credential");
  48. }
  49. @Test
  50. void sanitizeConnectorConfigDoNotFailOnNullableValues() {
  51. Map<String, Object> originalConfig = new HashMap<>();
  52. originalConfig.put("password", "secret");
  53. originalConfig.put("asIs", "normal");
  54. originalConfig.put("nullVal", null);
  55. var sanitizedConfig = new KafkaConfigSanitizer(true, List.of())
  56. .sanitizeConnectorConfig(originalConfig);
  57. assertThat(sanitizedConfig)
  58. .hasSize(3)
  59. .containsEntry("password", "******")
  60. .containsEntry("asIs", "normal")
  61. .containsEntry("nullVal", null);
  62. }
  63. }