From dacc8559440d951d1a4e92020552d56b82bcd292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Wed, 11 Sep 2019 15:46:38 +0200 Subject: [PATCH] Add missing role handle param --- api/system/spec.json | 12 ++++++++++++ api/system/spec/role.json | 12 ++++++++++++ docs/system/README.md | 2 ++ system/rest/request/role.go | 10 ++++++++++ system/rest/role.go | 8 +++++--- tests/system/role_test.go | 4 ++++ 6 files changed, 45 insertions(+), 3 deletions(-) diff --git a/api/system/spec.json b/api/system/spec.json index 2e28d51a0..07f017cac 100644 --- a/api/system/spec.json +++ b/api/system/spec.json @@ -465,6 +465,12 @@ "required": true, "title": "Name of Role" }, + { + "type": "string", + "name": "handle", + "required": true, + "title": "Handle for Role" + }, { "type": "[]string", "name": "members", @@ -495,6 +501,12 @@ "required": false, "title": "Name of Role" }, + { + "type": "string", + "name": "handle", + "required": false, + "title": "Handle for Role" + }, { "type": "[]string", "name": "members", diff --git a/api/system/spec/role.json b/api/system/spec/role.json index e09e1de6f..29baaddf7 100644 --- a/api/system/spec/role.json +++ b/api/system/spec/role.json @@ -40,6 +40,12 @@ "title": "Name of Role", "type": "string" }, + { + "name": "handle", + "required": true, + "title": "Handle for Role", + "type": "string" + }, { "name": "members", "required": false, @@ -70,6 +76,12 @@ "title": "Name of Role", "type": "string" }, + { + "name": "handle", + "required": false, + "title": "Handle for Role", + "type": "string" + }, { "name": "members", "required": false, diff --git a/docs/system/README.md b/docs/system/README.md index 6989a03d2..628ee7729 100644 --- a/docs/system/README.md +++ b/docs/system/README.md @@ -734,6 +734,7 @@ An organisation may have many roles. Roles may have many channels available. Acc | Parameter | Type | Method | Description | Default | Required? | | --------- | ---- | ------ | ----------- | ------- | --------- | | name | string | POST | Name of Role | N/A | YES | +| handle | string | POST | Handle for Role | N/A | YES | | members | []string | POST | Role member IDs | N/A | NO | ## Update role details @@ -750,6 +751,7 @@ An organisation may have many roles. Roles may have many channels available. Acc | --------- | ---- | ------ | ----------- | ------- | --------- | | roleID | uint64 | PATH | Role ID | N/A | YES | | name | string | POST | Name of Role | N/A | NO | +| handle | string | POST | Handle for Role | N/A | NO | | members | []string | POST | Role member IDs | N/A | NO | ## Read role details and memberships diff --git a/system/rest/request/role.go b/system/rest/request/role.go index a1c4ed88e..acf43221f 100644 --- a/system/rest/request/role.go +++ b/system/rest/request/role.go @@ -86,6 +86,7 @@ var _ RequestFiller = NewRoleList() // Role create request parameters type RoleCreate struct { Name string + Handle string Members []string } @@ -97,6 +98,7 @@ func (r RoleCreate) Auditable() map[string]interface{} { var out = map[string]interface{}{} out["name"] = r.Name + out["handle"] = r.Handle out["members"] = r.Members return out @@ -132,6 +134,9 @@ func (r *RoleCreate) Fill(req *http.Request) (err error) { if val, ok := post["name"]; ok { r.Name = val } + if val, ok := post["handle"]; ok { + r.Handle = val + } if val, ok := req.Form["members"]; ok { r.Members = parseStrings(val) @@ -146,6 +151,7 @@ var _ RequestFiller = NewRoleCreate() type RoleUpdate struct { RoleID uint64 `json:",string"` Name string + Handle string Members []string } @@ -158,6 +164,7 @@ func (r RoleUpdate) Auditable() map[string]interface{} { out["roleID"] = r.RoleID out["name"] = r.Name + out["handle"] = r.Handle out["members"] = r.Members return out @@ -194,6 +201,9 @@ func (r *RoleUpdate) Fill(req *http.Request) (err error) { if val, ok := post["name"]; ok { r.Name = val } + if val, ok := post["handle"]; ok { + r.Handle = val + } if val, ok := req.Form["members"]; ok { r.Members = parseStrings(val) diff --git a/system/rest/role.go b/system/rest/role.go index 91793e508..dfbfcfa8b 100644 --- a/system/rest/role.go +++ b/system/rest/role.go @@ -38,7 +38,8 @@ func (ctrl *Role) List(ctx context.Context, r *request.RoleList) (interface{}, e func (ctrl *Role) Create(ctx context.Context, r *request.RoleCreate) (interface{}, error) { role := &types.Role{ - Name: r.Name, + Name: r.Name, + Handle: r.Handle, } role, err := ctrl.svc.role.With(ctx).Create(role) @@ -57,8 +58,9 @@ func (ctrl *Role) Create(ctx context.Context, r *request.RoleCreate) (interface{ func (ctrl *Role) Update(ctx context.Context, r *request.RoleUpdate) (interface{}, error) { role := &types.Role{ - ID: r.RoleID, - Name: r.Name, + ID: r.RoleID, + Name: r.Name, + Handle: r.Handle, } role, err := ctrl.svc.role.With(ctx).Update(role) diff --git a/tests/system/role_test.go b/tests/system/role_test.go index 7909e6ee3..8839dfb52 100644 --- a/tests/system/role_test.go +++ b/tests/system/role_test.go @@ -75,6 +75,7 @@ func TestRoleCreate(t *testing.T) { h.apiInit(). Post("/roles/"). FormData("name", string(rand.Bytes(10))). + FormData("handle", string(rand.Bytes(10))). Expect(t). Status(http.StatusOK). Assert(helpers.AssertNoErrors). @@ -100,10 +101,12 @@ func TestRoleUpdate(t *testing.T) { h.allow(types.RolePermissionResource.AppendWildcard(), "update") newName := "updated-" + string(rand.Bytes(10)) + newHandle := "updated-" + string(rand.Bytes(10)) h.apiInit(). Put(fmt.Sprintf("/roles/%d", u.ID)). FormData("name", newName). + FormData("handle", newHandle). Expect(t). Status(http.StatusOK). Assert(helpers.AssertNoErrors). @@ -113,6 +116,7 @@ func TestRoleUpdate(t *testing.T) { h.a.NoError(err) h.a.NotNil(u) h.a.Equal(newName, u.Name) + h.a.Equal(newHandle, u.Handle) } func TestRoleDeleteForbidden(t *testing.T) {