auth0-lock 15.0.0 → 15.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/codeql.yml +1 -1
- package/.github/workflows/npm-release.yml +1 -1
- package/.github/workflows/snyk.yml +1 -1
- package/.github/workflows/test.yml +2 -2
- package/.version +1 -1
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/lib/__tests__/auth_button.js +21 -6
- package/lib/__tests__/connection/database/login_pane.js +12 -5
- package/lib/__tests__/connection/database/reset_password.js +15 -12
- package/lib/__tests__/connection/enterprise/hrd_pane.js +16 -6
- package/lib/__tests__/connection/enterprise/hrd_screen.js +27 -18
- package/lib/__tests__/connection/passwordless/ask_vcode.js +15 -7
- package/lib/__tests__/core/sso/last_login_screen.js +91 -40
- package/lib/__tests__/engine/classic/mfa_login_screen.js +9 -3
- package/lib/__tests__/engine/classic/sign_up_pane.js +16 -6
- package/lib/__tests__/engine/classic/sign_up_screen.js +0 -1
- package/lib/__tests__/field/captcha/arkose.js +7 -0
- package/lib/__tests__/field/captcha/auth0_v2.js +6 -0
- package/lib/__tests__/field/captcha/friendlyCaptcha.js +6 -0
- package/lib/__tests__/field/captcha/hcaptcha.js +6 -0
- package/lib/__tests__/field/captcha/recaptcha_enterprise.js +6 -0
- package/lib/__tests__/field/captcha/recaptchav2.js +6 -0
- package/lib/__tests__/field/captcha/third_party_captcha.js +97 -64
- package/lib/__tests__/field/captcha.js +76 -143
- package/lib/__tests__/field/custom_input.js +7 -5
- package/lib/__tests__/field/email_pane.js +27 -11
- package/lib/__tests__/field/login_pane.js +6 -3
- package/lib/__tests__/field/mfa_code_pane.js +13 -6
- package/lib/__tests__/field/option_selection_pane.js +17 -7
- package/lib/__tests__/field/password_pane.js +8 -10
- package/lib/__tests__/field/phone_number_pane.js +7 -5
- package/lib/__tests__/field/social_buttons_pane.js +12 -9
- package/lib/__tests__/field/username_pane.js +33 -14
- package/lib/__tests__/field/vcode_pane.js +9 -5
- package/lib/__tests__/setup-tests.js +1 -7
- package/lib/__tests__/testUtils.js +27 -42
- package/lib/__tests__/ui/box/global_message.js +75 -42
- package/lib/__tests__/ui/input/email_input.js +4 -4
- package/lib/__tests__/ui/input/password/password_strength.js +8 -7
- package/lib/__tests__/ui/input/password_input.js +18 -14
- package/lib/core/web_api/helper.js +1 -1
- package/lib/i18n.js +1 -1
- package/lib/lock.js +1 -1
- package/lib/passwordless.js +1 -1
- package/package.json +7 -7
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
4
|
var _immutable = _interopRequireDefault(require("immutable"));
|
|
5
|
-
var
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
6
|
var _testUtils = require("testUtils");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
8
|
jest.mock('ui/input/email_input', function () {
|
|
@@ -83,9 +83,13 @@ describe('EmailPane', function () {
|
|
|
83
83
|
};
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
|
-
it('renders correctly', function () {
|
|
86
|
+
it('renders correctly with isValid=false when `isFieldVisiblyInvalid` is true', function () {
|
|
87
87
|
var EmailPane = getComponent();
|
|
88
|
-
(0,
|
|
88
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
89
|
+
container = _render.container;
|
|
90
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="email_input"]'));
|
|
91
|
+
expect(props.isValid).toBe(false);
|
|
92
|
+
expect(props.autoComplete).toBe(false);
|
|
89
93
|
});
|
|
90
94
|
it('sets `blankErrorHint` when username is empty', function () {
|
|
91
95
|
var fieldIndexMock = require('field/index');
|
|
@@ -101,28 +105,38 @@ describe('EmailPane', function () {
|
|
|
101
105
|
});
|
|
102
106
|
};
|
|
103
107
|
var EmailPane = getComponent();
|
|
104
|
-
(0,
|
|
108
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
109
|
+
container = _render2.container;
|
|
110
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="email_input"]'));
|
|
111
|
+
expect(props.isValid).toBe(false);
|
|
112
|
+
expect(props.invalidHint).toBe('blankErrorHint');
|
|
105
113
|
});
|
|
106
114
|
it('sets isValid as true when `isFieldVisiblyInvalid` is false', function () {
|
|
107
115
|
require('field/index').isFieldVisiblyInvalid = function () {
|
|
108
116
|
return false;
|
|
109
117
|
};
|
|
110
118
|
var EmailPane = getComponent();
|
|
111
|
-
(0,
|
|
119
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
120
|
+
container = _render3.container;
|
|
121
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="email_input"]'));
|
|
122
|
+
expect(props.isValid).toBe(true);
|
|
112
123
|
});
|
|
113
124
|
it('sets autoComplete to true when `allowAutocomplete` is true', function () {
|
|
114
125
|
require('core/index').ui.allowAutocomplete = function () {
|
|
115
126
|
return true;
|
|
116
127
|
};
|
|
117
128
|
var EmailPane = getComponent();
|
|
118
|
-
(0,
|
|
129
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
130
|
+
container = _render4.container;
|
|
131
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="email_input"]'));
|
|
132
|
+
expect(props.autoComplete).toBe(true);
|
|
119
133
|
});
|
|
120
134
|
it('fetches the avatar on componentDidMount if ui.avatar is true and there is a username', function () {
|
|
121
135
|
require('core/index').ui.avatar = function () {
|
|
122
136
|
return true;
|
|
123
137
|
};
|
|
124
138
|
var EmailPane = getComponent();
|
|
125
|
-
(0,
|
|
139
|
+
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps));
|
|
126
140
|
var mock = require('avatar').requestAvatar.mock;
|
|
127
141
|
expect(mock.calls.length).toBe(1);
|
|
128
142
|
});
|
|
@@ -131,8 +145,9 @@ describe('EmailPane', function () {
|
|
|
131
145
|
return true;
|
|
132
146
|
};
|
|
133
147
|
var EmailPane = getComponent();
|
|
134
|
-
var
|
|
135
|
-
|
|
148
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
149
|
+
container = _render5.container;
|
|
150
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'email_input');
|
|
136
151
|
props.onChange({
|
|
137
152
|
target: {
|
|
138
153
|
value: 'newUser@example.com'
|
|
@@ -143,8 +158,9 @@ describe('EmailPane', function () {
|
|
|
143
158
|
});
|
|
144
159
|
it('calls `swap` onChange', function () {
|
|
145
160
|
var EmailPane = getComponent();
|
|
146
|
-
var
|
|
147
|
-
|
|
161
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)),
|
|
162
|
+
container = _render6.container;
|
|
163
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'email_input');
|
|
148
164
|
props.onChange({
|
|
149
165
|
target: {
|
|
150
166
|
value: 'newUser@example.com'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
var _login_pane = _interopRequireDefault(require("connection/database/login_pane"));
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -106,8 +106,11 @@ describe('LoginPane', function () {
|
|
|
106
106
|
databaseIndexMock.forgotPasswordLink.mockImplementation(function () {
|
|
107
107
|
return undefined;
|
|
108
108
|
});
|
|
109
|
-
var
|
|
110
|
-
|
|
109
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_login_pane.default, defaultProps)),
|
|
110
|
+
container = _render.container;
|
|
111
|
+
(0, _react2.act)(function () {
|
|
112
|
+
container.querySelector('a.auth0-lock-alternative-link').click();
|
|
113
|
+
});
|
|
111
114
|
var actions = require('connection/database/actions');
|
|
112
115
|
var calls = actions.showResetPasswordActivity.mock.calls;
|
|
113
116
|
expect(calls.length).toBe(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
jest.mock('ui/input/mfa_code_input', function () {
|
|
@@ -65,21 +65,28 @@ describe('MFACodePane', function () {
|
|
|
65
65
|
};
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
-
it('renders correctly', function () {
|
|
68
|
+
it('renders correctly with isValid=false when `isFieldVisiblyInvalid` is true', function () {
|
|
69
69
|
var MFACodePane = getComponent();
|
|
70
|
-
(0,
|
|
70
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps)),
|
|
71
|
+
container = _render.container;
|
|
72
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="mfa_code_input"]'));
|
|
73
|
+
expect(props.isValid).toBe(false);
|
|
71
74
|
});
|
|
72
75
|
it('sets isValid as true when `isFieldVisiblyInvalid` is false', function () {
|
|
73
76
|
require('field/index').isFieldVisiblyInvalid = function () {
|
|
74
77
|
return false;
|
|
75
78
|
};
|
|
76
79
|
var MFACodePane = getComponent();
|
|
77
|
-
(0,
|
|
80
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps)),
|
|
81
|
+
container = _render2.container;
|
|
82
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="mfa_code_input"]'));
|
|
83
|
+
expect(props.isValid).toBe(true);
|
|
78
84
|
});
|
|
79
85
|
it('calls `swap` onChange', function () {
|
|
80
86
|
var MFACodePane = getComponent();
|
|
81
|
-
var
|
|
82
|
-
|
|
87
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps)),
|
|
88
|
+
container = _render3.container;
|
|
89
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'mfa_code_input');
|
|
83
90
|
props.onChange({
|
|
84
91
|
target: {
|
|
85
92
|
value: 'newUser'
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
8
|
jest.mock('ui/list', function () {
|
|
8
9
|
return (0, _testUtils.mockComponent)('list');
|
|
9
10
|
});
|
|
@@ -31,14 +32,22 @@ describe('OptionSelectionPane', function () {
|
|
|
31
32
|
};
|
|
32
33
|
});
|
|
33
34
|
});
|
|
34
|
-
it('renders correctly', function () {
|
|
35
|
+
it('renders correctly and passes props to List', function () {
|
|
35
36
|
var OptionSelectionPane = getComponent();
|
|
36
|
-
(0,
|
|
37
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps)),
|
|
38
|
+
container = _render.container;
|
|
39
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="list"]'));
|
|
40
|
+
expect(props.icon).toBe('icon');
|
|
41
|
+
expect(props.iconUrl).toBe('iconUrl');
|
|
42
|
+
expect(props.items).toBe('items');
|
|
43
|
+
expect(_typeof(props.onSelect)).toBe('function');
|
|
44
|
+
expect(_typeof(props.onCancel)).toBe('function');
|
|
37
45
|
});
|
|
38
46
|
it('calls `selectOption` when selected', function () {
|
|
39
47
|
var OptionSelectionPane = getComponent();
|
|
40
|
-
var
|
|
41
|
-
|
|
48
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps)),
|
|
49
|
+
container = _render2.container;
|
|
50
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'list');
|
|
42
51
|
props.onSelect('selected');
|
|
43
52
|
var mock = require('field/actions').selectOption.mock;
|
|
44
53
|
expect(mock.calls.length).toBe(1);
|
|
@@ -46,8 +55,9 @@ describe('OptionSelectionPane', function () {
|
|
|
46
55
|
});
|
|
47
56
|
it('calls `cancelOptionSelection` when cancelled', function () {
|
|
48
57
|
var OptionSelectionPane = getComponent();
|
|
49
|
-
var
|
|
50
|
-
|
|
58
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps)),
|
|
59
|
+
container = _render3.container;
|
|
60
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'list');
|
|
51
61
|
props.onCancel();
|
|
52
62
|
var mock = require('field/actions').cancelOptionSelection.mock;
|
|
53
63
|
expect(mock.calls.length).toBe(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -121,8 +121,9 @@ describe('PasswordPane', function () {
|
|
|
121
121
|
});
|
|
122
122
|
it('calls `swap` when password changes', function () {
|
|
123
123
|
var PasswordPane = getComponent();
|
|
124
|
-
var
|
|
125
|
-
|
|
124
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(PasswordPane, defaultProps)),
|
|
125
|
+
container = _render.container;
|
|
126
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'password_input');
|
|
126
127
|
props.onChange({
|
|
127
128
|
target: {
|
|
128
129
|
value: 'newPassword'
|
|
@@ -137,13 +138,10 @@ describe('PasswordPane', function () {
|
|
|
137
138
|
return true;
|
|
138
139
|
};
|
|
139
140
|
var PasswordPane = getComponent();
|
|
140
|
-
var
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
checked: true
|
|
145
|
-
}
|
|
146
|
-
});
|
|
141
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(PasswordPane, defaultProps)),
|
|
142
|
+
container = _render2.container;
|
|
143
|
+
var inputEl = container.querySelector('input[type="checkbox"]');
|
|
144
|
+
_react2.fireEvent.click(inputEl);
|
|
147
145
|
var mock = require('store/index').swap.mock;
|
|
148
146
|
expect(mock.calls.length).toBe(1);
|
|
149
147
|
expect(mock.calls[0]).toMatchSnapshot();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -87,8 +87,9 @@ describe('PhoneNumberPane', function () {
|
|
|
87
87
|
});
|
|
88
88
|
it('calls `startOptionSelection` when SelectInput is clicked', function () {
|
|
89
89
|
var PhoneNumberPane = getComponent();
|
|
90
|
-
var
|
|
91
|
-
|
|
90
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(PhoneNumberPane, defaultProps)),
|
|
91
|
+
container = _render.container;
|
|
92
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'select_input');
|
|
92
93
|
props.onClick();
|
|
93
94
|
var mock = require('field/actions').startOptionSelection.mock;
|
|
94
95
|
expect(mock.calls.length).toBe(1);
|
|
@@ -96,8 +97,9 @@ describe('PhoneNumberPane', function () {
|
|
|
96
97
|
});
|
|
97
98
|
it('calls `swap` when PhoneNumberInput changes', function () {
|
|
98
99
|
var PhoneNumberPane = getComponent();
|
|
99
|
-
var
|
|
100
|
-
|
|
100
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(PhoneNumberPane, defaultProps)),
|
|
101
|
+
container = _render2.container;
|
|
102
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'phone_number_input');
|
|
101
103
|
props.onChange({
|
|
102
104
|
target: {
|
|
103
105
|
value: 'newPhoneNumber'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -94,10 +94,11 @@ describe('SocialButtonsPane', function () {
|
|
|
94
94
|
});
|
|
95
95
|
it('calls signUpError when isSignUp===true and terms were not accepted', function () {
|
|
96
96
|
var SocialButtonsPane = getComponent();
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, _extends({}, defaultProps, {
|
|
98
|
+
signUp: true
|
|
99
|
+
}))),
|
|
100
|
+
container = _render.container;
|
|
101
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'auth_button');
|
|
101
102
|
props.onClick();
|
|
102
103
|
var mock = require('connection/database/actions').signUpError.mock;
|
|
103
104
|
expect(mock.calls.length).toBe(1);
|
|
@@ -117,8 +118,9 @@ describe('SocialButtonsPane', function () {
|
|
|
117
118
|
});
|
|
118
119
|
it('calls `logIn` with social connection 1 when first button is clicked', function () {
|
|
119
120
|
var SocialButtonsPane = getComponent();
|
|
120
|
-
var
|
|
121
|
-
|
|
121
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, defaultProps)),
|
|
122
|
+
container = _render2.container;
|
|
123
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'auth_button');
|
|
122
124
|
props.onClick();
|
|
123
125
|
var mock = require('quick-auth/actions').logIn.mock;
|
|
124
126
|
expect(mock.calls.length).toBe(1);
|
|
@@ -126,8 +128,9 @@ describe('SocialButtonsPane', function () {
|
|
|
126
128
|
});
|
|
127
129
|
it('calls `logIn` with social connection 2 when second button is clicked', function () {
|
|
128
130
|
var SocialButtonsPane = getComponent();
|
|
129
|
-
var
|
|
130
|
-
|
|
131
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, defaultProps)),
|
|
132
|
+
container = _render3.container;
|
|
133
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'auth_button', 1);
|
|
131
134
|
props.onClick();
|
|
132
135
|
var mock = require('quick-auth/actions').logIn.mock;
|
|
133
136
|
expect(mock.calls.length).toBe(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -88,9 +88,13 @@ describe('UsernamePane', function () {
|
|
|
88
88
|
};
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
|
-
it('renders correctly', function () {
|
|
91
|
+
it('renders correctly with isValid=false when `isFieldVisiblyInvalid` is true', function () {
|
|
92
92
|
var UsernamePane = getComponent();
|
|
93
|
-
(0,
|
|
93
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
94
|
+
container = _render.container;
|
|
95
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="username_input"]'));
|
|
96
|
+
expect(props.isValid).toBe(false);
|
|
97
|
+
expect(props.autoComplete).toBe(false);
|
|
94
98
|
});
|
|
95
99
|
it('sets `blankErrorHint` when username is empty', function () {
|
|
96
100
|
var fieldIndexMock = require('field/index');
|
|
@@ -101,7 +105,11 @@ describe('UsernamePane', function () {
|
|
|
101
105
|
return undefined;
|
|
102
106
|
};
|
|
103
107
|
var UsernamePane = getComponent();
|
|
104
|
-
(0,
|
|
108
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
109
|
+
container = _render2.container;
|
|
110
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="username_input"]'));
|
|
111
|
+
expect(props.isValid).toBe(false);
|
|
112
|
+
expect(props.invalidHint).toContain('blankErrorHint');
|
|
105
113
|
});
|
|
106
114
|
it('sets `usernameFormatErrorHint` when usernameLooksLikeEmail() returns false and `validateFormat` is true', function () {
|
|
107
115
|
var fieldUsernameMock = require('field/username');
|
|
@@ -115,30 +123,39 @@ describe('UsernamePane', function () {
|
|
|
115
123
|
return false;
|
|
116
124
|
};
|
|
117
125
|
var UsernamePane = getComponent();
|
|
118
|
-
(0,
|
|
119
|
-
|
|
120
|
-
|
|
126
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, _extends({}, defaultProps, {
|
|
127
|
+
validateFormat: true
|
|
128
|
+
}))),
|
|
129
|
+
container = _render3.container;
|
|
130
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="username_input"]'));
|
|
131
|
+
expect(props.invalidHint).toContain('usernameFormatErrorHint');
|
|
121
132
|
});
|
|
122
133
|
it('sets isValid as true when `isFieldVisiblyInvalid` is false', function () {
|
|
123
134
|
require('field/index').isFieldVisiblyInvalid = function () {
|
|
124
135
|
return false;
|
|
125
136
|
};
|
|
126
137
|
var UsernamePane = getComponent();
|
|
127
|
-
(0,
|
|
138
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
139
|
+
container = _render4.container;
|
|
140
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="username_input"]'));
|
|
141
|
+
expect(props.isValid).toBe(true);
|
|
128
142
|
});
|
|
129
143
|
it('sets autoComplete to true when `allowAutocomplete` is true', function () {
|
|
130
144
|
require('core/index').ui.allowAutocomplete = function () {
|
|
131
145
|
return true;
|
|
132
146
|
};
|
|
133
147
|
var UsernamePane = getComponent();
|
|
134
|
-
(0,
|
|
148
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
149
|
+
container = _render5.container;
|
|
150
|
+
var props = (0, _testUtils.getMockProps)(container.querySelector('[data-__type="username_input"]'));
|
|
151
|
+
expect(props.autoComplete).toBe(true);
|
|
135
152
|
});
|
|
136
153
|
it('fetches the avatar on componentDidMount if ui.avatar is true and there is a username', function () {
|
|
137
154
|
require('core/index').ui.avatar = function () {
|
|
138
155
|
return true;
|
|
139
156
|
};
|
|
140
157
|
var UsernamePane = getComponent();
|
|
141
|
-
(0,
|
|
158
|
+
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps));
|
|
142
159
|
var mock = require('avatar').requestAvatar.mock;
|
|
143
160
|
expect(mock.calls.length).toBe(1);
|
|
144
161
|
});
|
|
@@ -147,8 +164,9 @@ describe('UsernamePane', function () {
|
|
|
147
164
|
return true;
|
|
148
165
|
};
|
|
149
166
|
var UsernamePane = getComponent();
|
|
150
|
-
var
|
|
151
|
-
|
|
167
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
168
|
+
container = _render6.container;
|
|
169
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'username_input');
|
|
152
170
|
props.onChange({
|
|
153
171
|
target: {
|
|
154
172
|
value: 'newUser'
|
|
@@ -159,8 +177,9 @@ describe('UsernamePane', function () {
|
|
|
159
177
|
});
|
|
160
178
|
it('calls `swap` onChange', function () {
|
|
161
179
|
var UsernamePane = getComponent();
|
|
162
|
-
var
|
|
163
|
-
|
|
180
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)),
|
|
181
|
+
container = _render7.container;
|
|
182
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'username_input');
|
|
164
183
|
props.onChange({
|
|
165
184
|
target: {
|
|
166
185
|
value: 'newUser'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -98,16 +98,20 @@ describe('VcodePane', function () {
|
|
|
98
98
|
});
|
|
99
99
|
it('calls `onRestart` when alternative link is clicked', function () {
|
|
100
100
|
var VcodePane = getComponent();
|
|
101
|
-
var
|
|
102
|
-
|
|
101
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(VcodePane, defaultProps)),
|
|
102
|
+
container = _render.container;
|
|
103
|
+
(0, _react2.act)(function () {
|
|
104
|
+
container.querySelector('.auth0-lock-alternative-link').click();
|
|
105
|
+
});
|
|
103
106
|
var mock = defaultProps.onRestart.mock;
|
|
104
107
|
expect(mock.calls.length).toBe(1);
|
|
105
108
|
expect(mock.calls[0]).toMatchSnapshot();
|
|
106
109
|
});
|
|
107
110
|
it('calls `swap` when VcodeInput changes', function () {
|
|
108
111
|
var VcodePane = getComponent();
|
|
109
|
-
var
|
|
110
|
-
|
|
112
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(VcodePane, defaultProps)),
|
|
113
|
+
container = _render2.container;
|
|
114
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'vcode_input');
|
|
111
115
|
props.onChange({
|
|
112
116
|
preventDefault: jest.fn(),
|
|
113
117
|
target: {
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
var _enzymeAdapterReact = _interopRequireDefault(require("@cfaester/enzyme-adapter-react-18"));
|
|
5
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
6
4
|
// setup file
|
|
7
5
|
|
|
8
|
-
(0, _enzyme.configure)({
|
|
9
|
-
adapter: new _enzymeAdapterReact.default()
|
|
10
|
-
});
|
|
11
|
-
|
|
12
6
|
//jest polyfills
|
|
13
7
|
window.requestAnimationFrame = function (callback) {
|
|
14
8
|
setTimeout(callback, 0);
|
|
@@ -1,63 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports.setURL = exports.
|
|
6
|
+
exports.setURL = exports.mockComponent = exports.getMockProps = exports.extractPropsFromWrapper = exports.expectMockToMatch = exports.expectComponent = void 0;
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var
|
|
10
|
-
var _shallow = _interopRequireDefault(require("react-test-renderer/shallow"));
|
|
11
|
-
var _webpack = require("webpack");
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
12
9
|
var _excluded = ["children"]; // eslint-disable-line
|
|
13
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
18
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
11
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
20
12
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
21
|
-
var expectComponent = exports.expectComponent = function expectComponent(children
|
|
22
|
-
var
|
|
23
|
-
|
|
13
|
+
var expectComponent = exports.expectComponent = function expectComponent(children) {
|
|
14
|
+
var _render = (0, _react2.render)(children),
|
|
15
|
+
asFragment = _render.asFragment;
|
|
16
|
+
return expect(asFragment());
|
|
24
17
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return renderer.getRenderOutput();
|
|
33
|
-
};
|
|
34
|
-
var addDataToProps = function addDataToProps(props) {
|
|
35
|
-
var returnedProps = {};
|
|
36
|
-
Object.keys(props).forEach(function (k) {
|
|
37
|
-
return returnedProps["data-".concat(k)] = props[k];
|
|
38
|
-
});
|
|
39
|
-
return returnedProps;
|
|
40
|
-
};
|
|
41
|
-
var removeDataFromProps = function removeDataFromProps(props) {
|
|
42
|
-
var returnedProps = {};
|
|
43
|
-
Object.keys(props).forEach(function (k) {
|
|
44
|
-
return returnedProps[k.replace('data-', '')] = props[k];
|
|
45
|
-
});
|
|
46
|
-
return returnedProps;
|
|
18
|
+
|
|
19
|
+
// WeakMap stores original props keyed by DOM element, populated by mockComponent via ref.
|
|
20
|
+
// This replaces both the data-* attribute approach (which loses types in snapshots)
|
|
21
|
+
// and the __reactProps$* fiber internals approach (which is an implementation detail).
|
|
22
|
+
var _mockProps = new WeakMap();
|
|
23
|
+
var getMockProps = exports.getMockProps = function getMockProps(el) {
|
|
24
|
+
return _mockProps.get(el) || {};
|
|
47
25
|
};
|
|
48
26
|
var mockComponent = exports.mockComponent = function mockComponent(type) {
|
|
49
27
|
var domElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'div';
|
|
50
28
|
return function (_ref) {
|
|
51
29
|
var children = _ref.children,
|
|
52
30
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
53
|
-
return /*#__PURE__*/_react.default.createElement(domElement,
|
|
54
|
-
'data-__type': type
|
|
55
|
-
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(domElement, {
|
|
32
|
+
'data-__type': type,
|
|
33
|
+
ref: function ref(el) {
|
|
34
|
+
if (el) _mockProps.set(el, props);
|
|
35
|
+
}
|
|
36
|
+
}, children);
|
|
56
37
|
};
|
|
57
38
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
39
|
+
|
|
40
|
+
// Lookup by mock component type name: extractPropsFromWrapper(container, 'input_wrap')
|
|
41
|
+
// Lookup Nth of a type: extractPropsFromWrapper(container, 'auth_button', 1)
|
|
42
|
+
var extractPropsFromWrapper = exports.extractPropsFromWrapper = function extractPropsFromWrapper(container, type) {
|
|
43
|
+
var nth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
44
|
+
var el = container.querySelectorAll("[data-__type=\"".concat(type, "\"]"))[nth];
|
|
45
|
+
if (!el) return {};
|
|
46
|
+
return getMockProps(el);
|
|
61
47
|
};
|
|
62
48
|
|
|
63
49
|
// Newer (> Jest v22) versions don't allow modification of location.href
|
|
@@ -85,7 +71,6 @@ var setURL = exports.setURL = function setURL(url) {
|
|
|
85
71
|
pathname: parsedUrl.pathname,
|
|
86
72
|
search: parsedUrl.search,
|
|
87
73
|
hash: parsedUrl.hash,
|
|
88
|
-
// Add toString for debugging
|
|
89
74
|
toString: function toString() {
|
|
90
75
|
return parsedUrl.href;
|
|
91
76
|
}
|