57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/noderunners/nip05api/internal/db"
|
|
)
|
|
|
|
func newTestRepo(t *testing.T) *Repo {
|
|
t.Helper()
|
|
d, err := db.Open(filepath.Join(t.TempDir(), "test.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { d.Close() })
|
|
if err := d.Migrate(context.Background()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return NewRepo(d)
|
|
}
|
|
|
|
func TestRepo_InsertAndFetch(t *testing.T) {
|
|
repo := newTestRepo(t)
|
|
ctx := context.Background()
|
|
exp := time.Now().Add(365 * 24 * time.Hour)
|
|
u := &User{
|
|
Pubkey: "0e8c41ebcd55a8d8db2e0a8c3a4b9c5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c",
|
|
Username: "alice",
|
|
SubscriptionType: SubYearly,
|
|
ExpiresAt: &exp,
|
|
IsActive: true,
|
|
}
|
|
if err := repo.Insert(ctx, u); err != nil {
|
|
t.Fatalf("insert: %v", err)
|
|
}
|
|
got, err := repo.GetByPubkey(ctx, u.Pubkey)
|
|
if err != nil {
|
|
t.Fatalf("get: %v", err)
|
|
}
|
|
if got.Username != "alice" {
|
|
t.Errorf("got username %q", got.Username)
|
|
}
|
|
if !got.IsActive {
|
|
t.Error("expected active")
|
|
}
|
|
}
|
|
|
|
func TestRepo_GetByUsername_NotFound(t *testing.T) {
|
|
repo := newTestRepo(t)
|
|
if _, err := repo.GetByUsername(context.Background(), "nope"); err != ErrUserNotFound {
|
|
t.Errorf("got %v want ErrUserNotFound", err)
|
|
}
|
|
}
|