UNPKG

auth0-lock

Version:
79 lines (75 loc) 4.23 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var _immutable = _interopRequireDefault(require("immutable")); var _flat = _interopRequireDefault(require("flat")); var _en = _interopRequireDefault(require("../i18n/en")); var _es = _interopRequireDefault(require("../i18n/es")); var sync = _interopRequireWildcard(require("../sync")); var l = _interopRequireWildcard(require("../core/index")); var _sanitizer = require("../sanitizer"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('i18n', function () { var syncSpy; var langSpy; beforeEach(function () { syncSpy = jest.spyOn(sync, 'default'); langSpy = jest.spyOn(l.ui, 'language').mockImplementation(function () { return 'en'; }); }); afterEach(function () { syncSpy.mockRestore(); langSpy.mockRestore(); }); describe('load i18n configuration', function () { it('should have a defaultDictionary', function () { var i18n = require('../i18n'); // We need to initialize the state var m = _immutable.default.fromJS({}); // Initialize i18n. var initialized = i18n.initI18n(m); var language = (0, _flat.default)(initialized.getIn(['i18n', 'strings']).toJS()); var en = (0, _flat.default)(_en.default); expect(language).toEqual(en); }); }); describe('when en language is selected', function () { it('should allow check for external en dictionaries', function () { var i18n = require('../i18n'); i18n.initI18n(_immutable.default.fromJS({})); expect(syncSpy).toHaveBeenCalledTimes(1); }); }); describe('when html is called', function () { it('should sanitize the input and not allow for javascript to be passed through', function () { var i18n = require('../i18n'); var strings = { test: '<img src=1 href=1 onerror="javascript:alert(1)"></img>' }; var m = _immutable.default.fromJS({ i18n: { strings: strings } }); var html = i18n.html(m, 'test'); expect(html.props.dangerouslySetInnerHTML.__html).not.toMatch(/javascript:alert/); expect(html.props.dangerouslySetInnerHTML.__html).toEqual('<img href="1" src="1">'); }); it('should allow target=_blank with noopener noreferrer attributes', function () { (0, _sanitizer.initSanitizer)(); var i18n = require('../i18n'); var strings = { test: '<a href="#" target="_blank">link</a>' }; var m = _immutable.default.fromJS({ i18n: { strings: strings } }); var html = i18n.html(m, 'test'); expect(html.props.dangerouslySetInnerHTML.__html).toEqual('<a href="#" target="_blank" rel="noopener noreferrer">link</a>'); }); }); });