UNPKG

auth0-custom-db-testharness

Version:

deploy, execute, and test the output of Auth0 Custom DB scripts using a webtask sandbox environment.

200 lines (139 loc) 5.2 kB
'use strict'; var fs = require('fs'); var expect = require('chai').expect; var should = require('chai').should(); var testharness = require('./index'); // The underlying scripts that are being tested here actually use an HTTPS Endpoint rather than a Relational / NoSql DB // The usage would be almost identical regardless, just the configuration might be settings for a DB etc instead. var configuration = { ENDPOINT_LOCAL: 'https://api.com' }; var params = { timeout: 5, ca: '', tenant: 'demo-workshop', url: 'https://sandbox.it.auth0.com', token: '<TOKEN>' }; describe('auth0-custom-db-testharness', function () { it('should login user with email and password', function (done) { var loginScript = fs.readFileSync('./sample-db-scripts/login.js', 'utf8'); var user = { email: "richard.seldon@auth0.com", password: "pwd" }; var callback = function (err, user) { console.log('user: ', user); should.not.exist(err); expect(user.user_id).to.equal(1); expect(user.nickname).to.equal('arcseldon'); expect(user.email).to.equal('richard.seldon@auth0.com'); expect(user.email_verified).to.be.true; user.user_metadata = user.user_metadata || {}; expect(user.user_metadata.account_number).to.equal('1234'); done(); }; testharness(params).loginByEmail(loginScript, configuration, user, callback); }); it('should login user with username and password', function (done) { var loginScript = fs.readFileSync('./sample-db-scripts/login.js', 'utf8'); // here, we use a "hack" to get extra param info into the single username parameter of the custom db login script var username = JSON.stringify({ account_number: '1234', company_code: '123' }); var user = { username: username, password: "pwd" }; var callback = function (err, user) { console.log('user: ', user); should.not.exist(err); expect(user.user_id).to.equal(1); expect(user.nickname).to.equal('arcseldon'); expect(user.email).to.equal('richard.seldon@auth0.com'); expect(user.email_verified).to.be.true; user.user_metadata = user.user_metadata || {}; expect(user.user_metadata.account_number).to.equal('1234'); done(); }; testharness(params).loginByUsername(loginScript, configuration, user, callback); }); it('should create user', function (done) { var createScript = fs.readFileSync('./sample-db-scripts/create.js', 'utf8'); var user = { "email": "arcseldon+test@gmail.com", "password": "pwd", "user_metadata": { "nickname": "arcseldon", "employee_id": "12345", "company_code": "54321" } }; var callback = function (err, response) { should.not.exist(err); console.log('response: ', response); expect(response.email).to.equal(user.email); expect(response.nickname).to.equal(user.user_metadata.nickname); done(); }; testharness(params).create(createScript, configuration, user, callback); }); it('should verify user email', function (done) { var verifyScript = fs.readFileSync('./sample-db-scripts/verify.js', 'utf8'); var user = { "email": "richard.seldon@auth0.com", }; var callback = function (err, response) { should.not.exist(err); console.log('response: ', response); expect(response).to.be.true; done(); }; testharness(params).verify(verifyScript, configuration, user, callback); }); it('should change password for user', function (done) { // increase timeout threshold for testcase since this sometimes takes more than 2 seconds this.timeout(5000); var user = { "email": "richard.seldon@auth0.com", "password": "supersecret" }; var changePasswordScript = fs.readFileSync('./sample-db-scripts/changepassword.js', 'utf8'); var callback = function (err, response) { console.log('response: ', response); should.not.exist(err); expect(response).to.be.true; done(); }; testharness(params).changePassword(changePasswordScript, configuration, user, callback); }); it('should get user by email', function (done) { var getUserScript = fs.readFileSync('./sample-db-scripts/getuser.js', 'utf8'); var user = { "email": "richard.seldon@auth0.com" }; var callback = function (err, user) { should.not.exist(err); user = JSON.parse(user); console.log('user: ', user); expect(user.id).to.equal(1); expect(user.email).to.equal('richard.seldon@auth0.com'); done(); }; testharness(params).getUser(getUserScript, configuration, user, callback); }); it('should delete user by id', function (done) { var deleteScript = fs.readFileSync('./sample-db-scripts/delete.js', 'utf8'); var user = { "id": 2 }; var callback = function (err, response) { should.not.exist(err); console.log('response: ', response); expect(response).to.be.true; done(); }; testharness(params).deleteUser(deleteScript, configuration, user, callback); }); });