mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
change active flag in update user to string instead of bool
This commit is contained in:
parent
14972262c0
commit
56eabdc194
2 changed files with 20 additions and 21 deletions
|
@ -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})
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue