Skip to content

Commit 23abd11

Browse files
committed
Merge pull request googleapis#213 from stephenplusplus/gce-token
fix(connection): set token expiration date for GCE
2 parents 7be2cae + 2eb9903 commit 23abd11

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

lib/common/connection.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ Connection.prototype.fetchToken = function(callback) {
166166
callback(err);
167167
return;
168168
}
169-
var exp = new Date(body.token_expires * 1000);
169+
var exp = new Date(Date.now() + body.expires_in * 1000);
170170
callback(null, new Token(body.access_token, exp));
171171
});
172172
return;

test/common/connection.js

+35
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,41 @@ describe('Connection', function() {
9898
var tokenNeverExpires = new connection.Token('token', new Date(3000, 0, 0));
9999
var tokenExpired = new connection.Token('token', new Date(2011, 0, 0));
100100

101+
describe('GCE', function() {
102+
var gceConn;
103+
var metadataResponse = {
104+
body: {
105+
access_token: 'y.8',
106+
expires_in: 60
107+
}
108+
};
109+
110+
beforeEach(function() {
111+
gceConn = new connection.Connection();
112+
});
113+
114+
it('should fetch a token from the metadata server', function() {
115+
gceConn.requester = function(opts) {
116+
assert.equal(opts.uri.indexOf('http://metadata/'), 0);
117+
};
118+
gceConn.fetchToken();
119+
});
120+
121+
it('should build token from the metadata server response', function() {
122+
gceConn.requester = function(opts, callback) {
123+
callback(null, metadataResponse, metadataResponse.body);
124+
};
125+
gceConn.fetchToken(function(err, token) {
126+
assert.ifError(err);
127+
assert(token instanceof connection.Token);
128+
assert.equal(token.accessToken, metadataResponse.body.access_token);
129+
var addedMs = metadataResponse.body.expires_in * 1000;
130+
var tokenDate = new Date(Date.now() + addedMs);
131+
assert.equal(token.expiry.getTime(), tokenDate.getTime());
132+
});
133+
});
134+
});
135+
101136
it('should fetch a new token if token expires', function(done) {
102137
conn.token = tokenExpired;
103138
conn.fetchToken = function() {

0 commit comments

Comments
 (0)