Initial import from garrytan/gstack@026751e (main snapshot via local relay)
Some checks failed
Workflow Lint / actionlint (push) Has been cancelled
Build CI Image / build (push) Has been cancelled
Skill Docs Freshness / check-freshness (push) Has been cancelled
Periodic Evals / build-image (push) Has been cancelled
Periodic Evals / evals (map[file:test/codex-e2e.test.ts name:e2e-codex]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/gemini-e2e.test.ts name:e2e-gemini]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-design.test.ts name:e2e-design]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-plan.test.ts name:e2e-plan]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-bugs.test.ts name:e2e-qa-bugs]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-workflow.test.ts name:e2e-qa-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-review.test.ts name:e2e-review]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-workflow.test.ts name:e2e-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-routing-e2e.test.ts name:e2e-routing]) (push) Has been cancelled
Some checks failed
Workflow Lint / actionlint (push) Has been cancelled
Build CI Image / build (push) Has been cancelled
Skill Docs Freshness / check-freshness (push) Has been cancelled
Periodic Evals / build-image (push) Has been cancelled
Periodic Evals / evals (map[file:test/codex-e2e.test.ts name:e2e-codex]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/gemini-e2e.test.ts name:e2e-gemini]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-design.test.ts name:e2e-design]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-plan.test.ts name:e2e-plan]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-bugs.test.ts name:e2e-qa-bugs]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-workflow.test.ts name:e2e-qa-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-review.test.ts name:e2e-review]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-workflow.test.ts name:e2e-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-routing-e2e.test.ts name:e2e-routing]) (push) Has been cancelled
Source: https://github.com/garrytan/gstack/commit/026751e
This commit is contained in:
35
browse/test/state-ttl.test.ts
Normal file
35
browse/test/state-ttl.test.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* State file TTL security tests
|
||||
*
|
||||
* Verifies that state save includes savedAt timestamp and state load
|
||||
* warns on old state files.
|
||||
*/
|
||||
|
||||
import { describe, test, expect } from 'bun:test';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
const META_SRC = fs.readFileSync(path.join(import.meta.dir, '../src/meta-commands.ts'), 'utf-8');
|
||||
|
||||
describe('State file TTL', () => {
|
||||
test('state save includes savedAt timestamp in output', () => {
|
||||
// Verify the save code writes savedAt to the state file
|
||||
const saveBlock = META_SRC.slice(
|
||||
META_SRC.indexOf("if (action === 'save')"),
|
||||
META_SRC.indexOf("if (action === 'load')"),
|
||||
);
|
||||
expect(saveBlock).toContain('savedAt: new Date().toISOString()');
|
||||
});
|
||||
|
||||
test('state load warns when savedAt is older than 7 days', () => {
|
||||
// Verify the load code checks savedAt age and warns
|
||||
const loadStart = META_SRC.indexOf("if (action === 'load')");
|
||||
// Find the second occurrence of "Usage: state save|load" (appears after the load block)
|
||||
const loadEnd = META_SRC.indexOf("Usage: state save|load", loadStart);
|
||||
const loadBlock = META_SRC.slice(loadStart, loadEnd);
|
||||
expect(loadBlock).toContain('data.savedAt');
|
||||
expect(loadBlock).toContain('SEVEN_DAYS');
|
||||
expect(loadBlock).toContain('console.warn');
|
||||
expect(loadBlock).toContain('days old');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user