add tests
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/vaultdrop/backend/dbtest"
|
||||
)
|
||||
|
||||
func newTestDevices(t *testing.T) *Devices {
|
||||
t.Helper()
|
||||
conn := dbtest.OpenTestDatabase(t, repositoryTestURL)
|
||||
return &Devices{DB: conn}
|
||||
}
|
||||
|
||||
func TestDevicesUpsertAndExists(t *testing.T) {
|
||||
d := newTestDevices(t)
|
||||
deviceID := NewID()
|
||||
|
||||
exists, err := d.Exists(deviceID)
|
||||
if err != nil || exists {
|
||||
t.Fatalf("device non enregistré : exists=%v err=%v", exists, err)
|
||||
}
|
||||
|
||||
if err := d.Upsert(deviceID); err != nil {
|
||||
t.Fatalf("upsert: %v", err)
|
||||
}
|
||||
exists, err = d.Exists(deviceID)
|
||||
if err != nil || !exists {
|
||||
t.Fatalf("après upsert : exists=%v err=%v", exists, err)
|
||||
}
|
||||
|
||||
// Upsert idempotent (ON CONFLICT) → pas d'erreur ni de doublon.
|
||||
if err := d.Upsert(deviceID); err != nil {
|
||||
t.Fatalf("second upsert: %v", err)
|
||||
}
|
||||
exists, err = d.Exists(deviceID)
|
||||
if err != nil || !exists {
|
||||
t.Fatalf("après second upsert : exists=%v err=%v", exists, err)
|
||||
}
|
||||
|
||||
var count int
|
||||
if err := d.DB.QueryRow(`SELECT COUNT(*) FROM devices WHERE device_id = $1`, deviceID).Scan(&count); err != nil {
|
||||
t.Fatalf("count: %v", err)
|
||||
}
|
||||
if count != 1 {
|
||||
t.Errorf("device dupliqué, count = %d", count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevicesMarkUser(t *testing.T) {
|
||||
d := newTestDevices(t)
|
||||
deviceID := NewID()
|
||||
if err := d.Upsert(deviceID); err != nil {
|
||||
t.Fatalf("upsert: %v", err)
|
||||
}
|
||||
|
||||
users := &Users{DB: d.DB}
|
||||
userID, err := users.Create("device-user", "device-user", "hash", false)
|
||||
if err != nil {
|
||||
t.Fatalf("create user: %v", err)
|
||||
}
|
||||
|
||||
if err := d.MarkUser(deviceID, userID); err != nil {
|
||||
t.Fatalf("mark user: %v", err)
|
||||
}
|
||||
var storedUser string
|
||||
if err := d.DB.QueryRow(`SELECT user_id FROM devices WHERE device_id = $1`, deviceID).Scan(&storedUser); err != nil {
|
||||
t.Fatalf("read user_id: %v", err)
|
||||
}
|
||||
if storedUser != userID {
|
||||
t.Errorf("user_id mémorisé = %q, attendu %q", storedUser, userID)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user