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:
@ -71,6 +71,51 @@ describe("CommandManager", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("connects to an existing background process stream", async () => {
|
||||
const capsule = new Capsule("cap_1", {
|
||||
baseUrl: "https://api.example.com",
|
||||
});
|
||||
const mockConnection = {
|
||||
close: vi.fn(),
|
||||
get isClosed() {
|
||||
return false;
|
||||
},
|
||||
send: vi.fn(),
|
||||
};
|
||||
const connectProcess = vi
|
||||
.spyOn(capsule.client.capsules, "connectProcess")
|
||||
.mockResolvedValue(mockConnection as never);
|
||||
|
||||
const result = await capsule.commands.streamProcess("123");
|
||||
|
||||
expect(connectProcess).toHaveBeenCalledWith("cap_1", "123", {
|
||||
onMessage: expect.any(Function),
|
||||
});
|
||||
expect(result).toBe(mockConnection);
|
||||
});
|
||||
|
||||
it("passes timeout to streamProcess", async () => {
|
||||
const capsule = new Capsule("cap_1", {
|
||||
baseUrl: "https://api.example.com",
|
||||
});
|
||||
const connectProcess = vi
|
||||
.spyOn(capsule.client.capsules, "connectProcess")
|
||||
.mockResolvedValue({
|
||||
close: vi.fn(),
|
||||
get isClosed() {
|
||||
return false;
|
||||
},
|
||||
send: vi.fn(),
|
||||
} as never);
|
||||
|
||||
await capsule.commands.streamProcess("worker", { timeoutMs: 5000 });
|
||||
|
||||
expect(connectProcess).toHaveBeenCalledWith("cap_1", "worker", {
|
||||
onMessage: expect.any(Function),
|
||||
timeoutMs: 5000,
|
||||
});
|
||||
});
|
||||
|
||||
it("streams command events over the exec WebSocket", async () => {
|
||||
const capsule = new Capsule("cap_1", {
|
||||
baseUrl: "https://api.example.com",
|
||||
|
||||
Reference in New Issue
Block a user