From 57eab8409bd5dd284aacd744c9458d653b600866 Mon Sep 17 00:00:00 2001 From: regginator Date: Wed, 14 Jun 2023 14:48:11 -0500 Subject: [PATCH] Add wss-specific unit test --- Cargo.lock | 86 +++++++++++++++++++++++++++++++++++++++ tests/net/socket/wss.luau | 25 ++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 tests/net/socket/wss.luau diff --git a/Cargo.lock b/Cargo.lock index 01ab725..8c325a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -459,6 +459,22 @@ dependencies = [ "version_check", ] +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + [[package]] name = "cpufeatures" version = "0.2.7" @@ -1353,6 +1369,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + [[package]] name = "option-ext" version = "0.2.0" @@ -1852,6 +1874,18 @@ dependencies = [ "sct", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.2" @@ -1883,6 +1917,15 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +[[package]] +name = "schannel" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +dependencies = [ + "windows-sys 0.42.0", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -1899,6 +1942,29 @@ dependencies = [ "untrusted", ] +[[package]] +name = "security-framework" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "0.9.0" @@ -2361,7 +2427,10 @@ checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" dependencies = [ "futures-util", "log", + "rustls", + "rustls-native-certs", "tokio", + "tokio-rustls", "tungstenite", ] @@ -2459,10 +2528,12 @@ dependencies = [ "httparse", "log", "rand", + "rustls", "sha1 0.10.5", "thiserror", "url", "utf-8", + "webpki", ] [[package]] @@ -2715,6 +2786,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-sys" version = "0.45.0" diff --git a/tests/net/socket/wss.luau b/tests/net/socket/wss.luau new file mode 100644 index 0000000..a8a841c --- /dev/null +++ b/tests/net/socket/wss.luau @@ -0,0 +1,25 @@ +local net = require("@lune/net") +local stdio = require("@lune/stdio") +local task = require("@lune/task") + +-- net.socket() will inherently spit out an error if init connection fails, but for +-- the sake of this test, prot. call checks are unnecessary. Also, we're going to use +-- Discord's WebSocket gateway server for soley testing wss, as we don't need to auth +-- or anything for that; we just want to make sure it functions.. +print("Connecting to Discord wss gateway..") +local socket = net.socket("wss://gateway.discord.gg/?v=10&encoding=json") +print("Connected!") -- Would've errored at net.socket() call before this if init connection err + +while not socket.closeCode do + local nextMessage = socket.next() + + if nextMessage then + print(`{stdio.style("bold")}Discord:{stdio.style("reset")}`, nextMessage) + + print("Will (deliberately) close the socket in 2 seconds..") + task.wait(2) + socket.close(1000) + end +end + +print(`Connection to socket closed with closeCode {socket.closeCode}`)