From 72e248afe62ccdf32b285f8e682693d0062511a3 Mon Sep 17 00:00:00 2001 From: mattisonchao <74767115+mattisonchao@users.noreply.github.com> Date: Mon, 31 Aug 2026 14:13:47 +0800 Subject: [PATCH] [test][broker] Add shared topic permission regression test --- .../OneWayReplicatorUsingGlobalZKTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/OneWayReplicatorUsingGlobalZKTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/OneWayReplicatorUsingGlobalZKTest.java index 1d19f361e9b66..bcd31459c6cc8 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/OneWayReplicatorUsingGlobalZKTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/OneWayReplicatorUsingGlobalZKTest.java @@ -20,6 +20,7 @@ import static org.apache.pulsar.broker.service.TopicPoliciesService.GetType.GLOBAL_ONLY; import static org.apache.pulsar.broker.service.TopicPoliciesService.GetType.LOCAL_ONLY; +import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; @@ -28,6 +29,7 @@ import java.time.Duration; import java.util.Arrays; import java.util.Collections; +import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -51,6 +53,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; +import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride; @@ -120,6 +123,27 @@ public void testReplicatorCreateTopic(boolean isPartitioned) throws Exception { super.testReplicatorCreateTopic(isPartitioned); } + @Test + public void testDeletingTopicOnOneClusterKeepsSharedTopicPermissions() throws Exception { + String topic = BrokerTestUtil.newUniqueName("persistent://" + replicatedNamespace + "/topic-permissions-"); + String role = "test-role"; + Set permissions = EnumSet.of(AuthAction.produce, AuthAction.consume); + + admin1.topics().createNonPartitionedTopic(topic); + admin2.topics().createNonPartitionedTopic(topic); + try { + admin2.topics().grantPermission(topic, role, permissions); + assertThat(admin1.topics().getPermissions(topic)).containsEntry(role, permissions); + + admin2.topics().delete(topic, true); + + assertThat(admin1.topics().getStats(topic)).isNotNull(); + assertThat(admin1.topics().getPermissions(topic)).containsEntry(role, permissions); + } finally { + admin1.topics().delete(topic, true); + } + } + @Override @Test public void testDeleteRemoteTopicByGlobalPolicy() throws Exception {