1 |
3a515b92
|
cagy
|
/* 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 |
|
|
}
|