From 7ae6221b7ac69250fea7e5c475030762e3a2be7c Mon Sep 17 00:00:00 2001 From: Luis Deschamps Rudge Date: Wed, 5 Jun 2019 16:51:24 -0300 Subject: [PATCH] Fix password policy when using tenant connections --- .../{tenant.js.snap => tenant.test.js.snap} | 67 ++++++++++++++++--- .../core/{tenant.js => tenant.test.js} | 26 ++++++- src/core/tenant/index.js | 4 +- 3 files changed, 85 insertions(+), 12 deletions(-) rename src/__tests__/core/__snapshots__/{tenant.js.snap => tenant.test.js.snap} (76%) rename src/__tests__/core/{tenant.js => tenant.test.js} (88%) diff --git a/src/__tests__/core/__snapshots__/tenant.js.snap b/src/__tests__/core/__snapshots__/tenant.test.js.snap similarity index 76% rename from src/__tests__/core/__snapshots__/tenant.js.snap rename to src/__tests__/core/__snapshots__/tenant.test.js.snap index 26558189c..7f9628b52 100644 --- a/src/__tests__/core/__snapshots__/tenant.js.snap +++ b/src/__tests__/core/__snapshots__/tenant.test.js.snap @@ -8,7 +8,11 @@ Object { "allowForgot": true, "allowSignup": true, "name": "test-connection-database", - "passwordPolicy": "none", + "passwordPolicy": Object { + "length": Object { + "minLength": 1, + }, + }, "requireUsername": false, "strategy": "auth0", "type": "database", @@ -32,12 +36,15 @@ Object { "allowForgot": false, "allowSignup": false, "name": "test-connection-database", - "passwordPolicy": "test-passwordPolicy", + "passwordPolicy": Object { + "length": Object { + "minLength": 1, + }, + }, "requireUsername": true, "strategy": "auth0", "type": "database", "validation": Object { - "passwordPolicy": "test-passwordPolicy", "username": Object { "max": 15, "min": 1, @@ -62,12 +69,15 @@ Object { "allowForgot": false, "allowSignup": false, "name": "test-connection-database", - "passwordPolicy": "test-passwordPolicy", + "passwordPolicy": Object { + "length": Object { + "minLength": 1, + }, + }, "requireUsername": true, "strategy": "auth0", "type": "database", "validation": Object { - "passwordPolicy": "test-passwordPolicy", "username": Object { "max": 15, "min": 1, @@ -92,12 +102,15 @@ Object { "allowForgot": false, "allowSignup": false, "name": "test-connection-database", - "passwordPolicy": "test-passwordPolicy", + "passwordPolicy": Object { + "length": Object { + "minLength": 1, + }, + }, "requireUsername": true, "strategy": "auth0", "type": "database", "validation": Object { - "passwordPolicy": "test-passwordPolicy", "username": Object { "max": 5, "min": 4, @@ -122,7 +135,11 @@ Object { "allowForgot": true, "allowSignup": true, "name": "test-connection-database", - "passwordPolicy": "none", + "passwordPolicy": Object { + "length": Object { + "minLength": 1, + }, + }, "requireUsername": false, "strategy": "auth0", "type": "database", @@ -138,6 +155,40 @@ Object { } `; +exports[`initTenant() with database connection maps password policy correctly 1`] = ` +Object { + "connections": Object { + "database": Array [ + Object { + "allowForgot": false, + "allowSignup": false, + "name": "test-connection-database", + "passwordPolicy": Object { + "length": Object { + "minLength": 6, + }, + }, + "requireUsername": true, + "strategy": "auth0", + "type": "database", + "validation": Object { + "passwordPolicy": "low", + "username": Object { + "max": 5, + "min": 4, + }, + }, + }, + ], + "enterprise": Array [], + "passwordless": Array [], + "social": Array [], + "unknown": Array [], + }, + "defaultDirectory": null, +} +`; + exports[`initTenant() with enterprise connection maps connection correctly 1`] = ` Object { "connections": Object { diff --git a/src/__tests__/core/tenant.js b/src/__tests__/core/tenant.test.js similarity index 88% rename from src/__tests__/core/tenant.js rename to src/__tests__/core/tenant.test.js index 28f51f3cb..e287dbfcc 100644 --- a/src/__tests__/core/tenant.js +++ b/src/__tests__/core/tenant.test.js @@ -53,7 +53,29 @@ describe('initTenant()', () => { requiresUsername: true, strategy: 'auth0', validation: { - passwordPolicy: 'test-passwordPolicy', + username: { + min: 4, + max: 5 + } + } + } + ] + } + }; + runTest(initTenant, mockDataFns, client); + }); + it('maps password policy correctly', () => { + const client = { + connections: { + database: [ + { + allowForgot: false, + allowSignup: false, + name: 'test-connection-database', + requiresUsername: true, + strategy: 'auth0', + validation: { + passwordPolicy: 'low', //minLength: 6 username: { min: 4, max: 5 @@ -76,7 +98,6 @@ describe('initTenant()', () => { requiresUsername: true, strategy: 'auth0', validation: { - passwordPolicy: 'test-passwordPolicy', username: { min: 'foo', max: 'bar' @@ -99,7 +120,6 @@ describe('initTenant()', () => { requiresUsername: true, strategy: 'auth0', validation: { - passwordPolicy: 'test-passwordPolicy', username: { min: 5, max: 4 diff --git a/src/core/tenant/index.js b/src/core/tenant/index.js index 3731ab857..3094c14a0 100644 --- a/src/core/tenant/index.js +++ b/src/core/tenant/index.js @@ -1,4 +1,6 @@ import Immutable, { List, Map } from 'immutable'; +import passwordPolicies from 'auth0-password-policies'; + import { dataFns } from '../../utils/data_utils'; import * as l from '../index'; @@ -80,7 +82,7 @@ function formatTenantConnection(connectionType, connection) { result.passwordPolicy = connection.validation.passwordPolicy; } - result.passwordPolicy = result.passwordPolicy || 'none'; + result.passwordPolicy = passwordPolicies[result.passwordPolicy || 'none']; result.allowSignup = typeof connection.allowSignup === 'boolean' ? connection.allowSignup : true;