Skip to content
This repository has been archived by the owner on Jun 21, 2019. It is now read-only.

Provides a test environment for Auth0 Rules similar to their sandbox

License

Notifications You must be signed in to change notification settings

maxbeatty/auth0-rule-sandbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 file
  • options (object):
    • user (object): represents the logged in user that's passed through the Rules pipeline
    • context (object): contains contextual information about the current authentication transaction
    • configuration (object): key-value settings from the Rules UI
    • globals (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.

About

Provides a test environment for Auth0 Rules similar to their sandbox

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published