Commit 30806f9b authored by Michael Lange's avatar Michael Lange
Browse files

Add the acl token as a header to client requests

parent 8178f9b7
Showing with 19 additions and 6 deletions
+19 -6
...@@ -3,12 +3,11 @@ import Model from 'ember-data/model'; ...@@ -3,12 +3,11 @@ import Model from 'ember-data/model';
import attr from 'ember-data/attr'; import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships'; import { belongsTo } from 'ember-data/relationships';
import { fragment, fragmentArray } from 'ember-data-model-fragments/attributes'; import { fragment, fragmentArray } from 'ember-data-model-fragments/attributes';
import fetch from 'fetch';
import PromiseObject from '../utils/classes/promise-object'; import PromiseObject from '../utils/classes/promise-object';
import timeout from '../utils/timeout'; import timeout from '../utils/timeout';
import shortUUIDProperty from '../utils/properties/short-uuid'; import shortUUIDProperty from '../utils/properties/short-uuid';
const { computed, RSVP } = Ember; const { computed, RSVP, inject } = Ember;
const STATUS_ORDER = { const STATUS_ORDER = {
pending: 1, pending: 1,
...@@ -19,6 +18,8 @@ const STATUS_ORDER = { ...@@ -19,6 +18,8 @@ const STATUS_ORDER = {
}; };
export default Model.extend({ export default Model.extend({
token: inject.service(),
shortId: shortUUIDProperty('id'), shortId: shortUUIDProperty('id'),
job: belongsTo('job'), job: belongsTo('job'),
node: belongsTo('node'), node: belongsTo('node'),
...@@ -74,7 +75,12 @@ export default Model.extend({ ...@@ -74,7 +75,12 @@ export default Model.extend({
const url = `//${this.get('node.httpAddr')}/v1/client/allocation/${this.get('id')}/stats`; const url = `//${this.get('node.httpAddr')}/v1/client/allocation/${this.get('id')}/stats`;
return PromiseObject.create({ return PromiseObject.create({
promise: RSVP.Promise.race([fetch(url).then(res => res.json()), timeout(2000)]), promise: RSVP.Promise.race([
this.get('token')
.authorizedRequest(url)
.then(res => res.json()),
timeout(2000),
]),
}); });
}), }),
......
...@@ -48,7 +48,7 @@ test('the X-Nomad-Token header gets sent with requests once it is set', function ...@@ -48,7 +48,7 @@ test('the X-Nomad-Token header gets sent with requests once it is set', function
assert.ok(server.pretender.handledRequests.length > 1, 'Requests have been made'); assert.ok(server.pretender.handledRequests.length > 1, 'Requests have been made');
server.pretender.handledRequests.forEach(req => { server.pretender.handledRequests.forEach(req => {
assert.notOk(req.requestHeaders['X-Nomad-Token'], `No token for ${req.url}`); assert.notOk(getHeader(req, 'X-Nomad-Token'), `No token for ${req.url}`);
}); });
requestPosition = server.pretender.handledRequests.length; requestPosition = server.pretender.handledRequests.length;
...@@ -68,8 +68,8 @@ test('the X-Nomad-Token header gets sent with requests once it is set', function ...@@ -68,8 +68,8 @@ test('the X-Nomad-Token header gets sent with requests once it is set', function
assert.ok(newRequests.length > 1, 'New requests have been made'); assert.ok(newRequests.length > 1, 'New requests have been made');
// Cross-origin requests can't have a token // Cross-origin requests can't have a token
newRequests.filter(req => !req.url.startsWith('//')).forEach(req => { newRequests.forEach(req => {
assert.equal(req.requestHeaders['X-Nomad-Token'], secretId, `Token set for ${req.url}`); assert.equal(getHeader(req, 'X-Nomad-Token'), secretId, `Token set for ${req.url}`);
}); });
}); });
}); });
...@@ -199,3 +199,10 @@ test('setting a token clears the store', function(assert) { ...@@ -199,3 +199,10 @@ test('setting a token clears the store', function(assert) {
// If jobs are lingering in the store, they would show up // If jobs are lingering in the store, they would show up
assert.notOk(find('.job-row'), 'No jobs found'); assert.notOk(find('.job-row'), 'No jobs found');
}); });
function getHeader({ requestHeaders }, name) {
// Headers are case-insensitive, but object property look up is not
return (
requestHeaders[name] || requestHeaders[name.toLowerCase()] || requestHeaders[name.toUpperCase()]
);
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment