Skip to content

Commit 535a01d

Browse files
ci: add Node.js 18 in the test matrix
A few notes: - the certificates were recreated because Node.js 18 includes OpenSSL v3, which has deprecated support for some legacy ciphers (like RC2) - eiows currently fails to build on Node.js 18, so the tests are temporarily skipped See also: https://github.com/nodejs/Release
1 parent 1b71a6f commit 535a01d

File tree

8 files changed

+90
-80
lines changed

8 files changed

+90
-80
lines changed

.github/workflows/ci.yml

+21-7
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,35 @@ on:
66
schedule:
77
- cron: '0 0 * * 0'
88

9+
permissions:
10+
contents: read
11+
912
jobs:
1013
test-node:
1114
runs-on: ubuntu-latest
15+
timeout-minutes: 10
1216

1317
strategy:
1418
matrix:
15-
node-version: [14, 16]
19+
node-version:
20+
- 10
21+
- 18
1622

1723
steps:
18-
- uses: actions/checkout@v2
24+
- name: Checkout repository
25+
uses: actions/checkout@v3
26+
1927
- name: Use Node.js ${{ matrix.node-version }}
20-
uses: actions/setup-node@v1
28+
uses: actions/setup-node@v3
2129
with:
2230
node-version: ${{ matrix.node-version }}
23-
- run: npm ci
24-
- run: npm test
25-
env:
26-
CI: true
31+
32+
- name: Install dependencies
33+
run: npm ci
34+
35+
- name: Run tests
36+
run: npm test
37+
38+
- name: Run tests with µWebSockets.js
39+
run: npm run test:uws
40+
if: ${{ matrix.node-version == '18' }}

package-lock.json

+13-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
},
4545
"devDependencies": {
4646
"babel-eslint": "^8.0.2",
47-
"eiows": "^3.8.0",
47+
"eiows": "^4.1.2",
4848
"engine.io-client": "6.2.0",
4949
"engine.io-client-v3": "npm:engine.io-client@3.5.2",
5050
"expect.js": "^0.3.1",
@@ -53,17 +53,17 @@
5353
"rimraf": "^3.0.2",
5454
"superagent": "^3.8.1",
5555
"typescript": "^4.4.3",
56-
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.0.0"
56+
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.15.0"
5757
},
5858
"scripts": {
5959
"compile": "rimraf ./build && tsc",
60-
"test": "npm run compile && npm run format:check && npm run test:default && npm run test:compat-v3 && npm run test:eiows && npm run test:uws",
60+
"test": "npm run compile && npm run format:check && npm run test:default && npm run test:compat-v3",
6161
"test:default": "mocha --bail --exit",
6262
"test:compat-v3": "EIO_CLIENT=3 mocha --exit",
6363
"test:eiows": "EIO_WS_ENGINE=eiows mocha --exit",
6464
"test:uws": "EIO_WS_ENGINE=uws mocha --exit",
6565
"format:check": "prettier --check \"lib/**/*.ts\" \"test/**/*.js\"",
66-
"format:fix": "prettier --write \"lib/**/*.ts' 'test/**/*.js\"",
66+
"format:fix": "prettier --write \"lib/**/*.ts\" \"test/**/*.js\"",
6767
"prepack": "npm run compile"
6868
},
6969
"repository": {

test/common.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const { listen, uServer } = require("..");
2-
const { App, us_socket_local_port } = require("uWebSockets.js");
32
const { Socket } =
43
process.env.EIO_CLIENT === "3"
54
? require("engine.io-client-v3")
@@ -18,6 +17,7 @@ exports.listen = (opts, fn) => {
1817
opts.allowEIO3 = true;
1918

2019
if (process.env.EIO_WS_ENGINE === "uws") {
20+
const { App, us_socket_local_port } = require("uWebSockets.js");
2121
const engine = new uServer(opts);
2222
const app = App();
2323
engine.attach(app, opts);

test/fixtures/client.crt

+20-20
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIDojCCAYoCAQIwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQVUxEzARBgNV
3-
BAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
4-
ZDAeFw0xNTExMTgxNzM4MDVaFw0yNTExMTUxNzM4MDVaMG0xCzAJBgNVBAYTAkZJ
5-
MRMwEQYDVQQIEwpTb21lLVN0YXRlMREwDwYDVQQHEwhIZWxzaW5raTEhMB8GA1UE
6-
ChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRMwEQYDVQQDEwpGb28gQ2xpZW50
7-
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD66Rn8P8O+MK13sPxIIEMHXDRZ
8-
heRLqGNlNsXzaBLWnKSlV+Wxi1OdCimtAh4ZAVRt1JkK9mQEAGdxC8TRwDMS02+E
9-
UK1H1zvh77Ek4ZcHW8p5CVEm53FTmO+jhL+7BQYXW1yi/XURBv2xm3Q95I7895ag
10-
prMFI8HiOu/Hdi/iDQIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQBynfI9C5/zcukL
11-
oQmUSEg5ys99bGUa8QyhSRbp5nb8Wl76KRIxpqGxl+3wcyhES3cH1Vgv4CMvrVag
12-
Qov4TG4B30MvEvd17BMD1BmDNqjOInW72ujS9wo+2K6NASw1r/96Ay7dJ7+3HE0r
13-
gs9yaiRL5UG4y7Sp1gy5JynXNozNowVP/cy84L9K2oyiJpyc5Owg93i3E7X+/eXd
14-
JfFTO6ZfTGNdN+hMjleyj/LXOsoeaYg3GhO9i99nzf3u0HBXI1wRbkRPJ0aNSkH0
15-
VEValjOGeRdKvlZhsf7x8Kg7Nk7fyIyhmYU/tBOSUasFiB7CfKN/m0P1e6DMqihW
16-
U/k4bzoVND3KuNH5EZmfSs3BE/w5fakObCpkxAMMm6Lxtb6qBV2HlWFfatcL2WoM
17-
nqdCEPjct7crPbgtn3Pa/erlvmAWFoqsCu4Xn4SRGP1JtGXbCLaAW4S5CffaODRp
18-
4urgxD8bfk9Mm/9b/xAAMNkcAi4oBikVTnVWrpul/qIhY0iMfqIu6MkbWAthMT4h
19-
th5AggLxl6+dcPGNaliC5JpRtCis+fWuKxwbf8YKSEIwi0VBQbPP2ATinqfOJ1Yo
20-
/tymAa3IKukil6RuTECTpE06x+Ns0rMJTSN2SGd4AG/n1/SAjhBHoH1J0J4JG30f
21-
5fx0ax5MzGuTrt9yNEUvIrKj6MIgmw==
2+
MIIDtTCCAZ0CFCt+tjtA9647yZp8eNZurQtNp4x+MA0GCSqGSIb3DQEBDQUAMEUx
3+
CzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRl
4+
cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjIxMTE4MjEyMzU4WhcNMzIxMTE1MjEy
5+
MzU4WjBtMQswCQYDVQQGEwJGSTETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UE
6+
BxMISGVsc2lua2kxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDET
7+
MBEGA1UEAxMKRm9vIENsaWVudDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
8+
+ukZ/D/DvjCtd7D8SCBDB1w0WYXkS6hjZTbF82gS1pykpVflsYtTnQoprQIeGQFU
9+
bdSZCvZkBABncQvE0cAzEtNvhFCtR9c74e+xJOGXB1vKeQlRJudxU5jvo4S/uwUG
10+
F1tcov11EQb9sZt0PeSO/PeWoKazBSPB4jrvx3Yv4g0CAwEAATANBgkqhkiG9w0B
11+
AQ0FAAOCAgEAMgC3j2XJ5IPB1raLrnJh8vTncnqMe6OmXpaxk0ZYb42Y66BJKlaE
12+
UpLmLYIiICmuH6R4lc00W5nexPyCT4g+1CUs3PhOJGEwWOBodv6dFJ4ayGWln1aD
13+
QX+W+PRuJAazd7wruVnPxVoEspVO+hcr5byX0F3Auqd9jdQZwFXsWvAo7tZxUnvC
14+
gdjnHt5QgMxqeqzZPTw7dreMsIjN6NrUPWaa26VCvLH0Nv+Jgs+RSVwBKp8tO3e+
15+
763bi8Htpzt4YfAB7EuRykGlAI42C5ZDzcsq30NpSGgOwveHnlvdl6KhC0QaK71h
16+
QmXwBmEUNX1f+XRnvk+fNb1acfddLLYoPP0zS1BEYOOs7KkyScagsUMsnUSOfv3d
17+
+etklFvaXFD3+b/KwljH3WH1dG4ro3J6GHXX05ncDydDDksYi6aC3wpPZYY7eMFx
18+
RWSxMZHX/bD1YH80a2+jBoskTqz3ZFkkGySMfUcpDCUwQuiwjhLp4sew9RDRB/lv
19+
kJezNSoYgnT44CT+IPoPEL1m5Evkm3C7fVzvnldO3TsWmOoza99xrQ+9gtzlWxgb
20+
Av6jNbnGG1HgDYcvxpRMKWe+6fUAHCcP0PuO+2rcygemNtEKzfMY6Py66w5L9/WW
21+
t0UJWU1rR+kLDS3qLfQqvnbvUMroZ9zxE9CJq6+aKEQEpc79lfiv464=
2222
-----END CERTIFICATE-----

test/fixtures/client.pfx

24 Bytes
Binary file not shown.

test/fixtures/server.crt

+20-20
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIDoTCCAYkCAQEwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQVUxEzARBgNV
3-
BAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
4-
ZDAeFw0xNTExMTgxNzM4MDhaFw0yNTExMTUxNzM4MDhaMGwxCzAJBgNVBAYTAkZJ
5-
MRMwEQYDVQQIEwpTb21lLVN0YXRlMREwDwYDVQQHEwhIZWxzaW5raTEhMB8GA1UE
6-
ChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDEwlsb2NhbGhvc3Qw
7-
gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMBAs08Mguowi6W8+BrqiByLr3Fh
8-
pKnnRTtO/wfDDebgP3Da5vIapHt0NbbSIYkju1M1y/9S0uqCScSIIFeSr8wOvmB1
9-
c0jRX+P6oA6p8lJXG/HEfEuu3uK+Olkds7sHcrtuRaYLEAXNYCUTlT0VdfVvxV96
10-
0m/5wMRpexjC5h+jAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBACvxt9oSl8zDz2i9
11-
DFtBVA87TYkv7MPqc6HKzpzKjUpay1CmTrXxaw9WKXGC47aoj/wXNqe1W/w5KUdH
12-
79Z7n/TKpQJ9hj3NQJerFGD5EGu+rL4/FshMiwjp0/AiuAIThVa11BDzmEltwf86
13-
mHfIhRG89m3LmJbCzOLTjqjnt3vL5fcW0KEN+5TDFxINbXC6o+ioZgMeh3n+d01D
14-
MZImN01A0ZwKch81IDmPZD/IrtCLGwG/YfTaQUshMHUaQIKqDIyzDb/VgWGh1vET
15-
J6Zpbvr3xc+mg34588qd6JcyND6X1LKBvLUNqcIrcAaChbabyPUCy1w+XDgcATZg
16-
uerXcELSApivaSVGZVNkrbUskDySjZp2NhpEhDFim3HZye7CUvVIM5AI8BPeI5ZA
17-
nYi2kcya3e9/u3YxfsCklbxCiBUMhVYT3EVHNILr0Eik4NJp92xBLyRk770WvwMc
18-
MAiRNK5+XM0DffzHe9PrcopWRwvPsh8ce9IUsTJQjx0zALc8JKT6VN8J1cNseZR5
19-
ALuTasgFliRFYCwUJcwCpoXUDJas7hbBDcbecMbFKDCrmUbG6moRqETtljDtn4na
20-
cKwaAk2sp9CSaNoLAsWd45ElXpeoKtNz7dFsRf1nSu2GPdE2SdaPJ6br+bKcO6TW
21-
LRObFtVqZM7TTrPUuVji72CfFMtl
2+
MIIDtDCCAZwCFCt+tjtA9647yZp8eNZurQtNp4x/MA0GCSqGSIb3DQEBDQUAMEUx
3+
CzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRl
4+
cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjIxMTE4MjEyNDExWhcNMzIxMTE1MjEy
5+
NDExWjBsMQswCQYDVQQGEwJGSTETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UE
6+
BxMISGVsc2lua2kxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDES
7+
MBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA
8+
QLNPDILqMIulvPga6ogci69xYaSp50U7Tv8Hww3m4D9w2ubyGqR7dDW20iGJI7tT
9+
Ncv/UtLqgknEiCBXkq/MDr5gdXNI0V/j+qAOqfJSVxvxxHxLrt7ivjpZHbO7B3K7
10+
bkWmCxAFzWAlE5U9FXX1b8VfetJv+cDEaXsYwuYfowIDAQABMA0GCSqGSIb3DQEB
11+
DQUAA4ICAQCDSuFPJ++HY5WBhpnumbZ7+T0ReWKaerdNnQ2Xgrna5mZfB2xeRkvY
12+
XeJ9VBCpGgEZKCKkhZCjomn/kLkYzRk4Sqr1ivN5NWl6G/9UTttHdRa3xiR1NhKI
13+
AMYghpel30w5e+cWtsdR06P2FvZMuiMFCyqsbPf1xcEIAXN7HJDswq6g0ppTVZ4L
14+
sXljG/J0vp+jAst4XKGLaGqnt8JaBnpNX9NO2Up3h5j7Pa4Nhm/LZ3Ku5ZVDmS1d
15+
B98Bsgr6tQSSyPNfZW0tGXELsNX1I+wUFw9IXFadRTHkhjeT/GhFw3i12uY7rqzm
16+
uJegTtWDkp1QOajhYhLD9WGXb9teldkAAgZawD6ax/uAzqx/4mBFvsUa3FMcua8k
17+
HF9P2lLzKAcyaKt1cvlfUYmDVZ2Gh+9PgM8SqRpMIqK5jMRvFgemxJXS9BMBrQLp
18+
TCvgRwQZD4mUloRlGNewKfJ0oQ1rY29vwdjTL8+BBS/GR8EuzYnqJG/D2nK0guIN
19+
ze+cSDghA5N2pp/ffnpLWmkIDO+fsGAj3eApLhbPQ1xCXnEv6fOjgUmnxdt41m8d
20+
+pEVBICohnvYgoEERDNAi1onJlBd/eyk0Jn37QiwqhQyrmfgwncvlt2SyzS1IZ7s
21+
cEYreG6QHghBhgYiYo0FMuDCjT6g6Ga+T8nOp0xpZtGEWvHwjLjxvQ==
2222
-----END CERTIFICATE-----

test/server.js

+11-15
Original file line numberDiff line numberDiff line change
@@ -3646,7 +3646,8 @@ describe("server", () => {
36463646
}
36473647
});
36483648

3649-
it("should allow loading of other websocket server implementation like eiows", done => {
3649+
// FIXME eiows fails to build on Node.js 18 (and has dropped support for Node.js 10)
3650+
it.skip("should allow loading of other websocket server implementation like eiows", done => {
36503651
const engine = listen(
36513652
{ allowUpgrades: false, wsEngine: require("eiows").Server },
36523653
port => {
@@ -3667,19 +3668,20 @@ describe("server", () => {
36673668
});
36683669

36693670
describe("remoteAddress", () => {
3671+
const POSSIBLE_VALUES = [
3672+
"0000:0000:0000:0000:0000:0000:0000:0001",
3673+
"0000:0000:0000:0000:0000:ffff:7f00:0001",
3674+
"::ffff:127.0.0.1",
3675+
"::1"
3676+
];
3677+
36703678
it("should be defined (polling)", done => {
36713679
const engine = listen({ transports: ["polling"] }, port => {
36723680
new ClientSocket(`ws://localhost:${port}`, {
36733681
transports: ["polling"]
36743682
});
36753683
engine.on("connection", socket => {
3676-
if (process.env.EIO_WS_ENGINE === "uws") {
3677-
expect(socket.remoteAddress).to.be(
3678-
"0000:0000:0000:0000:0000:ffff:7f00:0001"
3679-
);
3680-
} else {
3681-
expect(socket.remoteAddress).to.be("::ffff:127.0.0.1");
3682-
}
3684+
expect(POSSIBLE_VALUES).to.contain(socket.remoteAddress);
36833685
done();
36843686
});
36853687
});
@@ -3691,13 +3693,7 @@ describe("server", () => {
36913693
transports: ["websocket"]
36923694
});
36933695
engine.on("connection", socket => {
3694-
if (process.env.EIO_WS_ENGINE === "uws") {
3695-
expect(socket.remoteAddress).to.be(
3696-
"0000:0000:0000:0000:0000:ffff:7f00:0001"
3697-
);
3698-
} else {
3699-
expect(socket.remoteAddress).to.be("::ffff:127.0.0.1");
3700-
}
3696+
expect(POSSIBLE_VALUES).to.contain(socket.remoteAddress);
37013697
done();
37023698
});
37033699
});

0 commit comments

Comments
 (0)