@@ -6,29 +6,28 @@ AWS = helpers.AWS
6
6
if AWS .util .isNode ()
7
7
describe ' AWS.MetadataService' , ->
8
8
describe ' loadCredentials' , ->
9
- [server , port , service ] = [null , 1024 + parseInt (Math .random () * 100 ), null ]
10
- [forceTimeout , httpRequest ] = [false , null ]
9
+ [server , port , service , forceTimeout ] = [null , 1024 + parseInt (Math .random () * 100 ), null , null ]
11
10
httpClient = AWS .HttpClient .getInstance ()
12
11
13
12
beforeEach ->
14
- [forceTimeout , httpRequest ] = [false , null ]
13
+ forceTimeout = false
14
+ helpers .spyOn (http .ClientRequest .prototype , ' setTimeout' ).andCallFake (timeout, cb) ->
15
+ if forceTimeout
16
+ process .nextTick (cb)
15
17
service = new AWS.MetadataService (host : ' 127.0.0.1:' + port)
16
18
server = http .createServer (req, res) ->
17
- if forceTimeout
18
- httpRequest .stream .emit (' error' , {code : ' TimeoutError' })
19
- else
20
- re = new RegExp (' ^/latest/meta-data/iam/security-credentials/(.*)$' )
21
- match = url .parse (req .url ).pathname .match (re)
22
- if match
23
- res .writeHead (200 , ' Content-Type' : ' text/plain' )
24
- if match[1 ] == ' '
25
- res .write (' TestingRole\n ' )
26
- res .write (' TestingRole2\n ' )
27
- else
28
- data = ' {"Code":"Success","AccessKeyId":"KEY","SecretAccessKey":"SECRET","Token":"TOKEN"}'
29
- res .write (data)
19
+ re = new RegExp (' ^/latest/meta-data/iam/security-credentials/(.*)$' )
20
+ match = url .parse (req .url ).pathname .match (re)
21
+ if match
22
+ res .writeHead (200 , ' Content-Type' : ' text/plain' )
23
+ if match[1 ] == ' '
24
+ res .write (' TestingRole\n ' )
25
+ res .write (' TestingRole2\n ' )
30
26
else
31
- res .writeHead (404 , {})
27
+ data = ' {"Code":"Success","AccessKeyId":"KEY","SecretAccessKey":"SECRET","Token":"TOKEN"}'
28
+ res .write (data)
29
+ else
30
+ res .writeHead (404 , {})
32
31
res .end ()
33
32
34
33
server .listen (port)
@@ -80,9 +79,7 @@ if AWS.util.isNode()
80
79
firstTry = false
81
80
else
82
81
forceTimeout = false
83
- args = spy .calls [spy .calls .length - 1 ].arguments
84
- httpRequest = args[0 ]
85
- return spy .origMethod .apply (httpClient, args)
82
+ return spy .origMethod .apply (httpClient, arguments )
86
83
87
84
service = new AWS.MetadataService (options)
88
85
service .loadCredentials (err, data) ->
@@ -97,12 +94,8 @@ if AWS.util.isNode()
97
94
host : ' 127.0.0.1:' + port,
98
95
maxRetries : 5
99
96
}
100
-
101
- spy = helpers .spyOn (httpClient, ' handleRequest' ).andCallFake ->
102
- forceTimeout = true
103
- args = spy .calls [spy .calls .length - 1 ].arguments
104
- httpRequest = args[0 ]
105
- return spy .origMethod .apply (httpClient, args)
97
+ forceTimeout = true
98
+ spy = helpers .spyOn (httpClient, ' handleRequest' ).andCallThrough ()
106
99
107
100
service = new AWS.MetadataService (options)
108
101
service .loadCredentials (err, data) ->
0 commit comments