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"`
|
Password string `json:"password,omitempty"`
|
||||||
Mail string `json:"mail,omitempty"`
|
Mail string `json:"mail,omitempty"`
|
||||||
Role string `json:"role,omitempty"`
|
Role string `json:"role,omitempty"`
|
||||||
Active bool `json:"active,omitempty"`
|
Active string `json:"active,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
|
@ -391,14 +391,14 @@ func TestModifyAddedUserAsUser(t *testing.T) {
|
||||||
|
|
||||||
// try to modify active state of user
|
// try to modify active state of user
|
||||||
// should result in forbidden
|
// should result in forbidden
|
||||||
modActiveState := UserRequest{Active: false}
|
modActiveState := UserRequest{Active: "no"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT", helper.KeyModels{"user": modActiveState})
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT", helper.KeyModels{"user": modActiveState})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's own name
|
// modify newUser's own name
|
||||||
modRequest := UserRequest{Username: "myNewName", Active: true}
|
modRequest := UserRequest{Username: "myNewName"}
|
||||||
newUser.Username = modRequest.Username
|
newUser.Username = modRequest.Username
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
|
@ -409,7 +409,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify Admin's name (ILLEGAL)
|
// modify Admin's name (ILLEGAL)
|
||||||
modRequest = UserRequest{Username: "myNewName", Active: true}
|
modRequest = UserRequest{Username: "myNewName"}
|
||||||
newUser.Username = modRequest.Username
|
newUser.Username = modRequest.Username
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
|
"/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)
|
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's own email
|
// modify newUser's own email
|
||||||
modRequest = UserRequest{Mail: "my@new.email", Active: true}
|
modRequest = UserRequest{Mail: "my@new.email"}
|
||||||
newUser.Mail = modRequest.Mail
|
newUser.Mail = modRequest.Mail
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
|
@ -428,7 +428,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify Admin's own email (ILLEGAL)
|
// modify Admin's own email (ILLEGAL)
|
||||||
modRequest = UserRequest{Mail: "my@new.email", Active: true}
|
modRequest = UserRequest{Mail: "my@new.email"}
|
||||||
newUser.Mail = modRequest.Mail
|
newUser.Mail = modRequest.Mail
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
|
"/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)
|
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's role (ILLEGAL)
|
// modify newUser's role (ILLEGAL)
|
||||||
modRequest = UserRequest{Role: "Admin", Active: true}
|
modRequest = UserRequest{Role: "Admin"}
|
||||||
newUser.Role = modRequest.Role
|
newUser.Role = modRequest.Role
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
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)
|
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's password
|
// modify newUser's password
|
||||||
modRequest = UserRequest{Password: "5tr0ng_pw!", Active: true}
|
modRequest = UserRequest{Password: "5tr0ng_pw!"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
@ -461,7 +461,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify Admin's password (ILLEGAL)
|
// modify Admin's password (ILLEGAL)
|
||||||
modRequest = UserRequest{Password: "4dm1ns_pw!", Active: true}
|
modRequest = UserRequest{Password: "4dm1ns_pw!"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
|
"/api/users/1", "PUT", helper.KeyModels{"user": modRequest})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
@ -496,7 +496,7 @@ func TestInvalidUserUpdate(t *testing.T) {
|
||||||
|
|
||||||
// try PUT with userID that does not exist
|
// try PUT with userID that does not exist
|
||||||
// should result in not found
|
// should result in not found
|
||||||
modRequest := UserRequest{Password: "longenough", Active: true}
|
modRequest := UserRequest{Password: "longenough"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID+1), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID+1), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
@ -522,7 +522,7 @@ func TestInvalidUserUpdate(t *testing.T) {
|
||||||
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's email with INVALID email
|
// modify newUser's email with INVALID email
|
||||||
modRequest = UserRequest{Mail: "notEmail", Active: true}
|
modRequest = UserRequest{Mail: "notEmail"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
@ -530,7 +530,7 @@ func TestInvalidUserUpdate(t *testing.T) {
|
||||||
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
|
assert.Equalf(t, 400, code, "Response body: \n%v\n", resp)
|
||||||
|
|
||||||
// modify newUser's role with INVALID role
|
// modify newUser's role with INVALID role
|
||||||
modRequest = UserRequest{Role: "noRole", Active: true}
|
modRequest = UserRequest{Role: "noRole"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
@ -572,7 +572,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
|
||||||
newUser.Password = ""
|
newUser.Password = ""
|
||||||
|
|
||||||
// modify newUser's name
|
// modify newUser's name
|
||||||
modRequest := UserRequest{Username: "NewUsername", Active: true}
|
modRequest := UserRequest{Username: "NewUsername"}
|
||||||
newUser.Username = modRequest.Username
|
newUser.Username = modRequest.Username
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
|
@ -583,7 +583,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify newUser's email
|
// modify newUser's email
|
||||||
modRequest = UserRequest{Mail: "new@e.mail", Active: true}
|
modRequest = UserRequest{Mail: "new@e.mail"}
|
||||||
newUser.Mail = modRequest.Mail
|
newUser.Mail = modRequest.Mail
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
|
@ -594,7 +594,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify newUser's role
|
// modify newUser's role
|
||||||
modRequest = UserRequest{Role: "Admin", Active: true}
|
modRequest = UserRequest{Role: "Admin"}
|
||||||
newUser.Role = modRequest.Role
|
newUser.Role = modRequest.Role
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
|
@ -605,7 +605,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify newUser's password
|
// 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,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
@ -626,7 +626,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// modify newUser's Active status
|
// modify newUser's Active status
|
||||||
modRequest = UserRequest{Active: false}
|
modRequest = UserRequest{Active: "no"}
|
||||||
code, resp, err = helper.TestEndpoint(router, token,
|
code, resp, err = helper.TestEndpoint(router, token,
|
||||||
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
|
||||||
helper.KeyModels{"user": modRequest})
|
helper.KeyModels{"user": modRequest})
|
||||||
|
|
|
@ -2,7 +2,6 @@ package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gopkg.in/go-playground/validator.v9"
|
"gopkg.in/go-playground/validator.v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,7 +17,7 @@ type validUpdatedRequest struct {
|
||||||
Password string `form:"Password" validate:"omitempty,min=6"`
|
Password string `form:"Password" validate:"omitempty,min=6"`
|
||||||
Role string `form:"Role" validate:"omitempty,oneof=Admin User Guest"`
|
Role string `form:"Role" validate:"omitempty,oneof=Admin User Guest"`
|
||||||
Mail string `form:"Mail" validate:"omitempty,email"`
|
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 {
|
type updateUserRequest struct {
|
||||||
|
@ -64,11 +63,11 @@ func (r *updateUserRequest) updatedUser(role interface{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only the Admin must be able to update users Active state
|
// 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" {
|
if role != "Admin" {
|
||||||
return u, fmt.Errorf("Only Admin can update user's Active state")
|
return u, fmt.Errorf("Only Admin can update user's Active state")
|
||||||
} else {
|
} else {
|
||||||
u.Active = r.Active
|
u.Active = !u.Active
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue