1 | /* eslint-env mocha */
|
---|
2 | 'use strict'
|
---|
3 |
|
---|
4 | var assert = require('assert')
|
---|
5 |
|
---|
6 | exports.port = 23433
|
---|
7 |
|
---|
8 | exports.keys = {
|
---|
9 | key: '-----BEGIN RSA PRIVATE KEY-----\n' +
|
---|
10 | 'MIIEogIBAAKCAQEA1ARXSoyizYSnHDYickxX4x2UG/8uNWnQWKlWR97NAwRsspN6\n' +
|
---|
11 | 'aFF1+LnyN9bvLNnhxIowcYy68+LpZ7pYAQgBZSyAhnF1S4qz2w/rxH4CNn96B/je\n' +
|
---|
12 | 'vQGo3e8vIQ8ChhfuYvGAtTEYJzW8aRoxWSPcukZZdxPQ1Wgbhd9DSXhgkUnkEEET\n' +
|
---|
13 | 'owyn8ufQFRnQHfc9Fn5DrJilI7vD+ZyRU3gZoBj2GVMQuxJLqQEHy2XsJ6ZWTea/\n' +
|
---|
14 | 'EfK93XfDyY7ZxyeK0ZdWCVoTqw9QNJSkGjesCBkcY4Rjxi9LbLJwW3Es4wgW4N4Y\n' +
|
---|
15 | 'cltfygjltSis+RVKJyGeDqTWAxceih3mlkdGIQIDAQABAoIBAB6akc8dBdMMtuKH\n' +
|
---|
16 | 'nelJw9XwyxRPfWgQYhaqOt4c9xLcbKRKTX0JZTIGBUSyLcwXl1M7b0q0ubfCpVZn\n' +
|
---|
17 | 'u5RKh4kHJ3ZAomHJH7UbUzkFx2P+eqrz7ZLyzmFayT7IX+DjS3HU0nNVJttiElRJ\n' +
|
---|
18 | 'h54KYy4wQXHC1n43jOGCHMBaM/ZEpO3xA7PLfVD/BpYLzL+FAYoFBb/x2buLv8Mg\n' +
|
---|
19 | 'D6QAWkS70mu8ER13NapKjg6PUsYPxHYU30BjGMTXw95Iz5PSAK8+/xQ6YaW7MEVM\n' +
|
---|
20 | 'twxxfJfZ+9u9nJMfJANqxCi6iZ6ft/e5cbhvNhV/X97XeoPWxqSpx98M6BC/vvBc\n' +
|
---|
21 | 'UjSmaRECgYEA4NH8Y20zC8zF4ALcBgqgrx+U9upov2UGa+kjS1/So4r/dpG4T8pT\n' +
|
---|
22 | 'T2tMW6zR5qe7g11kgJm0oI/I6x9P2qwFJONO3MdLYVKd2mSxG2fniCktLg2j6BAX\n' +
|
---|
23 | 'QTt5zjIEWvhRP2vkrS8gAaJbVMLTMg4s374bE/IdKT+c59tYpcVaXXMCgYEA8WvJ\n' +
|
---|
24 | 'dfPXoagEgaHRd++R2COMG19euOTFRle0MSq+S9ZeeSe9ejb9CIpWYZ3WVviKvf+E\n' +
|
---|
25 | 'zksmKTZJnig5pGEgU+2ka1C9PthCGlTlQagD6Ey4hblQgi+pOFgBjE9Yn3FxfppH\n' +
|
---|
26 | '25ICXNY89EF6klEqKV67E/5O+nBZo+Y2TM4YKRsCgYAaEV8RbEUB9kFvYwV+Eddl\n' +
|
---|
27 | '1uSf6LgykRU4h/TWtYqn+eL7LZRQdCZKzCczbgt8kjBU4AxaOPhPsbxbPus0cMO7\n' +
|
---|
28 | '7jtjsBwWcczp2MkMY3TePeAGOgCqVMtNfgb2mKgWoDpTf0ApsJAmgFvUrS5t3GTp\n' +
|
---|
29 | 'oJJlMqqc8MpRvAZAWmzK7wKBgEVBFlmvyXumJyTItr4hC0VlbRutEA8aET1Mi3RP\n' +
|
---|
30 | 'Pqeipxc6PzB/9bYtePonvQTV53b5ha9n/1pzKEsmXuK4uf1ZfoEKeD8+6jeDgwCC\n' +
|
---|
31 | 'ohxRZd12e5Hc+j4fgNIvMM0MTfJzb4mdKPBYxMOMxQyUG/QiKKhjm2RcNlq9/3Wo\n' +
|
---|
32 | '6WVhAoGAG4QPWoE4ccFECp8eyGw8rjE45y5uqUI/f/RssX7bnKbCRY0otDsPlJd6\n' +
|
---|
33 | 'Kf0XFssLnYsCXO+ua03gw2N+2mrcsuA5FXHmQMrbfnuojHIVY05nt4Wa5iqV/gqH\n' +
|
---|
34 | 'PJXWyOgD+Kd6eR/cih/SCoKl4tSGCSJG5TDEpMt+r8EJkCXJ7Fw=\n' +
|
---|
35 | '-----END RSA PRIVATE KEY-----',
|
---|
36 | cert: '-----BEGIN CERTIFICATE-----\n' +
|
---|
37 | 'MIICuTCCAaOgAwIBAgIDAQABMAsGCSqGSIb3DQEBCzAUMRIwEAYDVQQDFglub2Rl\n' +
|
---|
38 | 'LnNwZHkwHhcNNjkwMTAxMDAwMDAwWhcNMjUwNzA2MDUwMzQzWjAUMRIwEAYDVQQD\n' +
|
---|
39 | 'Fglub2RlLnNwZHkwggEgMAsGCSqGSIb3DQEBAQOCAQ8AMIIBCgKCAQEA1ARXSoyi\n' +
|
---|
40 | 'zYSnHDYickxX4x2UG/8uNWnQWKlWR97NAwRsspN6aFF1+LnyN9bvLNnhxIowcYy6\n' +
|
---|
41 | '8+LpZ7pYAQgBZSyAhnF1S4qz2w/rxH4CNn96B/jevQGo3e8vIQ8ChhfuYvGAtTEY\n' +
|
---|
42 | 'JzW8aRoxWSPcukZZdxPQ1Wgbhd9DSXhgkUnkEEETowyn8ufQFRnQHfc9Fn5DrJil\n' +
|
---|
43 | 'I7vD+ZyRU3gZoBj2GVMQuxJLqQEHy2XsJ6ZWTea/EfK93XfDyY7ZxyeK0ZdWCVoT\n' +
|
---|
44 | 'qw9QNJSkGjesCBkcY4Rjxi9LbLJwW3Es4wgW4N4YcltfygjltSis+RVKJyGeDqTW\n' +
|
---|
45 | 'Axceih3mlkdGIQIDAQABoxowGDAWBgNVHREEDzANggsqLm5vZGUuc3BkeTALBgkq\n' +
|
---|
46 | 'hkiG9w0BAQsDggEBALn2FQSDMsyu+oqUnJgTVdGpnzKmfXoBPlQuznRdibri8ABO\n' +
|
---|
47 | 'kOo8FC72Iy6leVSsB26KtAdhpURZ3mv1Oyt4cGeeyQln2Olzp5flIos+GqYSztAq\n' +
|
---|
48 | '5ZnrzTLLlip7KHkmastYRXhEwTLmo2JCU8RkRP1X/m1xONF/YkURxmqj6cQTahPY\n' +
|
---|
49 | 'FzzLP1clW3arJwPlUcKKby6WpxO5MihYEliheBr7fL2TDUA96eG+B/SKxvwaGF2v\n' +
|
---|
50 | 'gWF8rg5prjPaLW8HH3Efq59AimFqUVQ4HtcJApjLJDYUKlvsMNMvBqh/pQRRPafj\n' +
|
---|
51 | '0Cp8dyS45sbZ2RgXdyfl6gNEj+DiPbaFliIuFmM=\n' +
|
---|
52 | '-----END CERTIFICATE-----'
|
---|
53 | }
|
---|
54 |
|
---|
55 | function expectData (stream, expected, callback) {
|
---|
56 | var actual = ''
|
---|
57 |
|
---|
58 | stream.on('data', function (chunk) {
|
---|
59 | actual += chunk
|
---|
60 | })
|
---|
61 | stream.on('end', function () {
|
---|
62 | assert.strictEqual(actual, expected)
|
---|
63 | callback()
|
---|
64 | })
|
---|
65 | }
|
---|
66 | exports.expectData = expectData
|
---|
67 |
|
---|
68 | exports.everyProtocol = function everyProtocol (body) {
|
---|
69 | var protocols = [
|
---|
70 | { protocol: 'http2', alpn: 'h2', version: 4 },
|
---|
71 | { protocol: 'spdy', alpn: 'spdy/3.1', version: 3.1 },
|
---|
72 | { protocol: 'spdy', alpn: 'spdy/3', version: 3 },
|
---|
73 | { protocol: 'spdy', alpn: 'spdy/2', version: 2 }
|
---|
74 | ]
|
---|
75 |
|
---|
76 | protocols.forEach(function (protocol) {
|
---|
77 | describe(protocol.alpn, function () {
|
---|
78 | body(protocol.protocol, protocol.alpn, protocol.version)
|
---|
79 | })
|
---|
80 | })
|
---|
81 | }
|
---|
82 |
|
---|
83 | exports.everyConfig = function everyConfig (body) {
|
---|
84 | exports.everyProtocol(function (protocol, alpn, version) {
|
---|
85 | if (alpn === 'spdy/2') {
|
---|
86 | return
|
---|
87 | }
|
---|
88 |
|
---|
89 | [false, true].forEach(function (plain) {
|
---|
90 | describe(plain ? 'plain mode' : 'ssl mode', function () {
|
---|
91 | body(protocol, alpn, version, plain)
|
---|
92 | })
|
---|
93 | })
|
---|
94 | })
|
---|
95 | }
|
---|