auth0-rule-sandbox
v2.0.1
Published
Provides a test environment for Auth0 Rules similar to their sandbox
Downloads
49
Readme
auth0-rule-sandbox
Provides a test environment for Auth0 Rules similar to their sandbox environment.
Example
Assuming you have a GitHub repository to deploy rules, pages, and custom database connections to Auth0 (see example), then this module will allow you to run your rules locally with controlled inputs.
rule.js
:
function example(user, context, callback) {
// TODO: implement your rule
callback(null, user, context);
}
rule.test.js
:
const auth0runner = require('auth0-rule-sandbox');
const options = {
user: {
name: 'test'
},
context: {
clientID: '123456789'
},
configuration: {
key: 'value'
},
globals: {
request: require('request')
}
};
auth0runner('./relative/path/to/your/rule.js', options, function(err, user, context) {
if (err) {
console.error(err);
} else {
// TODO: assertions
console.log(user, context);
}
});
Usage
Exports a function that takes arguments:
path
(string): relative path to your rule fileoptions
(object):user
(object): represents the logged in user that's passed through the Rules pipelinecontext
(object): contains contextual information about the current authentication transactionconfiguration
(object): key-value settings from the Rules UIglobals
(object): See section below
callback
(function): send back the potentially modified user and context objects back to Auth0 (or an error)
Bring Your Own Dependencies
It looks like Auth0 Rules run in Node.js v4.4.5 based on console.log(process.version)
. These modules are provided as part of the global
object but not populated by this module. Instead, you can pick and choose which global modules are populated and how (actual vs mock).
const options = {
// ...
globals: {
auth0: {
users: {
updateAppMetadata: function () { return Promise.resolve() }
}
},
jwt: require('jsonwebtoken')
}
}
built-in
These global properties are provided from the parent Node context:
- process
- Buffer
- clearImmediate
- clearInterval
- clearTimeout
- setImmediate
- setInterval
- setTimeout
- console
require
Additional modules can be required but you'll have to roll your own require
shim until one is added here.