feat: align SDK with updated OpenAPI spec and add missing unit tests
- Update generated types from new openapi.yaml (capsule stats, usage, metrics, pause/resume lifecycle, host/channel management, auth flow) - Add Capsule pause/resume/ping/getMetrics lifecycle methods - Add Capsule.waitForReady abort signal support - Add PtyManager.connect and PtySession disposal - Fix HttpClient empty-body response handling (content-length: 0) - Add streamProcess() to CommandManager for background process streams - Add integration tests for capsule lifecycle, git, and PTY features - Add unit tests for AsyncQueue error paths, PtySession.close, Git.checkout without create, Git.add single string, Notebook.execCell error case, and PtyStartOptions fields
This commit is contained in:
@ -90,4 +90,36 @@ describeWithApiKey("Capsule live integration", () => {
|
||||
},
|
||||
waitTimeoutMs * 2 + 30_000,
|
||||
);
|
||||
|
||||
it(
|
||||
"destroys an owned live capsule when async disposed",
|
||||
async () => {
|
||||
let capsuleId: string | undefined;
|
||||
|
||||
try {
|
||||
const capsule = await Capsule.create(template, {
|
||||
...clientOpts,
|
||||
timeout_sec: 60,
|
||||
});
|
||||
capsuleId = capsule.id;
|
||||
|
||||
await capsule.waitForReady({
|
||||
intervalMs: 2_000,
|
||||
timeoutMs: waitTimeoutMs,
|
||||
});
|
||||
|
||||
await capsule[Symbol.asyncDispose]();
|
||||
|
||||
await expect(
|
||||
Capsule.connect(capsuleId, clientOpts).getInfo(),
|
||||
).resolves.toMatchObject({ id: capsuleId, status: "stopped" });
|
||||
capsuleId = undefined;
|
||||
} finally {
|
||||
if (capsuleId) {
|
||||
await Capsule.destroy(capsuleId, clientOpts).catch(() => undefined);
|
||||
}
|
||||
}
|
||||
},
|
||||
waitTimeoutMs + 30_000,
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user