Test for AllowTextureFromURL

This commit is contained in:
Evan Goode 2024-11-22 15:35:36 -05:00
parent 1b6fdf2341
commit 60b6414a50
8 changed files with 93 additions and 62 deletions

View File

@ -15,7 +15,7 @@ func TestAccount(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
t.Run("Test /users/profiles/minecraft/:playerName", ts.testAccountPlayerNameToID) t.Run("Test /users/profiles/minecraft/:playerName", ts.testAccountPlayerNameToID)
t.Run("Test /profiles/minecraft", ts.makeTestAccountPlayerNamesToIDs("/profiles/minecraft")) t.Run("Test /profiles/minecraft", ts.makeTestAccountPlayerNamesToIDs("/profiles/minecraft"))
@ -32,7 +32,7 @@ func TestAccount(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.AuxServer, TEST_USERNAME) ts.CreateTestUser(ts.AuxApp, ts.AuxServer, TEST_USERNAME)
t.Run("Test /users/profiles/minecraft/:playerName, fallback API server", ts.testAccountPlayerNameToIDFallback) t.Run("Test /users/profiles/minecraft/:playerName, fallback API server", ts.testAccountPlayerNameToIDFallback)
t.Run("Test /profile/minecraft, fallback API server", ts.testAccountPlayerNamesToIDsFallback) t.Run("Test /profile/minecraft, fallback API server", ts.testAccountPlayerNamesToIDsFallback)

View File

@ -34,9 +34,9 @@ func TestAPI(t *testing.T) {
func (ts *TestSuite) testAPIGetUsers(t *testing.T) { func (ts *TestSuite) testAPIGetUsers(t *testing.T) {
username1 := "admin" username1 := "admin"
admin, _ := ts.CreateTestUser(ts.Server, username1) admin, _ := ts.CreateTestUser(ts.App, ts.Server, username1)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
// admin should get a response // admin should get a response
rec := ts.Get(t, ts.Server, "/drasl/api/v1/users", nil, &admin.APIToken) rec := ts.Get(t, ts.Server, "/drasl/api/v1/users", nil, &admin.APIToken)
@ -57,9 +57,9 @@ func (ts *TestSuite) testAPIGetUsers(t *testing.T) {
func (ts *TestSuite) testAPIGetUser(t *testing.T) { func (ts *TestSuite) testAPIGetUser(t *testing.T) {
username1 := "admin" username1 := "admin"
admin, _ := ts.CreateTestUser(ts.Server, username1) admin, _ := ts.CreateTestUser(ts.App, ts.Server, username1)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
// admin should get a response // admin should get a response
rec := ts.Get(t, ts.Server, "/drasl/api/v1/users/"+user2.UUID, nil, &admin.APIToken) rec := ts.Get(t, ts.Server, "/drasl/api/v1/users/"+user2.UUID, nil, &admin.APIToken)
@ -80,9 +80,9 @@ func (ts *TestSuite) testAPIGetUser(t *testing.T) {
func (ts *TestSuite) testAPIDeleteUser(t *testing.T) { func (ts *TestSuite) testAPIDeleteUser(t *testing.T) {
username1 := "admin" username1 := "admin"
admin, _ := ts.CreateTestUser(ts.Server, username1) admin, _ := ts.CreateTestUser(ts.App, ts.Server, username1)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
// user2 (not admin) should get a StatusForbidden // user2 (not admin) should get a StatusForbidden
rec := ts.Get(t, ts.Server, "/drasl/api/v1/users/"+admin.UUID, nil, &user2.APIToken) rec := ts.Get(t, ts.Server, "/drasl/api/v1/users/"+admin.UUID, nil, &user2.APIToken)
@ -104,7 +104,7 @@ func (ts *TestSuite) testAPIDeleteUser(t *testing.T) {
func (ts *TestSuite) testAPIDeleteSelf(t *testing.T) { func (ts *TestSuite) testAPIDeleteSelf(t *testing.T) {
username := "user" username := "user"
user, _ := ts.CreateTestUser(ts.Server, username) user, _ := ts.CreateTestUser(ts.App, ts.Server, username)
rec := ts.Delete(t, ts.Server, "/drasl/api/v1/user", nil, &user.APIToken) rec := ts.Delete(t, ts.Server, "/drasl/api/v1/user", nil, &user.APIToken)
assert.Equal(t, http.StatusNoContent, rec.Code) assert.Equal(t, http.StatusNoContent, rec.Code)
@ -117,10 +117,10 @@ func (ts *TestSuite) testAPIDeleteSelf(t *testing.T) {
func (ts *TestSuite) testAPIGetSelf(t *testing.T) { func (ts *TestSuite) testAPIGetSelf(t *testing.T) {
adminUsername := "admin" adminUsername := "admin"
admin, _ := ts.CreateTestUser(ts.Server, adminUsername) admin, _ := ts.CreateTestUser(ts.App, ts.Server, adminUsername)
assert.True(t, admin.IsAdmin) assert.True(t, admin.IsAdmin)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
// admin (admin) should get a response // admin (admin) should get a response
rec := ts.Get(t, ts.Server, "/drasl/api/v1/user", nil, &admin.APIToken) rec := ts.Get(t, ts.Server, "/drasl/api/v1/user", nil, &admin.APIToken)
@ -141,7 +141,7 @@ func (ts *TestSuite) testAPIGetSelf(t *testing.T) {
func (ts *TestSuite) testAPICreateUser(t *testing.T) { func (ts *TestSuite) testAPICreateUser(t *testing.T) {
adminUsername := "admin" adminUsername := "admin"
admin, _ := ts.CreateTestUser(ts.Server, adminUsername) admin, _ := ts.CreateTestUser(ts.App, ts.Server, adminUsername)
user2Username := "user2" user2Username := "user2"
@ -185,7 +185,7 @@ func (ts *TestSuite) testAPICreateUser(t *testing.T) {
func (ts *TestSuite) testAPIGetChallengeSkin(t *testing.T) { func (ts *TestSuite) testAPIGetChallengeSkin(t *testing.T) {
username := "user" username := "user"
user, _ := ts.CreateTestUser(ts.Server, username) user, _ := ts.CreateTestUser(ts.App, ts.Server, username)
ts.Get(t, ts.Server, "/drasl/api/v1/challenge-skin", nil, &user.APIToken) ts.Get(t, ts.Server, "/drasl/api/v1/challenge-skin", nil, &user.APIToken)
req := httptest.NewRequest(http.MethodGet, "/drasl/api/v1/challenge-skin", nil) req := httptest.NewRequest(http.MethodGet, "/drasl/api/v1/challenge-skin", nil)
@ -203,9 +203,9 @@ func (ts *TestSuite) testAPIGetChallengeSkin(t *testing.T) {
func (ts *TestSuite) testAPIGetInvites(t *testing.T) { func (ts *TestSuite) testAPIGetInvites(t *testing.T) {
username1 := "admin" username1 := "admin"
admin, _ := ts.CreateTestUser(ts.Server, username1) admin, _ := ts.CreateTestUser(ts.App, ts.Server, username1)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
_, err := ts.App.CreateInvite() _, err := ts.App.CreateInvite()
assert.Nil(t, err) assert.Nil(t, err)
@ -242,9 +242,9 @@ func (ts *TestSuite) testAPIGetInvites(t *testing.T) {
func (ts *TestSuite) testAPICreateInvite(t *testing.T) { func (ts *TestSuite) testAPICreateInvite(t *testing.T) {
username1 := "admin" username1 := "admin"
admin, _ := ts.CreateTestUser(ts.Server, username1) admin, _ := ts.CreateTestUser(ts.App, ts.Server, username1)
username2 := "user2" username2 := "user2"
user2, _ := ts.CreateTestUser(ts.Server, username2) user2, _ := ts.CreateTestUser(ts.App, ts.Server, username2)
var invites []Invite var invites []Invite
result := ts.App.DB.Find(&invites) result := ts.App.DB.Find(&invites)

View File

@ -15,8 +15,8 @@ func TestAuth(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
ts.CreateTestUser(ts.Server, TEST_OTHER_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_OTHER_USERNAME)
t.Run("Test /", ts.testGetServerInfo) t.Run("Test /", ts.testGetServerInfo)
t.Run("Test /authenticate", ts.testAuthenticate) t.Run("Test /authenticate", ts.testAuthenticate)

View File

@ -23,7 +23,7 @@ func TestAuthlibInjector(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
t.Run("Test /authlib-injector", ts.testAuthlibInjectorRoot) t.Run("Test /authlib-injector", ts.testAuthlibInjectorRoot)
} }

View File

@ -48,7 +48,7 @@ func setupRegistrationExistingPlayerTS(requireSkinVerification bool, requireInvi
} }
ts.Setup(config) ts.Setup(config)
ts.CreateTestUser(ts.AuxServer, EXISTING_USERNAME) ts.CreateTestUser(ts.AuxApp, ts.AuxServer, EXISTING_USERNAME)
return ts return ts
} }
@ -125,7 +125,6 @@ func TestFront(t *testing.T) {
ts := &TestSuite{} ts := &TestSuite{}
config := testConfig() config := testConfig()
config.RegistrationExistingPlayer.Allow = false
config.DefaultAdmins = []string{"registrationNewA"} config.DefaultAdmins = []string{"registrationNewA"}
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
@ -143,7 +142,6 @@ func TestFront(t *testing.T) {
ts := &TestSuite{} ts := &TestSuite{}
config := testConfig() config := testConfig()
config.RegistrationExistingPlayer.Allow = false
config.AllowSkins = false config.AllowSkins = false
config.AllowCapes = false config.AllowCapes = false
ts.Setup(config) ts.Setup(config)
@ -197,6 +195,21 @@ func TestFront(t *testing.T) {
t.Run("Test body size limiting", ts.testBodyLimit) t.Run("Test body size limiting", ts.testBodyLimit)
} }
{
// Set skin texture from URL
ts := &TestSuite{}
auxConfig := testConfig()
ts.SetupAux(auxConfig)
ts.CreateTestUser(ts.AuxApp, ts.AuxServer, EXISTING_USERNAME)
config := testConfig()
config.AllowTextureFromURL = true
ts.Setup(config)
defer ts.Teardown()
t.Run("Test setting texture from URL", ts.testTextureFromURL)
}
{ {
// Registration as existing player allowed, skin verification not required // Registration as existing player allowed, skin verification not required
ts := setupRegistrationExistingPlayerTS(false, false) ts := setupRegistrationExistingPlayerTS(false, false)
@ -402,7 +415,7 @@ func (ts *TestSuite) testRegistrationNewPlayer(t *testing.T) {
func (ts *TestSuite) testRegistrationNewPlayerChosenUUIDNotAllowed(t *testing.T) { func (ts *TestSuite) testRegistrationNewPlayerChosenUUIDNotAllowed(t *testing.T) {
username := "noChosenUUID" username := "noChosenUUID"
ts.CreateTestUser(ts.Server, username) ts.CreateTestUser(ts.App, ts.Server, username)
uuid := "11111111-2222-3333-4444-555555555555" uuid := "11111111-2222-3333-4444-555555555555"
@ -652,7 +665,7 @@ func (ts *TestSuite) testRegistrationExistingPlayerInvite(t *testing.T) {
func (ts *TestSuite) testLoginLogout(t *testing.T) { func (ts *TestSuite) testLoginLogout(t *testing.T) {
username := "loginLogout" username := "loginLogout"
ts.CreateTestUser(ts.Server, username) ts.CreateTestUser(ts.App, ts.Server, username)
{ {
// Login // Login
@ -723,7 +736,6 @@ func (ts *TestSuite) testRegistrationExistingPlayerNoVerification(t *testing.T)
form.Set("returnUrl", returnURL) form.Set("returnUrl", returnURL)
rec := ts.PostForm(t, ts.Server, "/web/register", form, nil, nil) rec := ts.PostForm(t, ts.Server, "/web/register", form, nil, nil)
ts.registrationShouldSucceed(t, rec) ts.registrationShouldSucceed(t, rec)
browserTokenCookie := getCookie(rec, "browserToken")
// Check that the user has been created with the same UUID // Check that the user has been created with the same UUID
var auxUser User var auxUser User
@ -733,26 +745,6 @@ func (ts *TestSuite) testRegistrationExistingPlayerNoVerification(t *testing.T)
result = ts.App.DB.First(&user, "username = ?", username) result = ts.App.DB.First(&user, "username = ?", username)
assert.Nil(t, result.Error) assert.Nil(t, result.Error)
assert.Equal(t, auxUser.UUID, user.UUID) assert.Equal(t, auxUser.UUID, user.UUID)
{
// Test setting skin from URL
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
// Set a skin on the existing account
assert.Nil(t, ts.AuxApp.SetSkinAndSave(&auxUser, bytes.NewReader(BLUE_SKIN)))
skinHash := *UnmakeNullString(&auxUser.SkinHash)
skinURL, err := ts.AuxApp.SkinURL(skinHash)
assert.Nil(t, err)
assert.Nil(t, writer.WriteField("skinUrl", skinURL))
assert.Nil(t, writer.WriteField("returnUrl", ts.App.FrontEndURL+"/web/profile"))
assert.Nil(t, writer.Close())
rec := ts.PostMultipart(t, ts.Server, "/web/update", body, writer, []http.Cookie{*browserTokenCookie}, nil)
ts.updateShouldSucceed(t, rec)
assert.Nil(t, ts.App.DB.First(&user, "username = ?", username).Error)
assert.Equal(t, skinHash, *UnmakeNullString(&user.SkinHash))
}
{ {
// Registration as a new user should fail // Registration as a new user should fail
form := url.Values{} form := url.Values{}
@ -837,7 +829,7 @@ func (ts *TestSuite) testRegistrationExistingPlayerWithVerification(t *testing.T
func (ts *TestSuite) testNewInviteDeleteInvite(t *testing.T) { func (ts *TestSuite) testNewInviteDeleteInvite(t *testing.T) {
username := "inviteAdmin" username := "inviteAdmin"
user, browserTokenCookie := ts.CreateTestUser(ts.Server, username) user, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, username)
user.IsAdmin = true user.IsAdmin = true
result := ts.App.DB.Save(&user) result := ts.App.DB.Save(&user)
@ -878,8 +870,8 @@ func (ts *TestSuite) testNewInviteDeleteInvite(t *testing.T) {
func (ts *TestSuite) testUpdate(t *testing.T) { func (ts *TestSuite) testUpdate(t *testing.T) {
username := "testUpdate" username := "testUpdate"
takenUsername := "testUpdateTaken" takenUsername := "testUpdateTaken"
user, browserTokenCookie := ts.CreateTestUser(ts.Server, username) user, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, username)
takenUser, takenBrowserTokenCookie := ts.CreateTestUser(ts.Server, takenUsername) takenUser, takenBrowserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, takenUsername)
sum := blake3.Sum256(RED_SKIN) sum := blake3.Sum256(RED_SKIN)
redSkinHash := hex.EncodeToString(sum[:]) redSkinHash := hex.EncodeToString(sum[:])
@ -997,6 +989,17 @@ func (ts *TestSuite) testUpdate(t *testing.T) {
rec := ts.PostMultipart(t, ts.Server, "/web/update", body, writer, []http.Cookie{*browserTokenCookie}, nil) rec := ts.PostMultipart(t, ts.Server, "/web/update", body, writer, []http.Cookie{*browserTokenCookie}, nil)
ts.updateShouldFail(t, rec, "Invalid player name: can't be longer than 16 characters", ts.App.FrontEndURL+"/web/profile") ts.updateShouldFail(t, rec, "Invalid player name: can't be longer than 16 characters", ts.App.FrontEndURL+"/web/profile")
} }
{
// Setting a skin from URL should fail for non-admin (config.AllowTextureFromURL is false by default)
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
assert.Nil(t, writer.WriteField("skinUrl", "https://example.com/skin.png"))
assert.Nil(t, writer.WriteField("returnUrl", ts.App.FrontEndURL+"/web/profile"))
assert.Nil(t, writer.Close())
rec := ts.PostMultipart(t, ts.Server, "/web/update", body, writer, []http.Cookie{*takenBrowserTokenCookie}, nil)
ts.updateShouldFail(t, rec, "Setting a skin from a URL is not allowed.", ts.App.FrontEndURL+"/web/profile")
}
{ {
// Invalid fallback player should fail // Invalid fallback player should fail
body := &bytes.Buffer{} body := &bytes.Buffer{}
@ -1041,7 +1044,7 @@ func (ts *TestSuite) testUpdate(t *testing.T) {
func (ts *TestSuite) testUpdateSkinsCapesNotAllowed(t *testing.T) { func (ts *TestSuite) testUpdateSkinsCapesNotAllowed(t *testing.T) {
username := "updateNoSkinCape" username := "updateNoSkinCape"
_, browserTokenCookie := ts.CreateTestUser(ts.Server, username) _, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, username)
{ {
body := &bytes.Buffer{} body := &bytes.Buffer{}
writer := multipart.NewWriter(body) writer := multipart.NewWriter(body)
@ -1083,11 +1086,39 @@ func (ts *TestSuite) testUpdateSkinsCapesNotAllowed(t *testing.T) {
} }
} }
func (ts *TestSuite) testTextureFromURL(t *testing.T) {
// Test setting skin from URL
username := "textureFromURL"
user, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, username)
var auxUser User
result := ts.AuxApp.DB.First(&auxUser, "username = ?", EXISTING_USERNAME)
assert.Nil(t, result.Error)
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
// Set a skin on the existing account
assert.Nil(t, ts.AuxApp.SetSkinAndSave(&auxUser, bytes.NewReader(BLUE_SKIN)))
skinHash := *UnmakeNullString(&auxUser.SkinHash)
skinURL, err := ts.AuxApp.SkinURL(skinHash)
assert.Nil(t, err)
assert.Nil(t, writer.WriteField("skinUrl", skinURL))
assert.Nil(t, writer.WriteField("returnUrl", ts.App.FrontEndURL+"/web/profile"))
assert.Nil(t, writer.Close())
rec := ts.PostMultipart(t, ts.Server, "/web/update", body, writer, []http.Cookie{*browserTokenCookie}, nil)
ts.updateShouldSucceed(t, rec)
assert.Nil(t, ts.App.DB.First(&user, "username = ?", username).Error)
assert.Equal(t, skinHash, *UnmakeNullString(&user.SkinHash))
}
func (ts *TestSuite) testDeleteAccount(t *testing.T) { func (ts *TestSuite) testDeleteAccount(t *testing.T) {
usernameA := "deleteA" usernameA := "deleteA"
usernameB := "deleteB" usernameB := "deleteB"
ts.CreateTestUser(ts.Server, usernameA) ts.CreateTestUser(ts.App, ts.Server, usernameA)
{ {
var user User var user User
result := ts.App.DB.First(&user, "username = ?", usernameA) result := ts.App.DB.First(&user, "username = ?", usernameA)
@ -1102,7 +1133,7 @@ func (ts *TestSuite) testDeleteAccount(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
// Register usernameB // Register usernameB
_, browserTokenCookie := ts.CreateTestUser(ts.Server, usernameB) _, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, usernameB)
// Check that usernameB has been created // Check that usernameB has been created
var otherUser User var otherUser User
@ -1184,13 +1215,13 @@ func (ts *TestSuite) testAdmin(t *testing.T) {
returnURL := ts.App.FrontEndURL + "/web/admin" returnURL := ts.App.FrontEndURL + "/web/admin"
username := "admin" username := "admin"
user, browserTokenCookie := ts.CreateTestUser(ts.Server, username) user, browserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, username)
otherUsername := "adminOther" otherUsername := "adminOther"
_, otherBrowserTokenCookie := ts.CreateTestUser(ts.Server, otherUsername) _, otherBrowserTokenCookie := ts.CreateTestUser(ts.App, ts.Server, otherUsername)
anotherUsername := "adminAnother" anotherUsername := "adminAnother"
_, _ = ts.CreateTestUser(ts.Server, anotherUsername) _, _ = ts.CreateTestUser(ts.App, ts.Server, anotherUsername)
// Make `username` an admin // Make `username` an admin
user.IsAdmin = true user.IsAdmin = true

View File

@ -37,9 +37,9 @@ func TestServices(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
ts.CreateTestUser(ts.Server, SERVICES_EXISTING_USERNAME) ts.CreateTestUser(ts.App, ts.Server, SERVICES_EXISTING_USERNAME)
ts.CreateTestUser(ts.AuxServer, TEST_USERNAME) ts.CreateTestUser(ts.AuxApp, ts.AuxServer, TEST_USERNAME)
// Set the red skin on the aux user // Set the red skin on the aux user
var user User var user User
@ -68,7 +68,7 @@ func TestServices(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
t.Run("Test POST /minecraft/profile/skins, skins not allowed", ts.testServicesUploadSkinSkinsNotAllowed) t.Run("Test POST /minecraft/profile/skins, skins not allowed", ts.testServicesUploadSkinSkinsNotAllowed)
} }

View File

@ -15,7 +15,7 @@ func TestSession(t *testing.T) {
ts.Setup(config) ts.Setup(config)
defer ts.Teardown() defer ts.Teardown()
ts.CreateTestUser(ts.Server, TEST_USERNAME) ts.CreateTestUser(ts.App, ts.Server, TEST_USERNAME)
t.Run("Test /session/minecraft/hasJoined", ts.testSessionHasJoined) t.Run("Test /session/minecraft/hasJoined", ts.testSessionHasJoined)
t.Run("Test /session/minecraft/join", ts.testSessionJoin) t.Run("Test /session/minecraft/join", ts.testSessionJoin)

View File

@ -142,7 +142,7 @@ func (ts *TestSuite) Teardown() {
Check(err) Check(err)
} }
func (ts *TestSuite) CreateTestUser(server *echo.Echo, username string) (*User, *http.Cookie) { func (ts *TestSuite) CreateTestUser(app *App, server *echo.Echo, username string) (*User, *http.Cookie) {
form := url.Values{} form := url.Values{}
form.Set("username", username) form.Set("username", username)
form.Set("password", TEST_PASSWORD) form.Set("password", TEST_PASSWORD)
@ -153,7 +153,7 @@ func (ts *TestSuite) CreateTestUser(server *echo.Echo, username string) (*User,
server.ServeHTTP(rec, req) server.ServeHTTP(rec, req)
var user User var user User
ts.App.DB.First(&user, "username = ?", username) app.DB.First(&user, "username = ?", username)
browserToken := getCookie(rec, "browserToken") browserToken := getCookie(rec, "browserToken")