diff options
Diffstat (limited to 'test/bun.js/install/bun-install.test.ts')
-rw-r--r-- | test/bun.js/install/bun-install.test.ts | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/bun.js/install/bun-install.test.ts b/test/bun.js/install/bun-install.test.ts new file mode 100644 index 000000000..8a05ef802 --- /dev/null +++ b/test/bun.js/install/bun-install.test.ts @@ -0,0 +1,80 @@ +import { spawn, spawnSync } from "bun"; +import { describe, expect, it, test } from "bun:test"; +import { bunExe } from "bunExe"; + +test("bun install", async () => { + const urls = []; + const server = Bun.serve({ + async fetch(request) { + try { + expect(request.method).toBe("GET"); + expect(request.headers.get("accept")).toBe("application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"); + expect(await request.text()).toBe(""); + urls.push(request.url); + return new Response("bar", { status: 404 }); + } finally { + server.stop(); + } + }, + port: 54321, + }); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install", "foo", "--config", import.meta.dir + "/basic.toml"], + stdout: null, + stdin: "pipe", + stderr: "pipe", + env: { + ...process.env, + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + expect(stdout).toBeDefined(); + expect(stderr).toBeDefined(); + expect(await new Response(stdout).text()).toBe(""); + var err = await new Response(stderr).text(); + expect(err.split(/\n/)).toContain('error: package "foo" not found localhost/foo 404'); + expect(urls).toContain("http://localhost:54321/foo"); + expect(await exited).toBe(1); +}); + +test("bun install @scoped", async () => { + let seen_token = false; + const url = "http://localhost:54321/@foo/bar"; + const urls = []; + const server = Bun.serve({ + async fetch(request) { + try { + expect(request.method).toBe("GET"); + expect(request.headers.get("accept")).toBe("application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"); + if (request.url === url) { + expect(request.headers.get("authorization")).toBe("Bearer bar"); + seen_token = true; + } + expect(await request.text()).toBe(""); + urls.push(request.url); + return new Response("Tea?", { status: 418 }); + } finally { + server.stop(); + } + }, + port: 54321, + }); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install", "@foo/bar", "--config", import.meta.dir + "/basic.toml"], + stdout: null, + stdin: "pipe", + stderr: "pipe", + env: { + ...process.env, + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + expect(stdout).toBeDefined(); + expect(stderr).toBeDefined(); + expect(await new Response(stdout).text()).toBe(""); + var err = await new Response(stderr).text(); + expect(err.split(/\n/)).toContain(`GET ${url} - 418`); + expect(urls).toContain(url); + expect(seen_token).toBe(true); + expect(await exited).toBe(1); +}); |