You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by GitBox <gi...@apache.org> on 2021/05/29 02:30:11 UTC
[GitHub] [servicecomb-service-center] little-cui commented on a change in pull request #1019: SCB-2176 Fix: targetResource label key not exist should be pass
little-cui commented on a change in pull request #1019:
URL: https://github.com/apache/servicecomb-service-center/pull/1019#discussion_r641875991
##########
File path: server/plugin/auth/buildin/parser_test.go
##########
@@ -49,85 +55,216 @@ func TestGetAPIParseFunc(t *testing.T) {
})
serviceIDB = response.ServiceId
- t.Run("get all services api should return no labels", func(t *testing.T) {
- request, err := http.NewRequest(http.MethodGet, "/v4/default/registry/microservices", nil)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/registry/microservices")(request)
- assert.NoError(t, err)
- assert.Nil(t, labels)
- })
-
- t.Run("create services api without body should return err", func(t *testing.T) {
- reader := strings.NewReader("{}")
-
- request, err := http.NewRequest(http.MethodPost, "/v4/default/registry/microservices", reader)
- assert.NoError(t, err)
-
- _, err = buildin.GetAPIParseFunc("/v4/:project/registry/microservices")(request)
- assert.Error(t, err)
- })
-
- t.Run("create services api with serviceName A should return A", func(t *testing.T) {
- reader := strings.NewReader("{\n \"service\": {\n \"serviceName\": \"A\"\n }\n}")
-
- request, err := http.NewRequest(http.MethodPost, "/v4/default/registry/microservices", reader)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/registry/microservices")(request)
- assert.NoError(t, err)
- assert.Equal(t, 1, len(labels))
- assert.Equal(t, "A", labels[0]["serviceName"])
- })
-
- t.Run("delete 2 services api should return 2 labels", func(t *testing.T) {
- reader := strings.NewReader("{\n \"serviceIds\": [\"" + serviceIDA + "\", \"" + serviceIDB + "\"]\n}")
-
- request, err := http.NewRequest(http.MethodDelete, "/v4/default/registry/microservices", reader)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/registry/microservices")(request)
- assert.NoError(t, err)
- assert.Equal(t, 2, len(labels))
- assert.Equal(t, "A", labels[0]["serviceName"])
- })
-
- t.Run("get service sub resource api should return service labels", func(t *testing.T) {
- request, err := http.NewRequest(http.MethodGet, "/v4/default/registry/microservices/"+serviceIDA+"/instances?:serviceId="+serviceIDA, nil)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/registry/microservices/:serviceId/instances")(request)
- assert.NoError(t, err)
- assert.Equal(t, 1, len(labels))
- assert.Equal(t, "A", labels[0]["serviceName"])
- })
-
- t.Run("discovery A instances api should return service A labels", func(t *testing.T) {
- request, err := http.NewRequest(http.MethodGet, "/v4/default/registry/instances?serviceName=A", nil)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/registry/instances")(request)
- assert.NoError(t, err)
- assert.Equal(t, 1, len(labels))
- assert.Equal(t, "A", labels[0]["serviceName"])
- })
-
- t.Run("govern query A api should return service A labels", func(t *testing.T) {
- request, err := http.NewRequest(http.MethodGet, "/v4/default/govern/microservices?serviceName=A", nil)
- assert.NoError(t, err)
-
- labels, err := buildin.GetAPIParseFunc("/v4/:project/govern/microservices")(request)
- assert.NoError(t, err)
- assert.Equal(t, 1, len(labels))
- assert.Equal(t, "A", labels[0]["serviceName"])
- })
-
- t.Run("govern query all api should return nil labels", func(t *testing.T) {
- request, err := http.NewRequest(http.MethodGet, "/v4/default/govern/microservices", nil)
- assert.NoError(t, err)
+ newRequest := func(method, url string, body string) *http.Request {
+ request, _ := http.NewRequest(method, url, strings.NewReader(body))
+ util.SetRequestContext(request, rest.CtxMatchPattern, url)
+ return request
+ }
+ tests := []struct {
+ name string
+ request *http.Request
+ wantResource *auth.ResourceScope
+ wantErr bool
+ }{
+ {
+ "get all services api should return no labels",
+ newRequest(http.MethodGet, "/v4/:project/registry/microservices", ""),
+ &auth.ResourceScope{
+ Type: "service",
+ Verb: "get",
+ },
+ false,
+ },
+ {
+ "create services api without body should return err",
+ newRequest(http.MethodPost, "/v4/:project/registry/microservices", "{}"),
Review comment:
这个ut主要是对parse的保护,你说的权限校验在server/service/rbac/decision_test.go覆盖了
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org