| // Flags: --expose-internals --no-warnings |
| 'use strict'; |
| |
| // Tests the availability and correctness of internalBinding(quic) |
| |
| const common = require('../common'); |
| if (!common.hasQuic) |
| common.skip('missing quic'); |
| |
| const assert = require('assert'); |
| const { internalBinding } = require('internal/test/binding'); |
| |
| const quic = internalBinding('quic'); |
| assert(quic); |
| |
| assert(quic.constants); |
| |
| // Version numbers used to identify IETF drafts are created by |
| // adding the draft number to 0xff0000, in this case 19 (25). |
| assert.strictEqual(quic.constants.NGTCP2_PROTO_VER.toString(16), 'ff00001d'); |
| assert.strictEqual(quic.constants.NGHTTP3_ALPN_H3, '\u0005h3-29'); |
| |
| assert.strictEqual(quic.constants.NGTCP2_NO_ERROR, 0); |
| assert.strictEqual(quic.constants.NGTCP2_INTERNAL_ERROR, 1); |
| assert.strictEqual(quic.constants.NGTCP2_CONNECTION_REFUSED, 2); |
| assert.strictEqual(quic.constants.NGTCP2_FLOW_CONTROL_ERROR, 3); |
| assert.strictEqual(quic.constants.NGTCP2_STREAM_LIMIT_ERROR, 4); |
| assert.strictEqual(quic.constants.NGTCP2_STREAM_STATE_ERROR, 5); |
| assert.strictEqual(quic.constants.NGTCP2_FINAL_SIZE_ERROR, 6); |
| assert.strictEqual(quic.constants.NGTCP2_FRAME_ENCODING_ERROR, 7); |
| assert.strictEqual(quic.constants.NGTCP2_TRANSPORT_PARAMETER_ERROR, 8); |
| assert.strictEqual(quic.constants.NGTCP2_CONNECTION_ID_LIMIT_ERROR, 9); |
| assert.strictEqual(quic.constants.NGTCP2_PROTOCOL_VIOLATION, 0xa); |
| assert.strictEqual(quic.constants.NGTCP2_INVALID_TOKEN, 0xb); |
| assert.strictEqual(quic.constants.NGTCP2_APPLICATION_ERROR, 0xc); |
| assert.strictEqual(quic.constants.NGTCP2_CRYPTO_BUFFER_EXCEEDED, 0xd); |
| assert.strictEqual(quic.constants.NGTCP2_KEY_UPDATE_ERROR, 0xe); |
| assert.strictEqual(quic.constants.NGTCP2_CRYPTO_ERROR, 0x100); |
| |
| // The following just tests for the presence of things we absolutely need. |
| // They don't test the functionality of those things. |
| |
| assert(quic.sessionConfig instanceof Float64Array); |
| assert(quic.http3Config instanceof Float64Array); |
| |
| assert(quic.QuicSocket); |
| assert(quic.QuicEndpoint); |
| assert(quic.QuicStream); |
| |
| assert.strictEqual(typeof quic.createClientSession, 'function'); |
| assert.strictEqual(typeof quic.openBidirectionalStream, 'function'); |
| assert.strictEqual(typeof quic.openUnidirectionalStream, 'function'); |
| assert.strictEqual(typeof quic.setCallbacks, 'function'); |
| assert.strictEqual(typeof quic.initSecureContext, 'function'); |
| assert.strictEqual(typeof quic.initSecureContextClient, 'function'); |
| assert.strictEqual(typeof quic.silentCloseSession, 'function'); |