aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-05-22 19:48:07 -0700
committerGravatar GitHub <noreply@github.com> 2023-05-22 19:48:07 -0700
commite5501551f44d2c307aeaca2e95436d28ae2bf1c1 (patch)
treee97d02145862529f151fdb612ac4dd23a11b99cb
parente57dcdfcf1f90953d3e6ec412fa31d74a39f2a25 (diff)
downloadbun-e5501551f44d2c307aeaca2e95436d28ae2bf1c1.tar.gz
bun-e5501551f44d2c307aeaca2e95436d28ae2bf1c1.tar.zst
bun-e5501551f44d2c307aeaca2e95436d28ae2bf1c1.zip
add some connect test and type changes (#3013)
-rw-r--r--packages/bun-types/bun.d.ts4
-rw-r--r--test/js/bun/net/connect-returns-socket-unix.js53
-rw-r--r--test/js/bun/net/connect-returns-socket.js50
-rw-r--r--test/js/bun/net/echo.js2
-rw-r--r--test/js/bun/net/socket.test.ts14
5 files changed, 120 insertions, 3 deletions
diff --git a/packages/bun-types/bun.d.ts b/packages/bun-types/bun.d.ts
index 381e888a3..698bb8b2b 100644
--- a/packages/bun-types/bun.d.ts
+++ b/packages/bun-types/bun.d.ts
@@ -3139,10 +3139,10 @@ declare module "bun" {
*/
export function connect<Data = undefined>(
options: TCPSocketConnectOptions<Data>,
- ): Promise<TCPSocketListener<typeof options>>;
+ ): Promise<Socket<Data>>;
export function connect<Data = undefined>(
options: UnixSocketOptions<Data>,
- ): Promise<UnixSocketListener<typeof options>>;
+ ): Promise<Socket<Data>>;
/**
*
diff --git a/test/js/bun/net/connect-returns-socket-unix.js b/test/js/bun/net/connect-returns-socket-unix.js
new file mode 100644
index 000000000..1c6c80545
--- /dev/null
+++ b/test/js/bun/net/connect-returns-socket-unix.js
@@ -0,0 +1,53 @@
+import fs from "fs";
+import os from "os";
+
+let resolve;
+const promise = new Promise(r => (resolve = r));
+
+const unix = os.tmpdir() + "/bun-connect-unix-socket-test.socket";
+
+const server = Bun.listen({
+ unix,
+ socket: {
+ open(socket) {
+ console.log("SERVER OPENED");
+ },
+ data(socket, buffer) {
+ socket.write(buffer);
+ },
+ error(socket, err) {
+ console.log("SERVER ERRED", err);
+ },
+ },
+});
+
+const client = await Bun.connect({
+ unix,
+ socket: {
+ open(socket) {
+ console.log("CLIENT OPENED");
+ socket.write("Hello, world!");
+ },
+ data(socket, buffer) {
+ console.log("CLIENT RECEIVED", buffer.toString());
+ if (buffer.toString().includes("From returned socket")) {
+ resolve();
+ }
+ },
+ },
+});
+
+console.log(client.localPort);
+client.write("From returned socket");
+
+setTimeout(() => {
+ console.error("Test Failed");
+ process.exit(1);
+}, 1000);
+
+await promise;
+
+client.end();
+server.stop();
+
+process.exit(0);
diff --git a/test/js/bun/net/connect-returns-socket.js b/test/js/bun/net/connect-returns-socket.js
new file mode 100644
index 000000000..aee2c29cb
--- /dev/null
+++ b/test/js/bun/net/connect-returns-socket.js
@@ -0,0 +1,50 @@
+let resolve;
+const promise = new Promise(r => (resolve = r));
+
+const server = Bun.listen({
+ hostname: "localhost",
+ port: 0,
+ socket: {
+ open(socket) {
+ console.log("SERVER OPENED");
+ },
+ data(socket, buffer) {
+ socket.write(buffer);
+ },
+ error(socket, err) {
+ console.log("SERVER ERRED", err);
+ },
+ },
+});
+
+const client = await Bun.connect({
+ hostname: "localhost",
+ port: server.port,
+ socket: {
+ open(socket) {
+ console.log("CLIENT OPENED");
+ socket.write("Hello, world!");
+ },
+ data(socket, buffer) {
+ console.log("CLIENT RECEIVED", buffer.toString());
+ if (buffer.toString().includes("From returned socket")) {
+ resolve();
+ }
+ },
+ },
+});
+
+console.log(client.localPort);
+client.write("From returned socket");
+
+setTimeout(() => {
+ console.error("Test Failed");
+ process.exit(1);
+}, 1000);
+
+await promise;
+
+client.end();
+server.stop();
+
+process.exit(0);
diff --git a/test/js/bun/net/echo.js b/test/js/bun/net/echo.js
index 28ded3658..97c61d011 100644
--- a/test/js/bun/net/echo.js
+++ b/test/js/bun/net/echo.js
@@ -74,7 +74,7 @@ const server = Bun.listen(
}),
);
-await Bun.connect({
+const socket = await Bun.connect({
...createOptions("[Client]", "request"),
port: server.port,
});
diff --git a/test/js/bun/net/socket.test.ts b/test/js/bun/net/socket.test.ts
index 47b33d1d4..1da000834 100644
--- a/test/js/bun/net/socket.test.ts
+++ b/test/js/bun/net/socket.test.ts
@@ -27,6 +27,20 @@ it("should keep process alive only when active", async () => {
).toEqual(["[Client] OPENED", "[Client] GOT response", "[Client] CLOSED"]);
});
+it("connect() should return the socket object", async () => {
+ const { exited, stdout, stderr } = spawn({
+ cmd: [bunExe(), "connect-returns-socket.js"],
+ cwd: import.meta.dir,
+ stdout: "pipe",
+ stdin: null,
+ stderr: "pipe",
+ env: bunEnv,
+ });
+
+ expect(await exited).toBe(0);
+ expect(await new Response(stderr).text()).toBe("");
+});
+
it("listen() should throw connection error for invalid host", () => {
expect(() => {
const handlers: SocketHandler = {