aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js')
-rw-r--r--test/js/node/net/node-net-server.test.ts55
-rw-r--r--test/js/node/tls/node-tls-connect.test.ts32
-rw-r--r--test/js/node/tls/node-tls-server.test.ts55
-rw-r--r--test/js/third_party/nodemailer/nodemailer.test.ts15
-rw-r--r--test/js/third_party/nodemailer/package.json6
-rw-r--r--test/js/third_party/nodemailer/process-nodemailer-fixture.js23
-rw-r--r--test/js/web/timers/process-setImmediate-fixture.js9
-rw-r--r--test/js/web/timers/setImmediate.test.js27
8 files changed, 112 insertions, 110 deletions
diff --git a/test/js/node/net/node-net-server.test.ts b/test/js/node/net/node-net-server.test.ts
index 398959bd6..3cdaa17e1 100644
--- a/test/js/node/net/node-net-server.test.ts
+++ b/test/js/node/net/node-net-server.test.ts
@@ -181,61 +181,6 @@ describe("net.createServer listen", () => {
);
});
- it("should listen on the correct port", done => {
- const { mustCall, mustNotCall } = createCallCheckCtx(done);
-
- const server: Server = createServer();
-
- let timeout: Timer;
- const closeAndFail = () => {
- clearTimeout(timeout);
- server.close();
- mustNotCall()();
- };
- server.on("error", closeAndFail);
- timeout = setTimeout(closeAndFail, 100);
-
- server.listen(
- 49027,
- mustCall(() => {
- const address = server.address() as AddressInfo;
- expect(address.address).toStrictEqual("::");
- expect(address.port).toStrictEqual(49027);
- expect(address.family).toStrictEqual("IPv6");
- server.close();
- done();
- }),
- );
- });
-
- it("should listen on the correct port with IPV4", done => {
- const { mustCall, mustNotCall } = createCallCheckCtx(done);
-
- const server: Server = createServer();
-
- let timeout: Timer;
- const closeAndFail = () => {
- clearTimeout(timeout);
- server.close();
- mustNotCall()();
- };
- server.on("error", closeAndFail);
- timeout = setTimeout(closeAndFail, 100);
-
- server.listen(
- 49026,
- "0.0.0.0",
- mustCall(() => {
- const address = server.address() as AddressInfo;
- expect(address.address).toStrictEqual("0.0.0.0");
- expect(address.port).toStrictEqual(49026);
- expect(address.family).toStrictEqual("IPv4");
- server.close();
- done();
- }),
- );
- });
-
it("should listen on unix domain socket", done => {
const { mustCall, mustNotCall } = createCallCheckCtx(done);
diff --git a/test/js/node/tls/node-tls-connect.test.ts b/test/js/node/tls/node-tls-connect.test.ts
new file mode 100644
index 000000000..791dba88a
--- /dev/null
+++ b/test/js/node/tls/node-tls-connect.test.ts
@@ -0,0 +1,32 @@
+import { TLSSocket, connect } from "tls";
+
+it("should work with alpnProtocols", done => {
+ try {
+ let socket: TLSSocket | null = connect({
+ ALPNProtocols: ["http/1.1"],
+ host: "bun.sh",
+ servername: "bun.sh",
+ port: 443,
+ rejectUnauthorized: false,
+ });
+
+ const timeout = setTimeout(() => {
+ socket?.end();
+ done("timeout");
+ }, 3000);
+
+ socket.on("error", err => {
+ clearTimeout(timeout);
+ done(err);
+ });
+
+ socket.on("secureConnect", () => {
+ clearTimeout(timeout);
+ done(socket?.alpnProtocol === "http/1.1" ? undefined : "alpnProtocol is not http/1.1");
+ socket?.end();
+ socket = null;
+ });
+ } catch (err) {
+ done(err);
+ }
+});
diff --git a/test/js/node/tls/node-tls-server.test.ts b/test/js/node/tls/node-tls-server.test.ts
index 6879d0927..2a6101b9f 100644
--- a/test/js/node/tls/node-tls-server.test.ts
+++ b/test/js/node/tls/node-tls-server.test.ts
@@ -195,61 +195,6 @@ describe("tls.createServer listen", () => {
);
});
- it("should listen on the correct port", done => {
- const { mustCall, mustNotCall } = createCallCheckCtx(done);
-
- const server: Server = createServer(COMMON_CERT);
-
- let timeout: Timer;
- const closeAndFail = () => {
- clearTimeout(timeout);
- server.close();
- mustNotCall()();
- };
- server.on("error", closeAndFail);
- timeout = setTimeout(closeAndFail, 100);
-
- server.listen(
- 49027,
- mustCall(() => {
- const address = server.address() as AddressInfo;
- expect(address.address).toStrictEqual("::");
- expect(address.port).toStrictEqual(49027);
- expect(address.family).toStrictEqual("IPv6");
- server.close();
- done();
- }),
- );
- });
-
- it("should listen on the correct port with IPV4", done => {
- const { mustCall, mustNotCall } = createCallCheckCtx(done);
-
- const server: Server = createServer(COMMON_CERT);
-
- let timeout: Timer;
- const closeAndFail = () => {
- clearTimeout(timeout);
- server.close();
- mustNotCall()();
- };
- server.on("error", closeAndFail);
- timeout = setTimeout(closeAndFail, 100);
-
- server.listen(
- 49026,
- "0.0.0.0",
- mustCall(() => {
- const address = server.address() as AddressInfo;
- expect(address.address).toStrictEqual("0.0.0.0");
- expect(address.port).toStrictEqual(49026);
- expect(address.family).toStrictEqual("IPv4");
- server.close();
- done();
- }),
- );
- });
-
it("should listen on unix domain socket", done => {
const { mustCall, mustNotCall } = createCallCheckCtx(done);
diff --git a/test/js/third_party/nodemailer/nodemailer.test.ts b/test/js/third_party/nodemailer/nodemailer.test.ts
new file mode 100644
index 000000000..265112608
--- /dev/null
+++ b/test/js/third_party/nodemailer/nodemailer.test.ts
@@ -0,0 +1,15 @@
+import { test, expect, describe } from "bun:test";
+import { bunRun } from "harness";
+import path from "path";
+
+describe("nodemailer", () => {
+ test("basic smtp", async () => {
+ try {
+ const info = bunRun(path.join(import.meta.dir, "process-nodemailer-fixture.js"));
+ expect(info.stdout).toBe("true");
+ expect(info.stderr || "").toBe("");
+ } catch (err: any) {
+ expect(err?.message || err).toBe("");
+ }
+ }, 10000);
+});
diff --git a/test/js/third_party/nodemailer/package.json b/test/js/third_party/nodemailer/package.json
new file mode 100644
index 000000000..08e98074f
--- /dev/null
+++ b/test/js/third_party/nodemailer/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "nodemailer",
+ "dependencies": {
+ "nodemailer": "6.9.3"
+ }
+}
diff --git a/test/js/third_party/nodemailer/process-nodemailer-fixture.js b/test/js/third_party/nodemailer/process-nodemailer-fixture.js
new file mode 100644
index 000000000..a54735f26
--- /dev/null
+++ b/test/js/third_party/nodemailer/process-nodemailer-fixture.js
@@ -0,0 +1,23 @@
+import nodemailer from "nodemailer";
+const account = await nodemailer.createTestAccount();
+const transporter = nodemailer.createTransport({
+ host: account.smtp.host,
+ port: account.smtp.port,
+ secure: account.smtp.secure,
+ auth: {
+ user: account.user, // generated ethereal user
+ pass: account.pass, // generated ethereal password
+ },
+});
+
+// send mail with defined transport object
+let info = await transporter.sendMail({
+ from: '"Fred Foo 👻" <foo@example.com>', // sender address
+ to: "example@gmail.com", // list of receivers
+ subject: "Hello ✔", // Subject line
+ text: "Hello world?", // plain text body
+ html: "<b>Hello world?</b>", // html body
+});
+const url = nodemailer.getTestMessageUrl(info);
+console.log(typeof url === "string" && url.length > 0);
+transporter.close();
diff --git a/test/js/web/timers/process-setImmediate-fixture.js b/test/js/web/timers/process-setImmediate-fixture.js
new file mode 100644
index 000000000..6ffd91c8d
--- /dev/null
+++ b/test/js/web/timers/process-setImmediate-fixture.js
@@ -0,0 +1,9 @@
+setImmediate(() => {
+ console.log("setImmediate");
+ return {
+ a: 1,
+ b: 2,
+ c: 3,
+ d: 4,
+ };
+});
diff --git a/test/js/web/timers/setImmediate.test.js b/test/js/web/timers/setImmediate.test.js
index 9cd6fa1c9..d00224e0f 100644
--- a/test/js/web/timers/setImmediate.test.js
+++ b/test/js/web/timers/setImmediate.test.js
@@ -1,4 +1,6 @@
import { it, expect } from "bun:test";
+import { bunExe, bunEnv } from "harness";
+import path from "path";
it("setImmediate", async () => {
var lastID = -1;
@@ -45,3 +47,28 @@ it("clearImmediate", async () => {
});
expect(called).toBe(false);
});
+
+it("setImmediate should not keep the process alive forever", async () => {
+ let process = null;
+ const success = async () => {
+ process = Bun.spawn({
+ cmd: [bunExe(), "run", path.join(import.meta.dir, "process-setImmediate-fixture.js")],
+ stdout: "ignore",
+ env: {
+ ...bunEnv,
+ NODE_ENV: undefined,
+ },
+ });
+ await process.exited;
+ process = null;
+ return true;
+ };
+
+ const fail = async () => {
+ await Bun.sleep(500);
+ process?.kill();
+ return false;
+ };
+
+ expect(await Promise.race([success(), fail()])).toBe(true);
+});