get rid of Request struct as is caused more trouble than good

This commit is contained in:
Sonja Happ 2019-09-05 09:11:56 +02:00
parent 5855fccbe3
commit 16b3499126
5 changed files with 64 additions and 57 deletions

View file

@ -1,15 +0,0 @@
package common
import "github.com/jinzhu/gorm/dialects/postgres"
type KeyModels map[string]interface{}
type Request struct {
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
Mail string `json:"mail,omitempty"`
Role string `json:"role,omitempty"`
Name string `json:"name,omitempty"`
Running bool `json:"running,omitempty"`
StartParameters postgres.Jsonb `json:"startParameters,omitempty"`
}

View file

@ -33,17 +33,22 @@ var UserB = User{Username: "User_B", Password: string(pwB),
// Credentials
var AdminCredentials = Request{
type Credentials struct {
Username string
Password string
}
var AdminCredentials = Credentials{
Username: User0.Username,
Password: StrPassword0,
}
var UserACredentials = Request{
var UserACredentials = Credentials{
Username: UserA.Username,
Password: StrPasswordA,
}
var UserBCredentials = Request{
var UserBCredentials = Credentials{
Username: UserB.Username,
Password: StrPasswordB,
}

View file

@ -18,6 +18,9 @@ import (
const UserIDCtx = "user_id"
const UserRoleCtx = "user_role"
// used in testing
type KeyModels map[string]interface{}
func ProvideErrorResponse(c *gin.Context, err error) bool {
if err != nil {
if err == gorm.ErrRecordNotFound {

View file

@ -4,6 +4,7 @@ import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"github.com/jinzhu/gorm/dialects/postgres"
"github.com/stretchr/testify/assert"
"os"
"testing"
@ -15,6 +16,12 @@ import (
var router *gin.Engine
var db *gorm.DB
type ScenarioRequest struct {
Name string `json:"name,omitempty"`
Running bool `json:"running,omitempty"`
StartParameters postgres.Jsonb `json:"startParameters,omitempty"`
}
func TestMain(m *testing.M) {
db = common.DummyInitDB()
@ -42,7 +49,7 @@ func TestAddScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -71,9 +78,9 @@ func TestAddScenario(t *testing.T) {
assert.NoError(t, err)
// try to POST a malformed scenario
// Required field StartParameters is missing
malformedNewScenario := common.Request{
Username: "thisisnotneeded",
// Required fields are missing
malformedNewScenario := ScenarioRequest{
Running: false,
}
// this should NOT work and return a unprocessable entity 442 status code
code, resp, err = common.NewTestEndpoint(router, token,
@ -94,7 +101,7 @@ func TestUpdateScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -112,7 +119,7 @@ func TestUpdateScenario(t *testing.T) {
newScenarioID, err := common.GetResponseID(resp)
assert.NoError(t, err)
updatedScenario := common.Request{
updatedScenario := ScenarioRequest{
Name: "Updated name",
Running: !common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -167,7 +174,7 @@ func TestGetAllScenariosAsAdmin(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenarioB
newScenarioB := common.Request{
newScenarioB := ScenarioRequest{
Name: common.ScenarioB.Name,
Running: common.ScenarioB.Running,
StartParameters: common.ScenarioB.StartParameters,
@ -183,7 +190,7 @@ func TestGetAllScenariosAsAdmin(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenarioA
newScenarioA := common.Request{
newScenarioA := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -223,7 +230,7 @@ func TestGetAllScenariosAsUser(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenarioB
newScenarioB := common.Request{
newScenarioB := ScenarioRequest{
Name: common.ScenarioB.Name,
Running: common.ScenarioB.Running,
StartParameters: common.ScenarioB.StartParameters,
@ -240,7 +247,7 @@ func TestGetAllScenariosAsUser(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenarioA
newScenarioA := common.Request{
newScenarioA := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -275,7 +282,7 @@ func TestDeleteScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -324,7 +331,7 @@ func TestAddUserToScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -379,7 +386,7 @@ func TestGetAllUsersOfScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,
@ -424,7 +431,7 @@ func TestRemoveUserFromScenario(t *testing.T) {
assert.NoError(t, err)
// test POST scenarios/ $newScenario
newScenario := common.Request{
newScenario := ScenarioRequest{
Name: common.ScenarioA.Name,
Running: common.ScenarioA.Running,
StartParameters: common.ScenarioA.StartParameters,

View file

@ -15,6 +15,13 @@ import (
var router *gin.Engine
var db *gorm.DB
type UserRequest struct {
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
Mail string `json:"mail,omitempty"`
Role string `json:"role,omitempty"`
}
func TestMain(m *testing.M) {
db = common.DummyInitDB()
@ -42,7 +49,7 @@ func TestAddGetUser(t *testing.T) {
assert.NoError(t, err)
// test POST user/ $newUser
newUser := common.Request{
newUser := UserRequest{
Username: "Alice483",
Password: "th1s_I5_@lice#",
Mail: "mail@domain.com",
@ -90,7 +97,7 @@ func TestUsersNotAllowedActions(t *testing.T) {
assert.NoError(t, err)
// Add a user
newUser := common.Request{
newUser := UserRequest{
Username: "NotAllowedActions",
Password: "N0t_@LLow3d_act10n5",
Mail: "not@allowed.ac",
@ -106,7 +113,7 @@ func TestUsersNotAllowedActions(t *testing.T) {
// Authenticate as the added user
token, err = common.NewAuthenticateForTest(router,
"/api/authenticate", "POST", common.Request{
"/api/authenticate", "POST", UserRequest{
Username: newUser.Username,
Password: newUser.Password,
})
@ -155,7 +162,7 @@ func TestGetAllUsers(t *testing.T) {
assert.NoError(t, err)
// Add a user
newUser := common.Request{
newUser := UserRequest{
Username: "UserGetAllUsers",
Password: "get@ll_User5",
Mail: "get@all.users",
@ -186,7 +193,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// Add a user that will modify itself
newUser := common.Request{
newUser := UserRequest{
Username: "modMyself",
Password: "mod_My5elf",
Mail: "mod@my.self",
@ -202,7 +209,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
// authenticate as the new user
token, err = common.NewAuthenticateForTest(router,
"/api/authenticate", "POST", common.Request{
"/api/authenticate", "POST", UserRequest{
Username: newUser.Username,
Password: newUser.Password,
})
@ -215,7 +222,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
newUser.Password = ""
// modify newUser's own name
modRequest := common.Request{Username: "myNewName"}
modRequest := UserRequest{Username: "myNewName"}
newUser.Username = modRequest.Username
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -226,7 +233,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// modify Admin's name (ILLEGAL)
modRequest = common.Request{Username: "myNewName"}
modRequest = UserRequest{Username: "myNewName"}
newUser.Username = modRequest.Username
code, resp, err = common.NewTestEndpoint(router, token,
"/api/users/1", "PUT", common.KeyModels{"user": modRequest})
@ -234,7 +241,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's own email
modRequest = common.Request{Mail: "my@new.email"}
modRequest = UserRequest{Mail: "my@new.email"}
newUser.Mail = modRequest.Mail
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -245,7 +252,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.NoError(t, err)
// modify Admin's own email (ILLEGAL)
modRequest = common.Request{Mail: "my@new.email"}
modRequest = UserRequest{Mail: "my@new.email"}
newUser.Mail = modRequest.Mail
code, resp, err = common.NewTestEndpoint(router, token,
"/api/users/1", "PUT", common.KeyModels{"user": modRequest})
@ -253,7 +260,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's role (ILLEGAL)
modRequest = common.Request{Role: "Admin"}
modRequest = UserRequest{Role: "Admin"}
newUser.Role = modRequest.Role
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -262,7 +269,7 @@ func TestModifyAddedUserAsUser(t *testing.T) {
assert.Equalf(t, 403, code, "Response body: \n%v\n", resp)
// modify newUser's password
modRequest = common.Request{Password: "5tr0ng_pw!"}
modRequest = UserRequest{Password: "5tr0ng_pw!"}
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
common.KeyModels{"user": modRequest})
@ -271,14 +278,14 @@ func TestModifyAddedUserAsUser(t *testing.T) {
// try to login as newUser with the modified username and password
token, err = common.NewAuthenticateForTest(router,
"/api/authenticate", "POST", common.Request{
"/api/authenticate", "POST", UserRequest{
Username: newUser.Username,
Password: modRequest.Password,
})
assert.NoError(t, err)
// modify Admin's password (ILLEGAL)
modRequest = common.Request{Password: "4dm1ns_pw!"}
modRequest = UserRequest{Password: "4dm1ns_pw!"}
code, resp, err = common.NewTestEndpoint(router, token,
"/api/users/1", "PUT", common.KeyModels{"user": modRequest})
assert.NoError(t, err)
@ -297,7 +304,7 @@ func TestInvalidUserUpdate(t *testing.T) {
assert.NoError(t, err)
// Add a user
newUser := common.Request{
newUser := UserRequest{
Username: "invalidUpdatedUser",
Password: "wr0ng_Upd@te!",
Mail: "inv@user.upd",
@ -312,7 +319,7 @@ func TestInvalidUserUpdate(t *testing.T) {
assert.NoError(t, err)
// modify newUser's password with INVALID password
modRequest := common.Request{Password: "short"}
modRequest := UserRequest{Password: "short"}
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
common.KeyModels{"user": modRequest})
@ -320,7 +327,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 = common.Request{Mail: "notEmail"}
modRequest = UserRequest{Mail: "notEmail"}
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
common.KeyModels{"user": modRequest})
@ -328,7 +335,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 = common.Request{Role: "noRole"}
modRequest = UserRequest{Role: "noRole"}
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
common.KeyModels{"user": modRequest})
@ -348,7 +355,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// Add a user
newUser := common.Request{
newUser := UserRequest{
Username: "modAddedUser",
Password: "mod_4d^2ed_0ser",
Mail: "mod@added.user",
@ -369,7 +376,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
newUser.Password = ""
// modify newUser's name
modRequest := common.Request{Username: "NewUsername"}
modRequest := UserRequest{Username: "NewUsername"}
newUser.Username = modRequest.Username
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -380,7 +387,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's email
modRequest = common.Request{Mail: "new@e.mail"}
modRequest = UserRequest{Mail: "new@e.mail"}
newUser.Mail = modRequest.Mail
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -391,7 +398,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's role
modRequest = common.Request{Role: "Admin"}
modRequest = UserRequest{Role: "Admin"}
newUser.Role = modRequest.Role
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
@ -402,7 +409,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
assert.NoError(t, err)
// modify newUser's password
modRequest = common.Request{Password: "4_g00d_pw!"}
modRequest = UserRequest{Password: "4_g00d_pw!"}
code, resp, err = common.NewTestEndpoint(router, token,
fmt.Sprintf("/api/users/%v", newUserID), "PUT",
common.KeyModels{"user": modRequest})
@ -411,7 +418,7 @@ func TestModifyAddedUserAsAdmin(t *testing.T) {
// try to login as newUser with the modified username and password
_, err = common.NewAuthenticateForTest(router,
"/api/authenticate", "POST", common.Request{
"/api/authenticate", "POST", UserRequest{
Username: newUser.Username,
Password: modRequest.Password,
})
@ -430,7 +437,7 @@ func TestDeleteUser(t *testing.T) {
assert.NoError(t, err)
// Add a user
newUser := common.Request{
newUser := UserRequest{
Username: "toBeDeletedUser",
Password: "f0r_deletIOn_0ser",
Mail: "to@be.deleted",