// Flags: --expose-internals 'use strict'; const common = require('../common'); if (!common.hasQuic) common.skip('missing quic'); const { internalBinding } = require('internal/test/binding'); const quic = internalBinding('quic'); const { throws } = require('assert'); const callbacks = { onEndpointClose() {}, onSessionNew() {}, onSessionClose() {}, onSessionDatagram() {}, onSessionDatagramStatus() {}, onSessionHandshake() {}, onSessionPathValidation() {}, onSessionTicket() {}, onSessionVersionNegotiation() {}, onStreamCreated() {}, onStreamBlocked() {}, onStreamClose() {}, onStreamReset() {}, onStreamHeaders() {}, onStreamTrailers() {}, }; // Fail if any callback is missing for (const fn of Object.keys(callbacks)) { // eslint-disable-next-line no-unused-vars const { [fn]: _, ...rest } = callbacks; throws(() => quic.setCallbacks(rest), { code: 'ERR_MISSING_ARGS', }); } // If all callbacks are present it should work quic.setCallbacks(callbacks);