define(function (require, exports, module) { 'use strict'; var Validate = require('lib/validate'); var Vat = require('vat'); Vat.register('base64jwt', Vat.string().test(Validate.isBase64JwtValid)); Vat.register('hex', Vat.string().test(Validate.isHexValid)); Vat.register('uri', Vat.string().test(Validate.isUriValid)); Vat.register('url', Vat.string().test(Validate.isUrlValid)); Vat.register('urn', Vat.string().test(Validate.isUrnValid)); return Vat; });
describe('importSearchParamsUsingSchema', function () { var schema = { optional: Vat.string().optional(), required: Vat.string().valid('value').required() }; describe('passes validation', function () { beforeEach(function () { windowMock.location.search = TestHelpers.toSearchString({ ignored: true, required: 'value' }); model.importSearchParamsUsingSchema(schema, AuthErrors); }); it('imports fields in the schema that have values', function () { assert.equal(model.get('required'), 'value'); }); it('does not import optional fields in the schema w/o values', function () { assert.isFalse(model.has('optional')); }); it('ignores fields not in the schema', function () { assert.isFalse(model.has('ignored')); }); }); describe('does not pass validation', function () { var err; describe('missing data', function () { beforeEach(function () { windowMock.location.search = TestHelpers.toSearchString({}); try { model.importSearchParamsUsingSchema(schema, AuthErrors); } catch (e) { err = e; } }); it('throws a MISSING_PARAMETER error', function () { assert.isTrue(AuthErrors.is(err, 'MISSING_PARAMETER')); assert.equal(err.param, 'required'); }); }); describe('invalid data', function () { beforeEach(function () { windowMock.location.search = TestHelpers.toSearchString({ required: 'invalid' }); try { model.importSearchParamsUsingSchema(schema, AuthErrors); } catch (e) { err = e; } }); it('throws a INVALID_PARAMETER', function () { assert.isTrue(AuthErrors.is(err, 'INVALID_PARAMETER')); assert.equal(err.param, 'required'); }); }); }); });
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // Do some validation. import Validate from './validate'; import Vat from 'vat'; Vat.register('accessType', Vat.string().test(Validate.isAccessTypeValid)); Vat.register('action', Vat.string().valid('signin', 'signup', 'email', 'force_auth')); Vat.register('base32', Vat.string().test(Validate.isBase32Valid)); Vat.register('channelId', Vat.string().test(Validate.isBase64Url)); Vat.register('channelKey', Vat.string().test(Validate.isBase64Url)); Vat.register('codeChallenge', Vat.string().min(43).max(128)); Vat.register('codeChallengeMethod', Vat.string().valid('S256')); Vat.register('email', Vat.string().test(Validate.isEmailValid)); Vat.register('hex', Vat.string().test(Validate.isHexValid)); Vat.register('keyFetchToken', Vat.string()); Vat.register('keysJwk', Vat.string().test(Validate.isBase64Url)); Vat.register('oauthCode', Vat.string().test(Validate.isOAuthCodeValid)); Vat.register('password', Vat.string().test(Validate.isPasswordValid)); Vat.register('prompt', Vat.string().test(Validate.isPromptValid)); Vat.register('recoveryCode', Vat.string().test(Validate.isRecoveryCodeValid)); Vat.register('sessionToken', Vat.string()); Vat.register('token', Vat.string().test(Validate.isTokenValid)); Vat.register('totpCode', Vat.string().test(Validate.isTotpCodeValid)); Vat.register('uid', Vat.string().test(Validate.isUidValid)); Vat.register('unblockCode', Vat.string().test(Validate.isUnblockCodeValid)); Vat.register('unwrapBKey', Vat.string()); Vat.register('url', Vat.string().test(Validate.isUrlValid));