From 1a5f2b3ef4c0f294cb20325d4cedeea2b8baf074 Mon Sep 17 00:00:00 2001 From: haotao chen Date: Mon, 15 Jul 2024 17:36:59 +0800 Subject: [PATCH 1/3] fix pulsar admin revoke subscription permission endpoint --- pulsaradmin/pkg/admin/namespace.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsaradmin/pkg/admin/namespace.go b/pulsaradmin/pkg/admin/namespace.go index 782ae3ae25..4d9eef47ea 100644 --- a/pulsaradmin/pkg/admin/namespace.go +++ b/pulsaradmin/pkg/admin/namespace.go @@ -750,7 +750,7 @@ func (n *namespaces) GrantSubPermission(namespace utils.NameSpaceName, sName str func (n *namespaces) RevokeSubPermission(namespace utils.NameSpaceName, sName, role string) error { endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "permissions", - "subscription", sName, role) + sName, role) return n.pulsar.Client.Delete(endpoint) } From 4f49fb411ee9bd60be881c9406808dc0f0434746 Mon Sep 17 00:00:00 2001 From: haotao chen Date: Fri, 19 Jul 2024 22:11:40 +0800 Subject: [PATCH 2/3] feat: support get subscription permissions and add test case --- pulsaradmin/pkg/admin/namespace.go | 10 +++++++++ pulsaradmin/pkg/admin/namespace_test.go | 30 +++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/pulsaradmin/pkg/admin/namespace.go b/pulsaradmin/pkg/admin/namespace.go index 4d9eef47ea..efe458eef8 100644 --- a/pulsaradmin/pkg/admin/namespace.go +++ b/pulsaradmin/pkg/admin/namespace.go @@ -200,6 +200,9 @@ type Namespaces interface { // RevokeSubPermission revoke permissions on a subscription's admin-api access RevokeSubPermission(namespace utils.NameSpaceName, sName, role string) error + // GetSubPermissions returns subscription permissions on a namespace + GetSubPermissions(namespace utils.NameSpaceName) (map[string][]string, error) + // SetSubscriptionAuthMode sets the given subscription auth mode on all topics on a namespace SetSubscriptionAuthMode(namespace utils.NameSpaceName, mode utils.SubscriptionAuthMode) error @@ -754,6 +757,13 @@ func (n *namespaces) RevokeSubPermission(namespace utils.NameSpaceName, sName, r return n.pulsar.Client.Delete(endpoint) } +func (n *namespaces) GetSubPermissions(namespace utils.NameSpaceName) (map[string][]string, error) { + endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "permissions", "subscription") + var permissions map[string][]string + err := n.pulsar.Client.Get(endpoint, &permissions) + return permissions, err +} + func (n *namespaces) SetSubscriptionAuthMode(namespace utils.NameSpaceName, mode utils.SubscriptionAuthMode) error { endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "subscriptionAuthMode") return n.pulsar.Client.Post(endpoint, mode.String()) diff --git a/pulsaradmin/pkg/admin/namespace_test.go b/pulsaradmin/pkg/admin/namespace_test.go index f934a96865..75916abc03 100644 --- a/pulsaradmin/pkg/admin/namespace_test.go +++ b/pulsaradmin/pkg/admin/namespace_test.go @@ -18,6 +18,7 @@ package admin import ( + "fmt" "testing" "github.com/apache/pulsar-client-go/pulsaradmin/pkg/admin/config" @@ -173,3 +174,32 @@ func TestGetTopicAutoCreation(t *testing.T) { } assert.Equal(t, expected, *topicAutoCreation) } + +func TestRevokeSubPermission(t *testing.T) { + config := &config.Config{} + admin, err := New(config) + require.NoError(t, err) + require.NotNil(t, admin) + + namespace, err := utils.GetNamespaceName("public/default") + require.NoError(t, err) + require.NotNil(t, namespace) + + sub := "subscription" + roles := []string{"user"} + + // grant subscription permission and get it + err = admin.Namespaces().GrantSubPermission(*namespace, sub, roles) + require.NoError(t, err) + permissions, err := admin.Namespaces().GetSubPermissions(*namespace) + require.NoError(t, err) + fmt.Println(permissions) + assert.Equal(t, roles, permissions[sub]) + + // revoke subscription permission and get it + err = admin.Namespaces().RevokeSubPermission(*namespace, sub, roles[0]) + require.NoError(t, err) + permissions, err = admin.Namespaces().GetSubPermissions(*namespace) + require.NoError(t, err) + assert.Equal(t, 0, len(permissions[sub])) +} From fd5a228f244c458ebbb6f67262a6f2d115c6ecf1 Mon Sep 17 00:00:00 2001 From: haotao chen Date: Fri, 19 Jul 2024 22:13:04 +0800 Subject: [PATCH 3/3] feat: remove fmt package --- pulsaradmin/pkg/admin/namespace_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pulsaradmin/pkg/admin/namespace_test.go b/pulsaradmin/pkg/admin/namespace_test.go index 75916abc03..941f612712 100644 --- a/pulsaradmin/pkg/admin/namespace_test.go +++ b/pulsaradmin/pkg/admin/namespace_test.go @@ -18,7 +18,6 @@ package admin import ( - "fmt" "testing" "github.com/apache/pulsar-client-go/pulsaradmin/pkg/admin/config" @@ -193,7 +192,6 @@ func TestRevokeSubPermission(t *testing.T) { require.NoError(t, err) permissions, err := admin.Namespaces().GetSubPermissions(*namespace) require.NoError(t, err) - fmt.Println(permissions) assert.Equal(t, roles, permissions[sub]) // revoke subscription permission and get it