#
Authentication
Poser contains a mock of DataCamp's authentication method out of the box.
All requests sent to Poser will get a x-user_id
header injected, to mimic the Kong JWT plugin.
Poser keeps a "current user id" that can be changed at any time to "login" another user.
The current user id is displayed when Poser starts. 123
is the default user id.
#
Using user_id in API mocks
#
GraphQL
In graphQL resolvers, the ctx
argument is the Express Request
object. The user id can be accessed by reading directly from the x-user_id
header:
const resolvers = {
Query: {
currentUser: (src, args, ctx) => store.get('User', ctx.get('x-user_id'))
}
}
#
Rest
In rest, the x-user_id
header can simply be read from the req
object, exactly like an actual service would do:
router.get('/foo', (req, res) => {
res.send(
`Hello user ${req.get('x-user_id')}`
)
})
#
Updating the current user_id
#
Via UI
Poser's frontpage (http://localhost:1000) has a form to update the user id:
#
Via HTTP
The route /_kong/user_id/<newId>
allows you to update the current user id.
For example, GET http://localhost:1000/_kong/user_id/99
will set the user id to 99
.
#
Via CLI
When starting poser, pass --user_id
to set the initial user id.
For example, yarn start --user_id=99
will set the initial user id to 99
.
#
Overriding the current user_id
The current user id can also be overriden (but won't be updated) by passing the x-user_id
header.
For example, assuming the current user id is 123
, the following request will force a user id of 99
, but only for that request:
fetch('http://localhost:1000/my-service/foo', {
headers: {
'x-user_id': 99
}
})
#
Disabling user_id
Poser will always include the x-user_id
header unless it is set to none
, false
or null
. This allows to mock logged-out users.
For example, http://localhost:1000/_kong/user_id/none
will disable user_id injection.