74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package repository
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/kazier/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)
|
|
}
|
|
}
|