diff --git a/routes/user/user_test.go b/routes/user/user_test.go index 3ec4b76..359d602 100644 --- a/routes/user/user_test.go +++ b/routes/user/user_test.go @@ -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}) diff --git a/routes/user/user_validators.go b/routes/user/user_validators.go index 517e1ca..6048563 100644 --- a/routes/user/user_validators.go +++ b/routes/user/user_validators.go @@ -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 } }