This is an automated email from the ASF dual-hosted git repository.
zixuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git
The following commit(s) were added to refs/heads/master by this push:
new df6a15c8 fix pulsar admin revoke subscription permission endpoint
(#1251)
df6a15c8 is described below
commit df6a15c8548271f521d9615871899bd8d8678ed1
Author: 码斯克 <[email protected]>
AuthorDate: Mon Jul 22 18:37:00 2024 +0800
fix pulsar admin revoke subscription permission endpoint (#1251)
* fix pulsar admin revoke subscription permission endpoint
* feat: support get subscription permissions and add test case
* feat: remove fmt package
---------
Co-authored-by: haotao chen <[email protected]>
---
pulsaradmin/pkg/admin/namespace.go | 12 +++++++++++-
pulsaradmin/pkg/admin/namespace_test.go | 28 ++++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/pulsaradmin/pkg/admin/namespace.go
b/pulsaradmin/pkg/admin/namespace.go
index 782ae3ae..efe458ee 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
@@ -750,10 +753,17 @@ 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)
}
+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 f934a968..941f6127 100644
--- a/pulsaradmin/pkg/admin/namespace_test.go
+++ b/pulsaradmin/pkg/admin/namespace_test.go
@@ -173,3 +173,31 @@ 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)
+ 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]))
+}