1'use strict';
2
3const common = require('../common');
4if (!common.hasCrypto)
5  common.skip('missing crypto');
6
7const assert = require('assert');
8const http2 = require('http2');
9
10// Verify that setTimeout callback verifications work correctly
11const verifyCallbacks = (server) => {
12  const testTimeout = 10;
13
14  [true, 1, {}, [], null, 'test'].forEach((notFunction) => {
15    assert.throws(
16      () => server.setTimeout(testTimeout, notFunction),
17      {
18        name: 'TypeError',
19        code: 'ERR_INVALID_ARG_TYPE',
20      }
21    );
22  });
23
24  // No callback
25  const returnedVal = server.setTimeout(testTimeout);
26  assert.strictEqual(returnedVal.timeout, testTimeout);
27};
28
29// Test with server
30{
31  const server = http2.createServer();
32  verifyCallbacks(server);
33}
34
35// Test with secure server
36{
37  const secureServer = http2.createSecureServer({});
38  verifyCallbacks(secureServer);
39}
40