package home import ( "encoding/hex" "os" "path/filepath" "testing" "time" "github.com/stretchr/testify/assert" ) func TestAuth(t *testing.T) { config.ourWorkingDir = "." fn := filepath.Join(config.getDataDir(), "sessions.db") _ = os.RemoveAll(config.getDataDir()) defer func() { _ = os.RemoveAll(config.getDataDir()) }() users := []User{ User{Name: "name", PasswordHash: "$2y$05$..vyzAECIhJPfaQiOK17IukcQnqEgKJHy0iETyYqxn3YXJl8yZuo2"}, } os.MkdirAll(config.getDataDir(), 0755) a := InitAuth(fn, users) assert.True(t, a.CheckSession("notfound") == -1) a.RemoveSession("notfound") sess := getSession(&users[0]) sessStr := hex.EncodeToString(sess) // check expiration a.storeSession(sess, uint32(time.Now().UTC().Unix())) assert.True(t, a.CheckSession(sessStr) == 1) // add session with TTL = 2 sec a.storeSession(sess, uint32(time.Now().UTC().Unix()+2)) assert.True(t, a.CheckSession(sessStr) == 0) a.Close() // load saved session a = InitAuth(fn, users) // the session is still alive assert.True(t, a.CheckSession(sessStr) == 0) a.Close() u := a.UserFind("name", "password") assert.True(t, len(u.Name) != 0) time.Sleep(3 * time.Second) // load and remove expired sessions a = InitAuth(fn, users) assert.True(t, a.CheckSession(sessStr) == -1) a.Close() os.Remove(fn) }