package store import ( "context" "os" "testing" ) func testStore(t *testing.T) *Store { dsn := os.Getenv("TEST_DATABASE_URL") if dsn == "" { t.Skip("TEST_DATABASE_URL not set") } s, err := New(context.Background(), dsn) if err != nil { t.Fatalf("New: %v", err) } t.Cleanup(func() { s.Pool.Exec(context.Background(), `TRUNCATE endpoints, tasks, accounts, runs, migrated_messages RESTART IDENTITY CASCADE`) s.Pool.Close() }) return s } func TestCreateAndGetEndpoint(t *testing.T) { s := testStore(t) ctx := context.Background() id, err := s.CreateEndpoint(ctx, Endpoint{RoleLabel: "src", Host: "imap.a.com", Port: 993, TLSMode: "ssl"}) if err != nil { t.Fatalf("create: %v", err) } got, err := s.GetEndpoint(ctx, id) if err != nil { t.Fatalf("get: %v", err) } if got.Host != "imap.a.com" || got.Port != 993 { t.Fatalf("got %+v", got) } } func TestListEndpointsOrdered(t *testing.T) { s := testStore(t) ctx := context.Background() id1, _ := s.CreateEndpoint(ctx, Endpoint{RoleLabel: "src", Host: "a.com", Port: 993, TLSMode: "ssl"}) id2, _ := s.CreateEndpoint(ctx, Endpoint{RoleLabel: "dst", Host: "b.com", Port: 143, TLSMode: "starttls"}) eps, err := s.ListEndpoints(ctx) if err != nil { t.Fatalf("list: %v", err) } if len(eps) != 2 { t.Fatalf("len=%d want 2", len(eps)) } if eps[0].ID != id1 || eps[1].ID != id2 { t.Fatalf("order wrong: %d,%d want %d,%d", eps[0].ID, eps[1].ID, id1, id2) } if eps[1].TLSMode != "starttls" { t.Fatalf("eps[1].TLSMode=%q want starttls", eps[1].TLSMode) } }