change active flag in update user to string instead of bool

This commit is contained in:
Sonja Happ 2019-09-17 17:19:21 +02:00
parent 14972262c0
commit 56eabdc194
2 changed files with 20 additions and 21 deletions

View file

@ -25,7 +25,7 @@ type UserRequest struct {
Password string `json:"password,omitempty"`
Mail string `json:"mail,omitempty"`
Role string `json:"role,omitempty"`
Active bool `json:"active,omitempty"`
Active string `json:"active,omitempty"`
}
func TestMain(m *testing.M) {
@ -391,14 +391,14 @@ func TestModifyAddedUserAsUser(t *testing.T) {
// try to modify active state of user
// should result in forbidden
modActiveState := UserRequest{Active: false}
modActiveState := UserRequest{Active: "no"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT", helper.KeyModels{"user": modActiveState})
assert.NoError(t, err)
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's own name
modRequest := UserRequest{Username: "myNewName", Active: true}
modRequest := UserRequest{Username: "myNewName"}
newUser.Username = modRequest.Username
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -409,7 +409,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// modify Admin's name (ILLEGAL)
modRequest = UserRequest{Username: "myNewName", Active: true}
modRequest = UserRequest{Username: "myNewName"}
newUser.Username = modRequest.Username
code, resp, err = helper.TestEndpoint(router, token,
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
@ -417,7 +417,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's own email
modRequest = UserRequest{Mail: "my@new.email", Active: true}
modRequest = UserRequest{Mail: "my@new.email"}
newUser.Mail = modRequest.Mail
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -428,7 +428,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// modify Admin's own email (ILLEGAL)
modRequest = UserRequest{Mail: "my@new.email", Active: true}
modRequest = UserRequest{Mail: "my@new.email"}
newUser.Mail = modRequest.Mail
code, resp, err = helper.TestEndpoint(router, token,
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
@ -436,7 +436,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's role (ILLEGAL)
modRequest = UserRequest{Role: "Admin", Active: true}
modRequest = UserRequest{Role: "Admin"}
newUser.Role = modRequest.Role
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -445,7 +445,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's password
modRequest = UserRequest{Password: "5tr0ng_pw!", Active: true}
modRequest = UserRequest{Password: "5tr0ng_pw!"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
helper.KeyModels{"user": modRequest})
@ -461,7 +461,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// modify Admin's password (ILLEGAL)
modRequest = UserRequest{Password: "4dm1ns_pw!", Active: true}
modRequest = UserRequest{Password: "4dm1ns_pw!"}
code, resp, err = helper.TestEndpoint(router, token,
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
assert.NoError(t, err)
@ -496,7 +496,7 @@ func TestInvalidUserUpdate(t *testing.T) {
// try PUT with userID that does not exist
// should result in not found
modRequest := UserRequest{Password: "longenough", Active: true}
modRequest := UserRequest{Password: "longenough"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID+1), "PUT",
helper.KeyModels{"user": modRequest})
@ -522,7 +522,7 @@ func TestInvalidUserUpdate(t *testing.T) {
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
// modify newUser's email with INVALID email
modRequest = UserRequest{Mail: "notEmail", Active: true}
modRequest = UserRequest{Mail: "notEmail"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
helper.KeyModels{"user": modRequest})
@ -530,7 +530,7 @@ func TestInvalidUserUpdate(t *testing.T) {
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
// modify newUser's role with INVALID role
modRequest = UserRequest{Role: "noRole", Active: true}
modRequest = UserRequest{Role: "noRole"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
helper.KeyModels{"user": modRequest})
@ -572,7 +572,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
newUser.Password = ""
// modify newUser's name
modRequest := UserRequest{Username: "NewUsername", Active: true}
modRequest := UserRequest{Username: "NewUsername"}
newUser.Username = modRequest.Username
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -583,7 +583,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's email
modRequest = UserRequest{Mail: "new@e.mail", Active: true}
modRequest = UserRequest{Mail: "new@e.mail"}
newUser.Mail = modRequest.Mail
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -594,7 +594,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's role
modRequest = UserRequest{Role: "Admin", Active: true}
modRequest = UserRequest{Role: "Admin"}
newUser.Role = modRequest.Role
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -605,7 +605,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's password
modRequest = UserRequest{Password: "4_g00d_pw!", Active: true}
modRequest = UserRequest{Password: "4_g00d_pw!"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
helper.KeyModels{"user": modRequest})
@ -626,7 +626,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's Active status
modRequest = UserRequest{Active: false}
modRequest = UserRequest{Active: "no"}
code, resp, err = helper.TestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
helper.KeyModels{"user": modRequest})

View file

@ -2,7 +2,6 @@ package user
import (
"fmt"
"gopkg.in/go-playground/validator.v9"
)
@ -18,7 +17,7 @@ type validUpdatedRequest struct {
Password string `form:"Password" validate:"omitempty,min=6"`
Role string `form:"Role" validate:"omitempty,oneof=Admin User Guest"`
Mail string `form:"Mail" validate:"omitempty,email"`
Active bool `form:"Active" validate:"omitempty"`
Active string `form:"Active" validate:"omitempty,oneof=yes no"`
}
type updateUserRequest struct {
@ -64,11 +63,11 @@ func (r *updateUserRequest) updatedUser(role interface{},
}
// Only the Admin must be able to update users Active state
if r.Active != u.Active {
if (r.Active == "yes" && u.Active == false) || (r.Active == "no" && u.Active == true) {
if role != "Admin" {
return u, fmt.Errorf("Only Admin can update user's Active state")
} else {
u.Active = r.Active
u.Active = !u.Active
}
}