package app import ( "regexp" "strings" "testing" ) func TestDesktopTaskRecoverySelectQueryMatchesRecoveredLeaseScanOrder(t *testing.T) { t.Parallel() query := desktopTaskRecoverySelectQuery(desktopTaskRecoveryModeStartup) gotColumns := recoverDesktopTaskSelectColumns(query) wantColumns := []string{ "desktop_id", "workspace_id", "kind", "status", "active_attempt_id", } if len(gotColumns) != len(wantColumns) { t.Fatalf("recover select columns = %v, want %v", gotColumns, wantColumns) } for index := range wantColumns { if gotColumns[index] != wantColumns[index] { t.Fatalf("recover select columns = %v, want %v", gotColumns, wantColumns) } } } func TestDesktopTaskRecoverySelectQueryLeaseExpiryFiltersExpiredLeases(t *testing.T) { t.Parallel() query := desktopTaskRecoverySelectQuery(desktopTaskRecoveryModeLeaseExpiry) for _, fragment := range []string{ "AND lease_expires_at IS NOT NULL", "AND lease_expires_at < NOW()", "FOR UPDATE", } { if !strings.Contains(query, fragment) { t.Fatalf("recover lease-expiry query missing %q: %s", fragment, query) } } } func recoverDesktopTaskSelectColumns(query string) []string { re := regexp.MustCompile(`(?is)select\s+(.*?)\s+from\s+desktop_tasks`) match := re.FindStringSubmatch(query) if len(match) != 2 { return nil } rawColumns := strings.Split(match[1], ",") columns := make([]string, 0, len(rawColumns)) for _, rawColumn := range rawColumns { column := strings.TrimSpace(rawColumn) column = strings.Fields(column)[0] columns = append(columns, column) } return columns }