mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 21:46:49 +00:00
test(db): dialect helper refuses malformed column references and day counts
This commit is contained in:
@@ -41,4 +41,25 @@ describe('sql-functions (sqlite)', () => {
|
||||
.execute('get', false);
|
||||
expect(String((row as { now: string }).now)).toMatch(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/);
|
||||
});
|
||||
|
||||
it('SQLF-004: dateOf rejects anything that is not a plain column reference', () => {
|
||||
expect(() => dateOf('u.created_at); DROP TABLE users; --')).toThrow(/not a column reference/);
|
||||
expect(() => dateOf('u.created_at.extra')).toThrow(/not a column reference/);
|
||||
expect(() => dateOf('')).toThrow(/not a column reference/);
|
||||
});
|
||||
|
||||
it('SQLF-005: dateAdd rejects a non-integer day count', () => {
|
||||
expect(() => dateAdd('u.created_at', 1.5)).toThrow(/integer day count/);
|
||||
expect(() => dateAdd('u.created_at', Number.NaN)).toThrow(/integer day count/);
|
||||
});
|
||||
|
||||
it('SQLF-006: dateAdd shifts backwards for a negative day count', async () => {
|
||||
const { user } = createUser(testDb);
|
||||
testDb.prepare("UPDATE users SET created_at = '2026-09-21 13:05:09' WHERE id = ?").run(user.id);
|
||||
const row = await t.em.createQueryBuilder(Users, 'u')
|
||||
.select([dateAdd('u.created_at', -10).as('d')])
|
||||
.where({ id: user.id })
|
||||
.execute('get', false);
|
||||
expect(row).toEqual({ d: '2026-09-11' });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user