auth0-lock 14.3.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.
Files changed (54) hide show
  1. package/.github/workflows/codeql.yml +1 -1
  2. package/.github/workflows/npm-release.yml +1 -1
  3. package/.github/workflows/snyk.yml +1 -1
  4. package/.github/workflows/test.yml +2 -2
  5. package/.husky/pre-commit +4 -0
  6. package/.version +1 -1
  7. package/CHANGELOG.md +28 -0
  8. package/README.md +1 -1
  9. package/lib/__tests__/auth_button.js +21 -6
  10. package/lib/__tests__/connection/database/login_pane.js +12 -5
  11. package/lib/__tests__/connection/database/reset_password.js +15 -12
  12. package/lib/__tests__/connection/enterprise/hrd_pane.js +16 -6
  13. package/lib/__tests__/connection/enterprise/hrd_screen.js +27 -18
  14. package/lib/__tests__/connection/passwordless/ask_vcode.js +15 -7
  15. package/lib/__tests__/core/sso/last_login_screen.js +91 -40
  16. package/lib/__tests__/engine/classic/mfa_login_screen.js +9 -3
  17. package/lib/__tests__/engine/classic/sign_up_pane.js +16 -6
  18. package/lib/__tests__/engine/classic/sign_up_screen.js +0 -1
  19. package/lib/__tests__/field/captcha/arkose.js +7 -0
  20. package/lib/__tests__/field/captcha/auth0_v2.js +6 -0
  21. package/lib/__tests__/field/captcha/friendlyCaptcha.js +6 -0
  22. package/lib/__tests__/field/captcha/hcaptcha.js +6 -0
  23. package/lib/__tests__/field/captcha/recaptcha_enterprise.js +6 -0
  24. package/lib/__tests__/field/captcha/recaptchav2.js +6 -0
  25. package/lib/__tests__/field/captcha/third_party_captcha.js +97 -64
  26. package/lib/__tests__/field/captcha.js +76 -143
  27. package/lib/__tests__/field/custom_input.js +7 -5
  28. package/lib/__tests__/field/email_pane.js +27 -11
  29. package/lib/__tests__/field/login_pane.js +6 -3
  30. package/lib/__tests__/field/mfa_code_pane.js +13 -6
  31. package/lib/__tests__/field/option_selection_pane.js +17 -7
  32. package/lib/__tests__/field/password_pane.js +8 -10
  33. package/lib/__tests__/field/phone_number_pane.js +7 -5
  34. package/lib/__tests__/field/social_buttons_pane.js +12 -9
  35. package/lib/__tests__/field/username_pane.js +33 -14
  36. package/lib/__tests__/field/vcode_pane.js +9 -5
  37. package/lib/__tests__/setup-tests.js +1 -7
  38. package/lib/__tests__/testUtils.js +27 -42
  39. package/lib/__tests__/ui/box/global_message.js +75 -42
  40. package/lib/__tests__/ui/input/email_input.js +4 -4
  41. package/lib/__tests__/ui/input/password/password_strength.js +8 -7
  42. package/lib/__tests__/ui/input/password_input.js +18 -14
  43. package/lib/avatar/gravatar_provider.js +1 -2
  44. package/lib/connection/database/index.js +1 -2
  45. package/lib/core/index.js +1 -2
  46. package/lib/core/web_api/helper.js +1 -1
  47. package/lib/field/email.js +1 -2
  48. package/lib/field/index.js +4 -5
  49. package/lib/field/mfa_code.js +1 -3
  50. package/lib/field/username.js +2 -4
  51. package/lib/i18n.js +1 -1
  52. package/lib/lock.js +1 -1
  53. package/lib/passwordless.js +1 -1
  54. package/package.json +13 -10
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
4
  var _immutable = _interopRequireDefault(require("immutable"));
5
- var _enzyme = require("enzyme");
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps)).toMatchSnapshot();
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, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps));
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps));
135
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(EmailPane, defaultProps));
147
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_login_pane.default, defaultProps));
110
- wrapper.find('a.auth0-lock-alternative-link').simulate('click');
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 _enzyme = require("enzyme");
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps)).toMatchSnapshot();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(MFACodePane, defaultProps));
82
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 _enzyme = require("enzyme");
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps)).toMatchSnapshot();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps));
41
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(OptionSelectionPane, defaultProps));
50
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(PasswordPane, defaultProps));
125
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 1);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(PasswordPane, defaultProps));
141
- var props = wrapper.find('div input').props();
142
- props.onChange({
143
- target: {
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(PhoneNumberPane, defaultProps));
91
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 1);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(PhoneNumberPane, defaultProps));
100
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 2);
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, _extends({}, defaultProps, {
98
- signUp: true
99
- })));
100
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 2);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, defaultProps));
121
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 2);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(SocialButtonsPane, defaultProps));
130
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 3);
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 _enzyme = require("enzyme");
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(UsernamePane, _extends({}, defaultProps, {
119
- validateFormat: true
120
- }))).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)).toMatchSnapshot();
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, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps)).toMatchSnapshot();
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, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps));
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps));
151
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(UsernamePane, defaultProps));
163
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper);
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(VcodePane, defaultProps));
102
- wrapper.find('.auth0-lock-alternative-link').simulate('click');
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(VcodePane, defaultProps));
110
- var props = (0, _testUtils.extractPropsFromWrapper)(wrapper, 1);
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
- var _enzyme = require("enzyme");
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.renderShallowComponent = exports.mockComponent = exports.extractPropsFromWrapper = exports.expectShallowComponent = exports.expectMockToMatch = exports.expectComponent = void 0;
6
+ exports.setURL = exports.mockComponent = exports.getMockProps = exports.extractPropsFromWrapper = exports.expectMockToMatch = exports.expectComponent = void 0;
8
7
  var _react = _interopRequireDefault(require("react"));
9
- var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
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, opts) {
22
- var component = _reactTestRenderer.default.create(children, opts);
23
- return expect(component);
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
- var expectShallowComponent = exports.expectShallowComponent = function expectShallowComponent(children) {
26
- var component = renderShallowComponent(children);
27
- return expect(component);
28
- };
29
- var renderShallowComponent = exports.renderShallowComponent = function renderShallowComponent(children) {
30
- var renderer = new _shallow.default();
31
- renderer.render(children);
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, _objectSpread({
54
- 'data-__type': type
55
- }, addDataToProps(props)), children);
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
- var extractPropsFromWrapper = exports.extractPropsFromWrapper = function extractPropsFromWrapper(wrapper) {
59
- var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
60
- return removeDataFromProps(wrapper.find('div').at(index).props());
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
  }