@@ -36,21 +36,20 @@ const assert = require('assert');
3636const SSL_OP_NO_TICKET = require ( 'crypto' ) . constants . SSL_OP_NO_TICKET ;
3737
3838const pfx = fixtures . readKey ( 'agent1.pfx' ) ;
39+ const key = fixtures . readKey ( 'agent1-key.pem' ) ;
40+ const cert = fixtures . readKey ( 'agent1-cert.pem' ) ;
41+ const ca = fixtures . readKey ( 'ca1-cert.pem' ) ;
3942
4043function test ( testOptions , cb ) {
41-
42- const key = fixtures . readKey ( 'agent1-key.pem' ) ;
43- const cert = fixtures . readKey ( 'agent1-cert.pem' ) ;
44- const ca = fixtures . readKey ( 'ca1-cert.pem' ) ;
4544 const options = {
4645 key,
4746 cert,
4847 ca : [ ca ]
4948 } ;
50- let requestCount = 0 ;
51- let clientSecure = 0 ;
52- let ocspCount = 0 ;
53- let ocspResponse ;
49+ const requestCount = testOptions . response ? 0 : 1 ;
50+
51+ if ( ! testOptions . ocsp )
52+ assert . strictEqual ( testOptions . response , undefined ) ;
5453
5554 if ( testOptions . pfx ) {
5655 delete options . key ;
@@ -59,82 +58,56 @@ function test(testOptions, cb) {
5958 options . passphrase = testOptions . passphrase ;
6059 }
6160
62- const server = tls . createServer ( options , function ( cleartext ) {
61+ const server = tls . createServer ( options , common . mustCall ( ( cleartext ) => {
6362 cleartext . on ( 'error' , function ( er ) {
6463 // We're ok with getting ECONNRESET in this test, but it's
6564 // timing-dependent, and thus unreliable. Any other errors
6665 // are just failures, though.
6766 if ( er . code !== 'ECONNRESET' )
6867 throw er ;
6968 } ) ;
70- ++ requestCount ;
7169 cleartext . end ( ) ;
72- } ) ;
73- server . on ( 'OCSPRequest' , function ( cert , issuer , callback ) {
74- ++ ocspCount ;
75- assert . ok ( Buffer . isBuffer ( cert ) ) ;
76- assert . ok ( Buffer . isBuffer ( issuer ) ) ;
77-
78- // Just to check that async really works there
79- setTimeout ( function ( ) {
80- callback ( null ,
81- testOptions . response ? Buffer . from ( testOptions . response ) : null ) ;
82- } , 100 ) ;
83- } ) ;
70+ } , requestCount ) ) ;
71+
72+ if ( ! testOptions . ocsp )
73+ server . on ( 'OCSPRequest' , common . mustNotCall ( ) ) ;
74+ else
75+ server . on ( 'OCSPRequest' , common . mustCall ( ( cert , issuer , callback ) => {
76+ assert . ok ( Buffer . isBuffer ( cert ) ) ;
77+ assert . ok ( Buffer . isBuffer ( issuer ) ) ;
78+
79+ // Callback a little later to ensure that async really works.
80+ return setTimeout ( callback , 100 , null , testOptions . response ?
81+ Buffer . from ( testOptions . response ) : null ) ;
82+ } ) ) ;
83+
8484 server . listen ( 0 , function ( ) {
8585 const client = tls . connect ( {
8686 port : this . address ( ) . port ,
87- requestOCSP : testOptions . ocsp !== false ,
88- secureOptions : testOptions . ocsp === false ?
89- SSL_OP_NO_TICKET : 0 ,
87+ requestOCSP : testOptions . ocsp ,
88+ secureOptions : testOptions . ocsp ? 0 : SSL_OP_NO_TICKET ,
9089 rejectUnauthorized : false
91- } , function ( ) {
92- clientSecure ++ ;
93- } ) ;
94- client . on ( 'OCSPResponse' , function ( resp ) {
95- ocspResponse = resp ;
96- if ( resp )
90+ } , common . mustCall ( ( ) => { } , requestCount ) ) ;
91+
92+ client . on ( 'OCSPResponse' , common . mustCall ( ( resp ) => {
93+ if ( testOptions . response ) {
94+ assert . strictEqual ( resp . toString ( ) , testOptions . response ) ;
9795 client . destroy ( ) ;
98- } ) ;
99- client . on ( 'close' , function ( ) {
100- server . close ( cb ) ;
101- } ) ;
102- } ) ;
96+ } else {
97+ assert . strictEqual ( resp , null ) ;
98+ }
99+ } , testOptions . ocsp === false ? 0 : 1 ) ) ;
103100
104- process . on ( 'exit' , function ( ) {
105- if ( testOptions . ocsp === false ) {
106- assert . strictEqual ( requestCount , clientSecure ) ;
107- assert . strictEqual ( requestCount , 1 ) ;
108- return ;
109- }
110-
111- if ( testOptions . response ) {
112- assert . strictEqual ( ocspResponse . toString ( ) , testOptions . response ) ;
113- } else {
114- assert . strictEqual ( ocspResponse , null ) ;
115- }
116- assert . strictEqual ( requestCount , testOptions . response ? 0 : 1 ) ;
117- assert . strictEqual ( clientSecure , requestCount ) ;
118- assert . strictEqual ( ocspCount , 1 ) ;
101+ client . on ( 'close' , common . mustCall ( ( ) => {
102+ server . close ( cb ) ;
103+ } ) ) ;
119104 } ) ;
120105}
121106
122- const tests = [
123- { response : false } ,
124- { response : 'hello world' } ,
125- { ocsp : false }
126- ] ;
107+ test ( { ocsp : true , response : false } ) ;
108+ test ( { ocsp : true , response : 'hello world' } ) ;
109+ test ( { ocsp : false } ) ;
127110
128111if ( ! common . hasFipsCrypto ) {
129- tests . push ( { pfx : pfx , passphrase : 'sample ' , response : 'hello pfx' } ) ;
112+ test ( { ocsp : true , response : 'hello pfx ' , pfx : pfx , passphrase : 'sample ' } ) ;
130113}
131-
132- function runTests ( i ) {
133- if ( i === tests . length ) return ;
134-
135- test ( tests [ i ] , common . mustCall ( function ( ) {
136- runTests ( i + 1 ) ;
137- } ) ) ;
138- }
139-
140- runTests ( 0 ) ;
0 commit comments