Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Nomad
Commits
30806f9b
Commit
30806f9b
authored
7 years ago
by
Michael Lange
Browse files
Options
Download
Email Patches
Plain Diff
Add the acl token as a header to client requests
parent
8178f9b7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
ui/app/models/allocation.js
+9
-3
ui/app/models/allocation.js
ui/tests/acceptance/token-test.js
+10
-3
ui/tests/acceptance/token-test.js
with
19 additions
and
6 deletions
+19
-6
ui/app/models/allocation.js
+
9
-
3
View file @
30806f9b
...
@@ -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
),
]),
});
});
}),
}),
...
...
This diff is collapsed.
Click to expand it.
ui/tests/acceptance/token-test.js
+
10
-
3
View file @
30806f9b
...
@@ -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
.
reques
tHeader
s
[
'
X-Nomad-Token
'
]
,
`No token for
${
req
.
url
}
`
);
assert
.
notOk
(
ge
tHeader
(
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
.
reques
tHeader
s
[
'
X-Nomad-Token
'
]
,
secretId
,
`Token set for
${
req
.
url
}
`
);
assert
.
equal
(
ge
tHeader
(
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
()]
);
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help