Files

39 lines
1.2 KiB
Go
Raw Permalink Normal View History

package saas
import (
"context"
"data-terminal-cloud/internal/audit"
"data-terminal-cloud/internal/devicefleet"
"data-terminal-cloud/internal/identity"
"github.com/jackc/pgx/v5/pgxpool"
"os"
"testing"
)
func TestFleetTenantAndHouseholdAccess(t *testing.T) {
if os.Getenv("TEST_DATABASE_URL") == "" {
t.Skip("integration database required")
}
ctx := context.Background()
pool, err := pgxpool.New(ctx, os.Getenv("TEST_DATABASE_URL"))
if err != nil {
t.Fatal(err)
}
defer pool.Close()
s := NewService(pool, audit.NewRepository(), nil, nil)
s.Fleet = &devicefleet.Service{Pool: pool}
owner := identity.Principal{Issuer: testIssuer, Subject: testOwnerSubject}
if _, err = s.FleetState(ctx, owner, "10000000-0000-0000-0000-000000000511", ""); err != nil {
t.Fatal(err)
}
if _, err = s.FleetState(ctx, owner, "10000000-0000-0000-0000-000000000512", ""); err == nil {
t.Fatal("unbound device accessible")
}
if _, err = s.FleetTenant(ctx, owner, testTenantPublicID, true); err == nil {
t.Fatal("customer uploaded firmware")
}
if _, err = s.FleetState(ctx, owner, "10000000-0000-0000-0000-000000000511", testTenantPublicID); err == nil {
t.Fatal("customer spoofed operator tenant")
}
}