@@ -4,7 +4,7 @@ const tls = require('tls')
44const { PromiseSocket, TimeoutError} = require ( 'promise-socket' )
55const { sleep, getCmdPortTCP, getDataPort } = require ( './utils' )
66
7- jest . setTimeout ( 5000 )
7+ jest . setTimeout ( 7500 )
88let server , content , dataContent = null
99const cmdPortTCP = getCmdPortTCP ( )
1010const dataPort = getDataPort ( )
@@ -128,6 +128,44 @@ test('test STOR message', async () => {
128128 await promiseSocket . end ( )
129129} )
130130
131+ test ( 'test STOR message failes due to socket timeout' , async ( ) => {
132+ const users = [
133+ {
134+ username : 'john' ,
135+ allowLoginWithoutPassword : true ,
136+ }
137+ ]
138+ server = new ftpd ( { cnf : { port : 50021 , user : users , minDataPort : dataPort } } )
139+ expect ( server ) . toBeInstanceOf ( ftpd )
140+ server . start ( )
141+
142+ let promiseSocket = new PromiseSocket ( new net . Socket ( ) )
143+ let socket = promiseSocket . stream
144+ await socket . connect ( 50021 , 'localhost' )
145+ content = await promiseSocket . read ( )
146+ expect ( content . toString ( ) . trim ( ) ) . toBe ( '220 Welcome' )
147+
148+ await promiseSocket . write ( 'USER john' )
149+ content = await promiseSocket . read ( )
150+ expect ( content . toString ( ) . trim ( ) ) . toBe ( '232 User logged in' )
151+
152+ await promiseSocket . write ( 'STOR ../../mytestfile' )
153+ content = await promiseSocket . read ( )
154+ expect ( content . toString ( ) . trim ( ) ) . toBe ( '550 Transfer failed "../../mytestfile"' )
155+
156+ await promiseSocket . write ( 'EPSV' )
157+ content = await promiseSocket . read ( )
158+ expect ( content . toString ( ) . trim ( ) ) . toBe ( `229 Entering extended passive mode (|||${ dataPort } |)` )
159+
160+ let promiseDataSocket = new PromiseSocket ( new net . Socket ( ) )
161+ let dataSocket = promiseDataSocket . stream
162+ await dataSocket . connect ( dataPort , 'localhost' )
163+
164+ await sleep ( 5500 )
165+ expect ( dataSocket . destroyed ) . toBe ( true )
166+
167+ await promiseSocket . end ( )
168+ } )
131169
132170test ( 'test STOR message with ASCII' , async ( ) => {
133171 const users = [
0 commit comments