@kineticdata/react 6.0.1 → 6.0.3
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/CHANGELOG.md +86 -0
- package/lib/apis/agent/adapters.js +2 -3
- package/lib/apis/agent/bridges.js +7 -13
- package/lib/apis/agent/handlers.js +7 -13
- package/lib/apis/core/activity.js +2 -3
- package/lib/apis/core/attributeDefinitions.js +6 -11
- package/lib/apis/core/attributeDefinitions.test.js +201 -213
- package/lib/apis/core/authentication.js +74 -84
- package/lib/apis/core/backgroundJobs.js +5 -9
- package/lib/apis/core/bridgeModelAttributeMappings.js +5 -10
- package/lib/apis/core/bridgeModelAttributes.js +6 -11
- package/lib/apis/core/bridgeModelMappings.js +5 -10
- package/lib/apis/core/bridgeModelQualificationMappings.js +5 -10
- package/lib/apis/core/bridgeModelQualifications.js +5 -10
- package/lib/apis/core/bridgeModels.js +7 -13
- package/lib/apis/core/bridgeModels.test.js +313 -333
- package/lib/apis/core/bridgedresources.js +7 -13
- package/lib/apis/core/categories.js +6 -11
- package/lib/apis/core/fileResources.js +5 -10
- package/lib/apis/core/filestores.js +5 -10
- package/lib/apis/core/formTypes.js +6 -11
- package/lib/apis/core/forms.js +6 -11
- package/lib/apis/core/forms.test.js +201 -213
- package/lib/apis/core/kapps.js +6 -11
- package/lib/apis/core/kapps.test.js +122 -130
- package/lib/apis/core/logs.js +3 -5
- package/lib/apis/core/memberships.js +3 -5
- package/lib/apis/core/meta.js +6 -11
- package/lib/apis/core/notices.js +2 -3
- package/lib/apis/core/oauthClients.js +6 -11
- package/lib/apis/core/platformComponents.js +10 -19
- package/lib/apis/core/platformItems.js +2 -3
- package/lib/apis/core/profile.js +3 -5
- package/lib/apis/core/securityPolicyDefinitions.js +6 -11
- package/lib/apis/core/securityPolicyDefinitions.test.js +254 -268
- package/lib/apis/core/space.js +3 -5
- package/lib/apis/core/space.test.js +106 -114
- package/lib/apis/core/submissions.js +19 -35
- package/lib/apis/core/teams.js +6 -11
- package/lib/apis/core/translations.js +18 -35
- package/lib/apis/core/translations.test.js +1343 -1437
- package/lib/apis/core/users.js +6 -11
- package/lib/apis/core/version.js +2 -3
- package/lib/apis/core/webApis.js +5 -10
- package/lib/apis/core/webhooks.js +6 -11
- package/lib/apis/core/webhooks.test.js +243 -257
- package/lib/apis/core/webhooksJobs.js +3 -5
- package/lib/apis/core/workflows.js +7 -13
- package/lib/apis/http.js +16 -31
- package/lib/apis/system/index.js +46 -91
- package/lib/apis/task/index.js +60 -119
- package/lib/components/agent/bridge/BridgeForm.js +1 -2
- package/lib/components/agent/bridge/BridgeTable.js +1 -2
- package/lib/components/agent/filestore/FilestoreForm.js +1 -2
- package/lib/components/agent/filestore/FilestoreTable.js +1 -2
- package/lib/components/agent/handler/AgentHandlerForm.js +1 -2
- package/lib/components/agent/handler/AgentHandlerTable.js +1 -2
- package/lib/components/common/AttributeSelect.js +2 -3
- package/lib/components/common/BridgeSelect.js +16 -17
- package/lib/components/common/ComponentConfigContext.js +1 -2
- package/lib/components/common/ContentEditable.js +23 -3
- package/lib/components/common/FormSelect.js +16 -17
- package/lib/components/common/NodeSelect.js +2 -3
- package/lib/components/common/Scroller.js +2 -3
- package/lib/components/common/StaticSelect.js +14 -15
- package/lib/components/common/TableInput.js +276 -63
- package/lib/components/common/TeamSelect.js +16 -17
- package/lib/components/common/ToastContainer.js +7 -12
- package/lib/components/common/Typeahead.js +15 -2
- package/lib/components/common/UserSelect.js +16 -17
- package/lib/components/common/authentication/AuthInterceptor.js +2 -3
- package/lib/components/common/authentication/AuthInterceptor.test.js +141 -153
- package/lib/components/common/authentication/AuthenticationContainer.js +332 -343
- package/lib/components/common/authentication/RequestInterceptor.js +2 -10
- package/lib/components/common/code_input/CodeInput.js +4 -9
- package/lib/components/common/code_input/draftHelpers.js +20 -37
- package/lib/components/common/code_input/languageHelpers.js +6 -12
- package/lib/components/common/code_input/languageHelpers.test.js +10 -8
- package/lib/components/common/defaults/Toast.js +1 -2
- package/lib/components/common/defaults/index.js +2 -3
- package/lib/components/core/attribute_definition/AttributeDefinitionForm.js +1 -2
- package/lib/components/core/attribute_definition/AttributeDefinitionTable.js +1 -2
- package/lib/components/core/bridge_model/BridgeModelForm.js +52 -55
- package/lib/components/core/bridge_model/BridgeModelTable.js +1 -2
- package/lib/components/core/bridge_model_attribute/BridgeModelAttributeForm.js +1 -2
- package/lib/components/core/bridge_model_attribute/BridgeModelAttributeTable.js +1 -2
- package/lib/components/core/bridge_model_qualification/BridgeModelQualificationForm.js +1 -2
- package/lib/components/core/bridge_model_qualification/BridgeModelQualificationTable.js +1 -2
- package/lib/components/core/category/CategoryForm.js +1 -2
- package/lib/components/core/category/CategoryTable.js +1 -2
- package/lib/components/core/core_form/CoreForm.js +11 -22
- package/lib/components/core/core_form/defaults/index.js +11 -19
- package/lib/components/core/core_form/globals.js +3 -5
- package/lib/components/core/field_definition/FieldDefinitionForm.js +1 -2
- package/lib/components/core/field_definition/FieldDefinitionTable.js +2 -4
- package/lib/components/core/file_resource/FileResourceForm.js +1 -2
- package/lib/components/core/file_resource/FileResourceTable.js +1 -2
- package/lib/components/core/form/FormForm.js +4 -4
- package/lib/components/core/form/FormTable.js +1 -2
- package/lib/components/core/form_type/FormTypeForm.js +1 -2
- package/lib/components/core/form_type/FormTypeTable.js +1 -2
- package/lib/components/core/i18n/I18n.js +2 -4
- package/lib/components/core/i18n/I18nContext.js +1 -2
- package/lib/components/core/i18n/I18nProvider.js +2 -3
- package/lib/components/core/i18n/Moment.js +10 -9
- package/lib/components/core/index_definition/IndexDefinitionForm.js +1 -2
- package/lib/components/core/index_definition/IndexDefinitionTable.js +1 -2
- package/lib/components/core/index_job/IndexJobTable.js +1 -2
- package/lib/components/core/kapp/KappForm.js +1 -2
- package/lib/components/core/kapp/KappTable.js +1 -2
- package/lib/components/core/log/LogTable.js +2 -4
- package/lib/components/core/oauth_client/OAuthClientForm.js +1 -2
- package/lib/components/core/oauth_client/OAuthClientTable.js +1 -2
- package/lib/components/core/platform_component/AgentComponentForm.js +1 -2
- package/lib/components/core/platform_component/AgentComponentTable.js +1 -2
- package/lib/components/core/platform_component/TaskComponentForm.js +1 -2
- package/lib/components/core/profile/ProfileForm.js +1 -2
- package/lib/components/core/security_definition/SecurityDefinitionForm.js +3 -6
- package/lib/components/core/security_definition/SecurityDefinitionTable.js +1 -2
- package/lib/components/core/space/SpaceForm.js +1 -2
- package/lib/components/core/submission/DatastoreSubmissionFilters.js +3 -5
- package/lib/components/core/submission/DatastoreSubmissionTable.js +2 -4
- package/lib/components/core/submission/FormSubmissionFilters.js +4 -7
- package/lib/components/core/submission/FormSubmissionTable.js +2 -4
- package/lib/components/core/submission/KappSubmissionTable.js +2 -4
- package/lib/components/core/submission/SubmissionForm.js +1 -2
- package/lib/components/core/submission/SubmissionTable.js +2 -3
- package/lib/components/core/submission/helpers.js +4 -7
- package/lib/components/core/team/TeamForm.js +1 -2
- package/lib/components/core/team/TeamTable.js +1 -2
- package/lib/components/core/translation/ContextForm.js +1 -2
- package/lib/components/core/translation/ContextTable.js +1 -2
- package/lib/components/core/translation/EntryForm.js +1 -2
- package/lib/components/core/translation/EntryTable.js +1 -2
- package/lib/components/core/translation/LocaleForm.js +1 -2
- package/lib/components/core/translation/LocaleTable.js +1 -2
- package/lib/components/core/user/UserForm.js +1 -2
- package/lib/components/core/user/UserTable.js +1 -2
- package/lib/components/core/webapi/WebApiForm.js +97 -101
- package/lib/components/core/webapi/WebApiTable.js +1 -2
- package/lib/components/core/webhook/WebhookForm.js +1 -2
- package/lib/components/core/webhook/WebhookTable.js +1 -2
- package/lib/components/core/webhook_job/WebhookJobTable.js +1 -2
- package/lib/components/form/Form.helpers.js +10 -19
- package/lib/components/form/Form.js +312 -355
- package/lib/components/form/Form.models.js +6 -11
- package/lib/components/form/FormState.js +3 -3
- package/lib/components/form/KitchenSinkForm.js +23 -3
- package/lib/components/form/SimpleForm.helpers.js +262 -0
- package/lib/components/form/SimpleForm.js +462 -0
- package/lib/components/form/SimpleForm.models.js +62 -0
- package/lib/components/form/defaults/AttributesField.js +3 -4
- package/lib/components/form/defaults/CheckboxField.js +2 -3
- package/lib/components/form/defaults/CodeField.js +2 -3
- package/lib/components/form/defaults/FormButtons.js +2 -3
- package/lib/components/form/defaults/FormError.js +2 -3
- package/lib/components/form/defaults/FormField.js +2 -3
- package/lib/components/form/defaults/FormLayout.js +2 -3
- package/lib/components/form/defaults/FormMultiField.js +2 -3
- package/lib/components/form/defaults/PasswordField.js +2 -3
- package/lib/components/form/defaults/RadioField.js +2 -3
- package/lib/components/form/defaults/SampleTeamsRolesFIeld.js +2 -3
- package/lib/components/form/defaults/SelectField.js +2 -3
- package/lib/components/form/defaults/SelectMultiField.js +2 -3
- package/lib/components/form/defaults/TableField.js +2 -3
- package/lib/components/form/defaults/TeamField.js +2 -3
- package/lib/components/form/defaults/TeamMultiField.js +2 -3
- package/lib/components/form/defaults/TextField.js +2 -3
- package/lib/components/form/defaults/TextMultiField.js +2 -3
- package/lib/components/form/defaults/UserField.js +2 -3
- package/lib/components/form/defaults/UserMultiField.js +2 -3
- package/lib/components/form/defaults/index.js +2 -3
- package/lib/components/form/tests/Form.test.js +4354 -4508
- package/lib/components/form/tests/components.js +73 -64
- package/lib/components/index.js +7 -0
- package/lib/components/system/SystemBackgroundTasksTable.js +1 -2
- package/lib/components/system/SystemCassandraForm.js +1 -2
- package/lib/components/system/SystemElasticSearchForm.js +1 -2
- package/lib/components/system/SystemFilestoreForm.js +2 -3
- package/lib/components/system/SystemForm.js +1 -2
- package/lib/components/system/SystemIngressForm.js +1 -2
- package/lib/components/system/SystemSecurityForm.js +1 -2
- package/lib/components/system/SystemSmtpForm.js +1 -2
- package/lib/components/system/SystemTaskAdapterForm.js +1 -2
- package/lib/components/system/SystemTrustedCertificateForm.js +1 -2
- package/lib/components/system/SystemTrustedCertificatesTable.js +1 -2
- package/lib/components/system/SystemUserForm.js +1 -2
- package/lib/components/system/helpers.js +11 -21
- package/lib/components/system/spaces/SystemSpaceForm.js +2 -3
- package/lib/components/system/spaces/SystemTenantForm.js +2 -3
- package/lib/components/system/spaces/SystemTenantTable.js +1 -2
- package/lib/components/table/Table.js +48 -51
- package/lib/components/table/Table.redux.js +161 -188
- package/lib/components/table/Table.test.js +115 -123
- package/lib/components/table/defaults/BodyCell.js +1 -2
- package/lib/components/table/defaults/BodyRow.js +1 -2
- package/lib/components/table/defaults/BooleanFilter.js +1 -2
- package/lib/components/table/defaults/ColumnControl.js +1 -2
- package/lib/components/table/defaults/EmptyBodyRow.js +1 -2
- package/lib/components/table/defaults/FilterLayout.js +1 -2
- package/lib/components/table/defaults/Footer.js +1 -2
- package/lib/components/table/defaults/FooterCell.js +1 -2
- package/lib/components/table/defaults/FooterRow.js +1 -2
- package/lib/components/table/defaults/Header.js +1 -2
- package/lib/components/table/defaults/HeaderCell.js +1 -2
- package/lib/components/table/defaults/HeaderRow.js +1 -2
- package/lib/components/table/defaults/PaginationControl.js +2 -4
- package/lib/components/table/defaults/TableBody.js +1 -2
- package/lib/components/table/defaults/TableLayout.js +1 -2
- package/lib/components/table/defaults/TextFilter.js +1 -2
- package/lib/components/table/defaults/index.js +2 -3
- package/lib/components/table/tests/Table.redux.test.js +162 -0
- package/lib/components/table/tests/Table.test.js +767 -0
- package/lib/components/table/tests/components.js +182 -0
- package/lib/components/task/builder/Connector.js +26 -11
- package/lib/components/task/builder/ConnectorForm.js +1 -2
- package/lib/components/task/builder/Node.js +18 -9
- package/lib/components/task/builder/NodeForm.js +1 -2
- package/lib/components/task/builder/NodeParametersForm.js +1 -2
- package/lib/components/task/builder/SvgCanvas.js +2 -3
- package/lib/components/task/builder/SvgText.js +2 -3
- package/lib/components/task/builder/TaskDefinitionConfigForm.js +3 -6
- package/lib/components/task/builder/TreeBuilder.js +14 -5
- package/lib/components/task/builder/builder.redux.js +187 -186
- package/lib/components/task/builder/constants.js +38 -76
- package/lib/components/task/builder/helpers.js +23 -40
- package/lib/components/task/builder/models.js +24 -35
- package/lib/components/task/category/TaskCategoryForm.js +2 -3
- package/lib/components/task/category/TaskCategoryTable.js +1 -2
- package/lib/components/task/common/UsageTable.js +1 -2
- package/lib/components/task/engine/EngineSettingsForm.js +2 -3
- package/lib/components/task/errors/RunErrorTable.js +2 -3
- package/lib/components/task/errors/SystemErrorsTable.js +1 -2
- package/lib/components/task/handlers/HandlerForm.js +2 -3
- package/lib/components/task/handlers/HandlerTable.js +1 -2
- package/lib/components/task/handlers/MissingHandlerTable.js +1 -2
- package/lib/components/task/policy_rule/PolicyRuleForm.js +2 -3
- package/lib/components/task/policy_rule/PolicyRuleTable.js +1 -2
- package/lib/components/task/runs/CreateManualTriggerForm.js +1 -2
- package/lib/components/task/runs/RunTable.js +2 -3
- package/lib/components/task/runs/RunTaskTable.js +1 -2
- package/lib/components/task/sources/SourceForm.js +1 -2
- package/lib/components/task/sources/SourceTable.js +1 -2
- package/lib/components/task/triggers/TriggerTable.js +2 -3
- package/lib/components/task/workflows/LinkedWorkflowForm.js +3 -5
- package/lib/components/task/workflows/LinkedWorkflowTable.js +1 -2
- package/lib/components/task/workflows/MissingRoutineTable.js +1 -2
- package/lib/components/task/workflows/WorkflowForm.js +91 -41
- package/lib/components/task/workflows/WorkflowTable.js +1 -2
- package/lib/helpers/SearchBuilder.js +2 -4
- package/lib/helpers/index.js +13 -26
- package/lib/index.js +3 -6
- package/lib/reducer.js +3 -5
- package/lib/saga.js +32 -48
- package/lib/store.js +32 -42
- package/package.json +12 -15
- package/lib/components/core/CoreFormModal.js +0 -64
- package/lib/components/core/CoreModal.js +0 -114
|
@@ -61,20 +61,20 @@ var valueToCustomUser = function valueToCustomUser(_ref3) {
|
|
|
61
61
|
var getStatusProps = function getStatusProps(_ref4) {
|
|
62
62
|
var _ref4$search = _ref4.search,
|
|
63
63
|
search = _ref4$search === void 0 ? (0, _immutable.Map)() : _ref4$search,
|
|
64
|
-
_ref4$messages = _ref4.messages
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_short = _ref4$
|
|
68
|
-
_ref4$
|
|
69
|
-
empty = _ref4$
|
|
70
|
-
_ref4$
|
|
71
|
-
custom = _ref4$
|
|
72
|
-
_ref4$
|
|
73
|
-
pending = _ref4$
|
|
74
|
-
_ref4$
|
|
75
|
-
more = _ref4$
|
|
76
|
-
_ref4$
|
|
77
|
-
error = _ref4$
|
|
64
|
+
_ref4$messages = _ref4.messages,
|
|
65
|
+
_ref4$messages2 = _ref4$messages === void 0 ? {} : _ref4$messages,
|
|
66
|
+
_ref4$messages2$short = _ref4$messages2["short"],
|
|
67
|
+
_short = _ref4$messages2$short === void 0 ? 'Type to find a user.' : _ref4$messages2$short,
|
|
68
|
+
_ref4$messages2$empty = _ref4$messages2.empty,
|
|
69
|
+
empty = _ref4$messages2$empty === void 0 ? 'No matching users.' : _ref4$messages2$empty,
|
|
70
|
+
_ref4$messages2$custo = _ref4$messages2.custom,
|
|
71
|
+
custom = _ref4$messages2$custo === void 0 ? 'No matching users. You may also enter a valid email.' : _ref4$messages2$custo,
|
|
72
|
+
_ref4$messages2$pendi = _ref4$messages2.pending,
|
|
73
|
+
pending = _ref4$messages2$pendi === void 0 ? 'Searching...' : _ref4$messages2$pendi,
|
|
74
|
+
_ref4$messages2$more = _ref4$messages2.more,
|
|
75
|
+
more = _ref4$messages2$more === void 0 ? "Too many users, first ".concat(search.get('limit') || '', " shown. Please refine your search.") : _ref4$messages2$more,
|
|
76
|
+
_ref4$messages2$error = _ref4$messages2.error,
|
|
77
|
+
error = _ref4$messages2$error === void 0 ? 'There was an error fetching users.' : _ref4$messages2$error;
|
|
78
78
|
return function (props) {
|
|
79
79
|
return {
|
|
80
80
|
meta: props.searchField ? "Find Users by ".concat(fields[props.searchField]) : null,
|
|
@@ -96,7 +96,7 @@ var getStatusProps = function getStatusProps(_ref4) {
|
|
|
96
96
|
};
|
|
97
97
|
};
|
|
98
98
|
};
|
|
99
|
-
var UserSelect = function UserSelect(props) {
|
|
99
|
+
var UserSelect = exports.UserSelect = function UserSelect(props) {
|
|
100
100
|
return /*#__PURE__*/_react["default"].createElement(_Typeahead.Typeahead, {
|
|
101
101
|
components: props.components || {},
|
|
102
102
|
disabled: props.disabled,
|
|
@@ -114,5 +114,4 @@ var UserSelect = function UserSelect(props) {
|
|
|
114
114
|
id: props.id,
|
|
115
115
|
form: props.form
|
|
116
116
|
});
|
|
117
|
-
};
|
|
118
|
-
exports.UserSelect = UserSelect;
|
|
117
|
+
};
|
|
@@ -8,7 +8,7 @@ exports["default"] = void 0;
|
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
|
|
10
10
|
var _axios = _interopRequireDefault(require("axios"));
|
|
11
|
-
var AuthInterceptor = /*#__PURE__*/function () {
|
|
11
|
+
var AuthInterceptor = exports["default"] = /*#__PURE__*/function () {
|
|
12
12
|
function AuthInterceptor(store, unauthenticatedAction, authenticatedSelector, cancelledSelector) {
|
|
13
13
|
(0, _classCallCheck2["default"])(this, AuthInterceptor);
|
|
14
14
|
this.store = store;
|
|
@@ -63,5 +63,4 @@ var AuthInterceptor = /*#__PURE__*/function () {
|
|
|
63
63
|
}
|
|
64
64
|
}]);
|
|
65
65
|
return AuthInterceptor;
|
|
66
|
-
}();
|
|
67
|
-
exports["default"] = AuthInterceptor;
|
|
66
|
+
}();
|
|
@@ -62,194 +62,182 @@ describe('AuthInterceptor', function () {
|
|
|
62
62
|
test('returns rejected promise with the given error if not 401', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() {
|
|
63
63
|
var authInterceptor, error;
|
|
64
64
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) {
|
|
65
|
-
while (1) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return _context.stop();
|
|
81
|
-
}
|
|
65
|
+
while (1) switch (_context.prev = _context.next) {
|
|
66
|
+
case 0:
|
|
67
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector);
|
|
68
|
+
error = {
|
|
69
|
+
response: {
|
|
70
|
+
status: 400
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
_context.next = 4;
|
|
74
|
+
return expect(authInterceptor.handleRejected(error)).rejects.toBe(error);
|
|
75
|
+
case 4:
|
|
76
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
77
|
+
case 5:
|
|
78
|
+
case "end":
|
|
79
|
+
return _context.stop();
|
|
82
80
|
}
|
|
83
81
|
}, _callee);
|
|
84
82
|
})));
|
|
85
83
|
test('performs authentication workflow with successful login', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() {
|
|
86
84
|
var authInterceptor, error, rejectedCall;
|
|
87
85
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) {
|
|
88
|
-
while (1) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
url: 'foo'
|
|
99
|
-
}
|
|
86
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
87
|
+
case 0:
|
|
88
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector); // Mock an axios return value.
|
|
89
|
+
_axios["default"].mockReturnValue(Promise.resolve('Hello World'));
|
|
90
|
+
// Make a call to handleRejected that will trigger the auth functionality.
|
|
91
|
+
error = {
|
|
92
|
+
response: {
|
|
93
|
+
status: 401,
|
|
94
|
+
config: {
|
|
95
|
+
url: 'foo'
|
|
100
96
|
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
rejectedCall = authInterceptor.handleRejected(error); // It should dispatch the redux action using the action creator passed to
|
|
100
|
+
// the controller and start to listen to the store for success or cancel.
|
|
101
|
+
expect(store.actions).toEqual([{
|
|
102
|
+
type: 'TIMED_OUT'
|
|
103
|
+
}]);
|
|
104
|
+
expect(store.listeners.length).toBe(1);
|
|
105
|
+
expect(authInterceptor.authPromise).not.toBeNull();
|
|
106
|
+
// Simulate sucessful authentication and call the listener.
|
|
107
|
+
store.state.authenticated = true;
|
|
108
|
+
store.listeners[0]();
|
|
109
|
+
// The promse should be resolved with the axios resolved value. Also
|
|
110
|
+
// ensure that axios was called and that the listener is unsubscribed.
|
|
111
|
+
_context2.next = 11;
|
|
112
|
+
return expect(rejectedCall).resolves.toBe('Hello World');
|
|
113
|
+
case 11:
|
|
114
|
+
expect(_axios["default"].mock.calls).toEqual([[{
|
|
115
|
+
url: 'foo'
|
|
116
|
+
}]]);
|
|
117
|
+
expect(store.listeners.length).toBe(0);
|
|
118
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
119
|
+
case 14:
|
|
120
|
+
case "end":
|
|
121
|
+
return _context2.stop();
|
|
126
122
|
}
|
|
127
123
|
}, _callee2);
|
|
128
124
|
})));
|
|
129
125
|
test('performs authentication workflow with cancelled login', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() {
|
|
130
126
|
var authInterceptor, error, rejectedCall;
|
|
131
127
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) {
|
|
132
|
-
while (1) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
url: 'foo'
|
|
141
|
-
}
|
|
128
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
129
|
+
case 0:
|
|
130
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector); // Make a call to handleRejected that will trigger the auth functionality.
|
|
131
|
+
error = {
|
|
132
|
+
response: {
|
|
133
|
+
status: 401,
|
|
134
|
+
config: {
|
|
135
|
+
url: 'foo'
|
|
142
136
|
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
rejectedCall = authInterceptor.handleRejected(error); // It should dispatch the redux action using the action creator passed to
|
|
140
|
+
// the controller and start to listen to the store for success or cancel.
|
|
141
|
+
expect(store.actions).toEqual([{
|
|
142
|
+
type: 'TIMED_OUT'
|
|
143
|
+
}]);
|
|
144
|
+
expect(store.listeners.length).toBe(1);
|
|
145
|
+
expect(authInterceptor.authPromise).not.toBeNull();
|
|
146
|
+
// Simulate cancel and call the listener.
|
|
147
|
+
store.state.cancelled = true;
|
|
148
|
+
store.listeners[0]();
|
|
149
|
+
// The promse should be rejected with the original error object. Also
|
|
150
|
+
// ensure that axios is not called and that the listener is unsubscribed.
|
|
151
|
+
_context3.next = 10;
|
|
152
|
+
return expect(rejectedCall).rejects.toBe(error);
|
|
153
|
+
case 10:
|
|
154
|
+
expect(_axios["default"].mock.calls).toEqual([]);
|
|
155
|
+
expect(store.listeners.length).toBe(0);
|
|
156
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
157
|
+
case 13:
|
|
158
|
+
case "end":
|
|
159
|
+
return _context3.stop();
|
|
166
160
|
}
|
|
167
161
|
}, _callee3);
|
|
168
162
|
})));
|
|
169
163
|
test('creates one authPromise for multiple calls', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() {
|
|
170
164
|
var authInterceptor, error, authPromise1, authPromise2;
|
|
171
165
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) {
|
|
172
|
-
while (1) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
url: 'foo'
|
|
183
|
-
}
|
|
166
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
167
|
+
case 0:
|
|
168
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector); // Should be null initially.
|
|
169
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
170
|
+
// Call handleRejected with the error object, should return a promise.
|
|
171
|
+
error = {
|
|
172
|
+
response: {
|
|
173
|
+
status: 401,
|
|
174
|
+
config: {
|
|
175
|
+
url: 'foo'
|
|
184
176
|
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
authInterceptor.handleRejected(error);
|
|
180
|
+
// Should now be set after a call to handleRejected.
|
|
181
|
+
authPromise1 = authInterceptor.authPromise;
|
|
182
|
+
expect(authPromise1).not.toBeNull();
|
|
183
|
+
// Second call to handleRejected should not change the value of the
|
|
184
|
+
// authPromise.
|
|
185
|
+
authInterceptor.handleRejected(error);
|
|
186
|
+
authPromise2 = authInterceptor.authPromise;
|
|
187
|
+
expect(authPromise1).toBe(authPromise2);
|
|
188
|
+
case 9:
|
|
189
|
+
case "end":
|
|
190
|
+
return _context4.stop();
|
|
199
191
|
}
|
|
200
192
|
}, _callee4);
|
|
201
193
|
})));
|
|
202
194
|
test('returns original error if authenticated selector returns true initially', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee5() {
|
|
203
195
|
var authInterceptor, error;
|
|
204
196
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee5$(_context5) {
|
|
205
|
-
while (1) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
url: 'foo'
|
|
214
|
-
}
|
|
197
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector);
|
|
200
|
+
error = {
|
|
201
|
+
response: {
|
|
202
|
+
status: 401,
|
|
203
|
+
config: {
|
|
204
|
+
url: 'foo'
|
|
215
205
|
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
store.state.authenticated = true;
|
|
209
|
+
_context5.next = 5;
|
|
210
|
+
return expect(authInterceptor.handleRejected(error)).rejects.toBe(error);
|
|
211
|
+
case 5:
|
|
212
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
213
|
+
case 6:
|
|
214
|
+
case "end":
|
|
215
|
+
return _context5.stop();
|
|
226
216
|
}
|
|
227
217
|
}, _callee5);
|
|
228
218
|
})));
|
|
229
219
|
test('returns original error if cancelled selector returns true initially', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee6() {
|
|
230
220
|
var authInterceptor, error;
|
|
231
221
|
return (0, _regeneratorRuntime2["default"])().wrap(function _callee6$(_context6) {
|
|
232
|
-
while (1) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
url: 'foo'
|
|
241
|
-
}
|
|
222
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
223
|
+
case 0:
|
|
224
|
+
authInterceptor = new _AuthInterceptor["default"](store, unauthenticatedAction, authenticatedSelector, cancelledSelector);
|
|
225
|
+
error = {
|
|
226
|
+
response: {
|
|
227
|
+
status: 401,
|
|
228
|
+
config: {
|
|
229
|
+
url: 'foo'
|
|
242
230
|
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
store.state.cancelled = true;
|
|
234
|
+
_context6.next = 5;
|
|
235
|
+
return expect(authInterceptor.handleRejected(error)).rejects.toBe(error);
|
|
236
|
+
case 5:
|
|
237
|
+
expect(authInterceptor.authPromise).toBeNull();
|
|
238
|
+
case 6:
|
|
239
|
+
case "end":
|
|
240
|
+
return _context6.stop();
|
|
253
241
|
}
|
|
254
242
|
}, _callee6);
|
|
255
243
|
})));
|