@@ -0,0 +1,25 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { parseDuckDbQuery } from "../../src/core/duckdb";
|
||||
|
||||
describe("DuckDB query boundary", () => {
|
||||
it("records a single SELECT token stream", () => {
|
||||
expect(
|
||||
parseDuckDbQuery("SELECT team, avg(score) FROM data GROUP BY team"),
|
||||
).toMatchObject({
|
||||
type: "duckdb-query",
|
||||
statement: "SELECT",
|
||||
tokens: expect.arrayContaining([
|
||||
{ kind: "word", value: "data", offset: 29 },
|
||||
]),
|
||||
});
|
||||
});
|
||||
|
||||
it.each([
|
||||
"INSTALL httpfs",
|
||||
"SELECT * FROM data; DROP TABLE data",
|
||||
"COPY data TO 'x.csv'",
|
||||
"PRAGMA version",
|
||||
])("rejects non-read-only statement %s", (source) => {
|
||||
expect(() => parseDuckDbQuery(source)).toThrow();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user