This repository has been archived on 2025-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
miniauthold/pkg/userstore/users_test.go
kekskurse 3a0f0ced51
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/playwright Pipeline was successful
ci/woodpecker/push/deplyoment Pipeline was successful
chore: check if username exists
2025-03-13 20:38:30 +01:00

86 lines
2.3 KiB
Go

package userstore
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestWriteUser(t *testing.T) {
tts := []struct {
name string
username string
password string
exptError error
exptErrorString string
exptUserId int64
}{
{
name: "successfull-insert-first-user",
username: "kekskurse",
password: "kekskurse",
exptError: nil,
exptUserId: 1,
},
{
name: "failed-username-alreadey-used",
username: "kekskurse",
password: "kekskurse",
exptError: ErrCantExecuteQuery,
exptErrorString: "cant execute query: constraint failed: UNIQUE constraint failed: users.username (2067)",
exptUserId: 0,
},
{
name: "successfull-insert-first-user",
username: "kekskurse2",
password: "kekskurse",
exptError: nil,
exptUserId: 2,
},
}
store, err := NewDummyStore()
assert.Nil(t, err, "[setup] should be abel to create dummystore")
for _, tt := range tts {
t.Run(tt.name, func(t *testing.T) {
id, err := store.UserWrite(tt.username, tt.password)
assert.Equal(t, tt.exptUserId, id, "should return right user id")
if tt.exptError == nil {
assert.Nil(t, err, "should store user without error")
} else {
assert.ErrorIs(t, err, tt.exptError, "should return error")
assert.Equal(t, tt.exptErrorString, err.Error(), "should return right error message")
}
})
}
var pw1 string
var pw2 string
err = store.db.QueryRow("SELECT password FROM users WHERE id = 1").Scan(&pw1)
assert.Nil(t, err, "should be abel to query pw1")
err = store.db.QueryRow("SELECT password FROM users WHERE id = 2").Scan(&pw2)
assert.Nil(t, err, "should be abel to query pw2")
assert.NotEmpty(t, pw1)
assert.NotEmpty(t, pw2)
assert.NotEqual(t, "kekskurse", pw1)
assert.NotEqual(t, "kekskurse", pw2)
assert.NotEqual(t, pw1, pw2, "passwords should not be equal")
}
func TestUserExists(t *testing.T) {
store, err := NewDummyStore()
assert.Nil(t, err, "[setup] should get dummy store without error")
exists, err := store.UserExists("kekskurse")
assert.Nil(t, err)
assert.False(t, exists)
_, err = store.UserWrite("kekskurse", "kekskurse")
assert.Nil(t, err, "[setup] should be abel to create user")
exists, err = store.UserExists("kekskurse")
assert.Nil(t, err)
assert.True(t, exists)
}