This is an automated email from the ASF dual-hosted git repository.

littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new c724993  SCB-2176 Standardize RBAC APIs (#983)
c724993 is described below

commit c72499314a8b6ff73c91030caa6ae6ccf594e5cf
Author: little-cui <[email protected]>
AuthorDate: Wed May 19 17:29:04 2021 +0800

    SCB-2176 Standardize RBAC APIs (#983)
---
 server/plugin/auth/buildin/buidlin_test.go |  8 +++----
 server/resource/v4/auth_resource.go        | 10 ++++-----
 server/resource/v4/rbac_resource_test.go   | 36 +++++++++++++++---------------
 server/resource/v4/role_resource.go        | 10 ++++-----
 server/service/rbac/resource.go            |  4 ++--
 5 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/server/plugin/auth/buildin/buidlin_test.go 
b/server/plugin/auth/buildin/buidlin_test.go
index 063ab3f..b68bf9e 100644
--- a/server/plugin/auth/buildin/buidlin_test.go
+++ b/server/plugin/auth/buildin/buidlin_test.go
@@ -95,7 +95,7 @@ func TestTokenAuthenticator_Identify(t *testing.T) {
                assert.Error(t, err)
        })
        t.Run("valid admin token, should be able to get account", func(t 
*testing.T) {
-               r := httptest.NewRequest(http.MethodGet, "/v4/account", nil)
+               r := httptest.NewRequest(http.MethodGet, "/v4/accounts", nil)
                to, err := authr.Login(context.TODO(), "root", 
"Complicated_password1")
                assert.NoError(t, err)
                r.Header.Set(restful.HeaderAuth, "Bear "+to)
@@ -105,7 +105,7 @@ func TestTokenAuthenticator_Identify(t *testing.T) {
        t.Run("valid normal token, should no be able to get account", func(t 
*testing.T) {
                err := dao.CreateAccount(context.TODO(), 
&rbacmodel.Account{Name: "non-admin", Password: "Complicated_password1"})
                assert.NoError(t, err)
-               r := httptest.NewRequest(http.MethodGet, "/v4/account", nil)
+               r := httptest.NewRequest(http.MethodGet, "/v4/accounts", nil)
                to, err := authr.Login(context.TODO(), "non-admin", 
"Complicated_password1")
                assert.NoError(t, err)
                r.Header.Set(restful.HeaderAuth, "Bear "+to)
@@ -114,7 +114,7 @@ func TestTokenAuthenticator_Identify(t *testing.T) {
                assert.Error(t, err)
        })
        t.Run("valid normal token, should no be able to delete account", func(t 
*testing.T) {
-               r := httptest.NewRequest(http.MethodDelete, "/v4/account", nil)
+               r := httptest.NewRequest(http.MethodDelete, "/v4/accounts", nil)
                v := r.URL.Query()
                v.Set(":name", "non-admin")
                to, err := authr.Login(context.TODO(), "non-admin", 
"Complicated_password1")
@@ -125,7 +125,7 @@ func TestTokenAuthenticator_Identify(t *testing.T) {
                assert.Error(t, err)
        })
        t.Run("valid admin token, should be able to delete account", func(t 
*testing.T) {
-               r := httptest.NewRequest(http.MethodDelete, 
"/v4/account/:name", nil)
+               r := httptest.NewRequest(http.MethodDelete, 
"/v4/accounts/:name", nil)
                v := r.URL.Query()
                v.Set(":name", "admin")
                to, err := authr.Login(context.TODO(), "root", 
"Complicated_password1")
diff --git a/server/resource/v4/auth_resource.go 
b/server/resource/v4/auth_resource.go
index c89b363..ab54e1f 100644
--- a/server/resource/v4/auth_resource.go
+++ b/server/resource/v4/auth_resource.go
@@ -45,11 +45,11 @@ type AuthResource struct {
 func (r *AuthResource) URLPatterns() []rest.Route {
        return []rest.Route{
                {Method: http.MethodPost, Path: "/v4/token", Func: r.Login},
-               {Method: http.MethodPost, Path: "/v4/account", Func: 
r.CreateAccount},
-               {Method: http.MethodGet, Path: "/v4/account", Func: 
r.ListAccount},
-               {Method: http.MethodGet, Path: "/v4/account/:name", Func: 
r.GetAccount},
-               {Method: http.MethodDelete, Path: "/v4/account/:name", Func: 
r.DeleteAccount},
-               {Method: http.MethodPost, Path: "/v4/account/:name/password", 
Func: r.ChangePassword},
+               {Method: http.MethodPost, Path: "/v4/accounts", Func: 
r.CreateAccount},
+               {Method: http.MethodGet, Path: "/v4/accounts", Func: 
r.ListAccount},
+               {Method: http.MethodGet, Path: "/v4/accounts/:name", Func: 
r.GetAccount},
+               {Method: http.MethodDelete, Path: "/v4/accounts/:name", Func: 
r.DeleteAccount},
+               {Method: http.MethodPost, Path: "/v4/accounts/:name/password", 
Func: r.ChangePassword},
        }
 }
 func (r *AuthResource) CreateAccount(w http.ResponseWriter, req *http.Request) 
{
diff --git a/server/resource/v4/rbac_resource_test.go 
b/server/resource/v4/rbac_resource_test.go
index 0668ac6..6a6bace 100644
--- a/server/resource/v4/rbac_resource_test.go
+++ b/server/resource/v4/rbac_resource_test.go
@@ -117,7 +117,7 @@ func TestAuthResource_Login(t *testing.T) {
        t.Run("create dev_account", func(t *testing.T) {
                b, _ := json.Marshal(&rbacmodel.Account{Name: "dev_account", 
Password: "Complicated_password1", Roles: []string{"developer"}})
 
-               r, _ := http.NewRequest(http.MethodPost, "/v4/account", 
bytes.NewBuffer(b))
+               r, _ := http.NewRequest(http.MethodPost, "/v4/accounts", 
bytes.NewBuffer(b))
                r.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w, r)
@@ -133,7 +133,7 @@ func TestAuthResource_Login(t *testing.T) {
                assert.Equal(t, http.StatusOK, w.Code)
 
                b2, _ := json.Marshal(&rbacmodel.Account{Name: "dev_account", 
CurrentPassword: "Complicated_password1", Password: "Complicated_password2"})
-               r2, _ := http.NewRequest(http.MethodPost, 
"/v4/account/dev_account/password", bytes.NewBuffer(b2))
+               r2, _ := http.NewRequest(http.MethodPost, 
"/v4/accounts/dev_account/password", bytes.NewBuffer(b2))
                r2.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
@@ -158,7 +158,7 @@ func TestAuthResource_DeleteAccount(t *testing.T) {
                devTo := &rbacmodel.Token{}
                json.Unmarshal(w.Body.Bytes(), devTo)
 
-               r2, _ := http.NewRequest(http.MethodDelete, 
"/v4/account/dev_account", nil)
+               r2, _ := http.NewRequest(http.MethodDelete, 
"/v4/accounts/dev_account", nil)
                r2.Header.Set(restful.HeaderAuth, "Bearer "+devTo.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
@@ -174,13 +174,13 @@ func TestAuthResource_DeleteAccount(t *testing.T) {
                json.Unmarshal(w.Body.Bytes(), to)
 
                b, _ = json.Marshal(&rbacmodel.Account{Name: "delete_account", 
Password: "Complicated_password1"})
-               r2, _ := http.NewRequest(http.MethodPost, "/v4/account", 
bytes.NewBuffer(b))
+               r2, _ := http.NewRequest(http.MethodPost, "/v4/accounts", 
bytes.NewBuffer(b))
                r2.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
                assert.Equal(t, http.StatusOK, w2.Code)
 
-               r3, _ := http.NewRequest(http.MethodDelete, 
"/v4/account/delete_account", nil)
+               r3, _ := http.NewRequest(http.MethodDelete, 
"/v4/accounts/delete_account", nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -197,7 +197,7 @@ func TestAuthResource_GetAccount(t *testing.T) {
                to := &rbacmodel.Token{}
                json.Unmarshal(w.Body.Bytes(), to)
 
-               r3, _ := http.NewRequest(http.MethodGet, 
"/v4/account/dev_account", nil)
+               r3, _ := http.NewRequest(http.MethodGet, 
"/v4/accounts/dev_account", nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -218,7 +218,7 @@ func TestAuthResource_GetAccount(t *testing.T) {
                to := &rbacmodel.Token{}
                json.Unmarshal(w.Body.Bytes(), to)
 
-               r3, _ := http.NewRequest(http.MethodGet, "/v4/account", nil)
+               r3, _ := http.NewRequest(http.MethodGet, "/v4/accounts", nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -248,7 +248,7 @@ func TestAuthResource_GetAccount(t *testing.T) {
                json.Unmarshal(w.Body.Bytes(), to)
 
                time.Sleep(11 * time.Second)
-               r3, _ := http.NewRequest(http.MethodGet, "/v4/account", nil)
+               r3, _ := http.NewRequest(http.MethodGet, "/v4/accounts", nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -277,7 +277,7 @@ func TestRoleResource_CreateOrUpdateRole(t *testing.T) {
        t.Run("create account dev_test and add a role", func(t *testing.T) {
                b, _ := json.Marshal(&rbacmodel.Account{Name: "dev_test", 
Password: "Complicated_password3", Roles: []string{"tester"}})
 
-               r, _ := http.NewRequest(http.MethodPost, "/v4/account", 
bytes.NewBuffer(b))
+               r, _ := http.NewRequest(http.MethodPost, "/v4/accounts", 
bytes.NewBuffer(b))
                r.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w, r)
@@ -304,13 +304,13 @@ func TestRoleResource_CreateOrUpdateRole(t *testing.T) {
                        },
                })
 
-               r2, _ := http.NewRequest(http.MethodPost, "/v4/role", 
bytes.NewReader(b2))
+               r2, _ := http.NewRequest(http.MethodPost, "/v4/roles", 
bytes.NewReader(b2))
                r2.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
                assert.Equal(t, http.StatusOK, w2.Code)
 
-               r3, _ := http.NewRequest(http.MethodGet, "/v4/role", nil)
+               r3, _ := http.NewRequest(http.MethodGet, "/v4/roles", nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -325,7 +325,7 @@ func TestRoleResource_CreateOrUpdateRole(t *testing.T) {
                                },
                        },
                })
-               r4, _ := http.NewRequest(http.MethodPut, "/v4/role/tester", 
bytes.NewReader(b4))
+               r4, _ := http.NewRequest(http.MethodPut, "/v4/roles/tester", 
bytes.NewReader(b4))
                r4.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w4 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w4, r4)
@@ -342,13 +342,13 @@ func TestRoleResource_CreateOrUpdateRole(t *testing.T) {
                to := &rbacmodel.Token{}
                json.Unmarshal(w.Body.Bytes(), to)
 
-               r2, _ := http.NewRequest(http.MethodGet, "/v4/role/admin", nil)
+               r2, _ := http.NewRequest(http.MethodGet, "/v4/roles/admin", nil)
                r2.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
                assert.Equal(t, http.StatusOK, w2.Code)
 
-               r3, _ := http.NewRequest(http.MethodDelete, "/v4/role/admin", 
nil)
+               r3, _ := http.NewRequest(http.MethodDelete, "/v4/roles/admin", 
nil)
                r3.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w3 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w3, r3)
@@ -387,7 +387,7 @@ func TestRoleResource_MoreRoles(t *testing.T) {
                        },
                })
 
-               r, _ := http.NewRequest(http.MethodPost, "/v4/role", 
bytes.NewReader(b))
+               r, _ := http.NewRequest(http.MethodPost, "/v4/roles", 
bytes.NewReader(b))
                r.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w, r)
@@ -405,13 +405,13 @@ func TestRoleResource_MoreRoles(t *testing.T) {
                        },
                })
 
-               r, _ := http.NewRequest(http.MethodPost, "/v4/role", 
bytes.NewReader(b))
+               r, _ := http.NewRequest(http.MethodPost, "/v4/roles", 
bytes.NewReader(b))
                r.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w, r)
                assert.Equal(t, http.StatusOK, w.Code)
 
-               r2, _ := http.NewRequest(http.MethodGet, "/v4/role", nil)
+               r2, _ := http.NewRequest(http.MethodGet, "/v4/roles", nil)
                r2.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w2 := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w2, r2)
@@ -421,7 +421,7 @@ func TestRoleResource_MoreRoles(t *testing.T) {
        t.Run("account dev_test2 support more than 1 role ", func(t *testing.T) 
{
                b, _ := json.Marshal(&rbacmodel.Account{Name: "dev_test2", 
Password: "Complicated_password3", Roles: []string{"tester", "tester2"}})
 
-               r, _ := http.NewRequest(http.MethodPost, "/v4/account", 
bytes.NewBuffer(b))
+               r, _ := http.NewRequest(http.MethodPost, "/v4/accounts", 
bytes.NewBuffer(b))
                r.Header.Set(restful.HeaderAuth, "Bearer "+to.TokenStr)
                w := httptest.NewRecorder()
                rest.GetRouter().ServeHTTP(w, r)
diff --git a/server/resource/v4/role_resource.go 
b/server/resource/v4/role_resource.go
index fe12d30..57e6867 100644
--- a/server/resource/v4/role_resource.go
+++ b/server/resource/v4/role_resource.go
@@ -42,11 +42,11 @@ type RoleResource struct {
 //URLPatterns define http pattern
 func (r *RoleResource) URLPatterns() []rest.Route {
        return []rest.Route{
-               {Method: http.MethodGet, Path: "/v4/role", Func: 
r.GetRolePermission},
-               {Method: http.MethodPost, Path: "/v4/role", Func: 
r.CreateRolePermission},
-               {Method: http.MethodPut, Path: "/v4/role/:roleName", Func: 
r.UpdateRolePermission},
-               {Method: http.MethodGet, Path: "/v4/role/:roleName", Func: 
r.GetRole},
-               {Method: http.MethodDelete, Path: "/v4/role/:roleName", Func: 
r.DeleteRole},
+               {Method: http.MethodGet, Path: "/v4/roles", Func: 
r.GetRolePermission},
+               {Method: http.MethodPost, Path: "/v4/roles", Func: 
r.CreateRolePermission},
+               {Method: http.MethodPut, Path: "/v4/roles/:roleName", Func: 
r.UpdateRolePermission},
+               {Method: http.MethodGet, Path: "/v4/roles/:roleName", Func: 
r.GetRole},
+               {Method: http.MethodDelete, Path: "/v4/roles/:roleName", Func: 
r.DeleteRole},
        }
 }
 
diff --git a/server/service/rbac/resource.go b/server/service/rbac/resource.go
index 6671a37..8043ffc 100644
--- a/server/service/rbac/resource.go
+++ b/server/service/rbac/resource.go
@@ -33,9 +33,9 @@ const (
 var (
        APITokenGranter = "/v4/token"
 
-       APIAccountList = "/v4/account"
+       APIAccountList = "/v4/accounts"
 
-       APIRoleList = "/v4/role"
+       APIRoleList = "/v4/roles"
 
        APIOps = "/v4/:project/admin"
 

Reply via email to