awing-library 2.1.118-beta → 2.1.120-beta

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 (94) hide show
  1. package/lib/ACM-AXN/{PlaceGroup → AuthenticationProfile}/Constant.d.ts +1 -5
  2. package/lib/ACM-AXN/{PlaceGroup → AuthenticationProfile}/Constant.js +1 -5
  3. package/lib/ACM-AXN/AuthenticationProfile/Container.d.ts +2 -0
  4. package/lib/ACM-AXN/AuthenticationProfile/Container.js +82 -0
  5. package/lib/ACM-AXN/AuthenticationProfile/Container.test.d.ts +1 -0
  6. package/lib/ACM-AXN/AuthenticationProfile/Container.test.js +184 -0
  7. package/lib/ACM-AXN/AuthenticationProfile/Context.d.ts +3 -0
  8. package/lib/ACM-AXN/AuthenticationProfile/Context.js +5 -0
  9. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
  10. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/CreateOrEdit.test.js +203 -0
  11. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/index.d.ts +2 -0
  12. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/index.js +129 -0
  13. package/lib/ACM-AXN/AuthenticationProfile/Hooks.d.ts +2 -0
  14. package/lib/ACM-AXN/AuthenticationProfile/Hooks.js +12 -0
  15. package/lib/ACM-AXN/AuthenticationProfile/Types.d.ts +75 -0
  16. package/lib/ACM-AXN/AuthenticationProfile/Types.js +2 -0
  17. package/lib/ACM-AXN/AuthenticationProfile/Utils.d.ts +11 -0
  18. package/lib/ACM-AXN/AuthenticationProfile/Utils.js +14 -0
  19. package/lib/ACM-AXN/AuthenticationProfile/index.d.ts +3 -0
  20. package/lib/ACM-AXN/AuthenticationProfile/index.js +40 -0
  21. package/lib/ACM-AXN/Campaign/Container.js +1 -1
  22. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabPermission/index.js +1 -1
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +1 -1
  24. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdRow.js +1 -1
  25. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +1 -1
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +1 -1
  27. package/lib/ACM-AXN/Campaign/index.js +1 -2
  28. package/lib/ACM-AXN/{Notifications → Common}/Constant.d.ts +14 -20
  29. package/lib/ACM-AXN/{Notifications → Common}/Constant.js +16 -22
  30. package/lib/ACM-AXN/Common/Enum.d.ts +32 -0
  31. package/lib/ACM-AXN/Common/Enum.js +43 -0
  32. package/lib/ACM-AXN/Directory/DomainDirectory/FolderDetail.js +2 -2
  33. package/lib/ACM-AXN/Directory/DomainDirectory/index.js +5 -5
  34. package/lib/ACM-AXN/Directory/MenuDirectory/index.js +2 -2
  35. package/lib/ACM-AXN/Directory/SystemDirectory/index.js +2 -2
  36. package/lib/ACM-AXN/Directory/components/Permission/Management.js +3 -3
  37. package/lib/ACM-AXN/Directory/components/Permission/MenuPermissions/MenuPermissionManagement.js +3 -3
  38. package/lib/ACM-AXN/Directory/components/Permission/UserOrGroup.js +2 -2
  39. package/lib/ACM-AXN/Directory/components/Permission/index.js +2 -2
  40. package/lib/ACM-AXN/GroupUser/Container.js +3 -3
  41. package/lib/ACM-AXN/GroupUser/Container.test.js +3 -3
  42. package/lib/ACM-AXN/GroupUser/CreateOrEdit.js +3 -3
  43. package/lib/ACM-AXN/GroupUser/User/UserComponent.js +2 -2
  44. package/lib/ACM-AXN/GroupUser/index.js +3 -3
  45. package/lib/ACM-AXN/Notifications/NotificationDetail/HeaderInfo/ButtonTabs.js +1 -1
  46. package/lib/ACM-AXN/Notifications/NotificationDetail/HeaderInfo/MenuNotification.js +1 -1
  47. package/lib/ACM-AXN/Notifications/NotificationDetail/HeaderInfo/index.js +1 -1
  48. package/lib/ACM-AXN/Notifications/NotificationDetail/NotificationList/NotificationItem/Message.js +7 -6
  49. package/lib/ACM-AXN/Notifications/NotificationDetail/NotificationList/index.js +1 -1
  50. package/lib/ACM-AXN/Notifications/NotificationDetail/index.js +1 -1
  51. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.js +1 -1
  52. package/lib/ACM-AXN/Permission/Components/Management.js +1 -1
  53. package/lib/ACM-AXN/Permission/index.js +1 -1
  54. package/lib/ACM-AXN/PlaceGroup/Container.js +1 -1
  55. package/lib/ACM-AXN/PlaceGroup/Container.test.js +1 -1
  56. package/lib/ACM-AXN/PlaceGroup/index.js +1 -1
  57. package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +1 -1
  58. package/lib/ACM-AXN/ScheduleCompletionRate/index.js +1 -1
  59. package/lib/ACM-AXN/TaskScheduler/Container.js +3 -3
  60. package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +6 -7
  61. package/lib/ACM-AXN/TaskScheduler/Types.d.ts +1 -1
  62. package/lib/ACM-AXN/TaskScheduler/Utils.d.ts +5 -0
  63. package/lib/ACM-AXN/TaskScheduler/Utils.js +8 -3
  64. package/lib/ACM-AXN/TaskScheduler/index.js +3 -3
  65. package/lib/ACM-AXN/Template/Container.js +4 -4
  66. package/lib/ACM-AXN/Template/Container.test.js +5 -4
  67. package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +3 -3
  68. package/lib/ACM-AXN/Template/index.js +4 -4
  69. package/lib/ACM-AXN/TransactionLog/Container.js +1 -1
  70. package/lib/ACM-AXN/TransactionLog/index.js +1 -1
  71. package/lib/ACM-AXN/User/Add.js +2 -2
  72. package/lib/ACM-AXN/User/Container.js +2 -2
  73. package/lib/ACM-AXN/User/index.js +2 -2
  74. package/lib/translate/en/translation.json +11 -0
  75. package/lib/translate/vi/translation.json +11 -0
  76. package/package.json +1 -1
  77. package/lib/ACM-AXN/Campaign/Constant.d.ts +0 -38
  78. package/lib/ACM-AXN/Campaign/Constant.js +0 -41
  79. package/lib/ACM-AXN/Directory/Constant.d.ts +0 -13
  80. package/lib/ACM-AXN/Directory/Constant.js +0 -15
  81. package/lib/ACM-AXN/GroupUser/Constants.d.ts +0 -7
  82. package/lib/ACM-AXN/GroupUser/Constants.js +0 -10
  83. package/lib/ACM-AXN/ScheduleCompletionRate/Constant.d.ts +0 -8
  84. package/lib/ACM-AXN/ScheduleCompletionRate/Constant.js +0 -11
  85. package/lib/ACM-AXN/TaskScheduler/Constant.d.ts +0 -9
  86. package/lib/ACM-AXN/TaskScheduler/Constant.js +0 -13
  87. package/lib/ACM-AXN/TaskScheduler/Enums.d.ts +0 -4
  88. package/lib/ACM-AXN/TaskScheduler/Enums.js +0 -8
  89. package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
  90. package/lib/ACM-AXN/Template/Constants.js +0 -1
  91. package/lib/ACM-AXN/TransactionLog/Constant.d.ts +0 -10
  92. package/lib/ACM-AXN/TransactionLog/Constant.js +0 -13
  93. package/lib/ACM-AXN/User/Constants.d.ts +0 -2
  94. package/lib/ACM-AXN/User/Constants.js +0 -5
@@ -1,9 +1,5 @@
1
- /**
2
- *
3
- * @author dauquan1108@gmail.com on 19/02/2024.
4
- *
5
- **/
6
1
  export declare const Constants: {
7
2
  EDIT_PATH: string;
8
3
  CREATE_PATH: string;
4
+ AUTHENTICATION_PROFILE_PATH: string;
9
5
  };
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
- /**
3
- *
4
- * @author dauquan1108@gmail.com on 19/02/2024.
5
- *
6
- **/
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.Constants = void 0;
9
4
  exports.Constants = {
10
5
  EDIT_PATH: 'Edit',
11
6
  CREATE_PATH: 'Create',
7
+ AUTHENTICATION_PROFILE_PATH: 'AuthenticationProfile',
12
8
  };
@@ -0,0 +1,2 @@
1
+ declare function Container(): import("react/jsx-runtime").JSX.Element;
2
+ export default Container;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var react_1 = require("react");
8
+ var react_i18next_1 = require("react-i18next");
9
+ var Constant_1 = require("./Constant");
10
+ var Context_1 = require("../../Context");
11
+ var Utils_1 = require("./Utils");
12
+ var Router_1 = require("../../AWING/Router");
13
+ var Hooks_1 = __importDefault(require("./Hooks"));
14
+ var AWING_1 = require("../../AWING");
15
+ function Container() {
16
+ var _a;
17
+ var navigate = (0, Router_1.useNavigate)();
18
+ var t = (0, react_i18next_1.useTranslation)().t;
19
+ var service = (0, Hooks_1.default)().service;
20
+ var _b = (0, Context_1.useAwing)().appHelper, confirm = _b.confirm, snackbar = _b.snackbar;
21
+ var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
22
+ var _d = (0, react_1.useState)(), authenticationProfiles = _d[0], setAuthenticationProfiles = _d[1];
23
+ var getAuthenticationProfile = (0, react_1.useCallback)(function (queryParams) {
24
+ setLoading(true);
25
+ service
26
+ .authenticationProfilesPaging(queryParams.searchString, queryParams.pageSize, queryParams.pageIndex)
27
+ .then(setAuthenticationProfiles)
28
+ .finally(function () {
29
+ setLoading(false);
30
+ });
31
+ },
32
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ []);
34
+ return ((0, jsx_runtime_1.jsx)(AWING_1.PageManagement, { title: t('AuthenticationProfile.Title'), inputSearchPlaceholder: t('AuthenticationProfile.SearchPlaceholder'), onChangeQueryInput: getAuthenticationProfile, getRowId: function (obj) { return obj.authenticationProfileId; }, columns: [
35
+ {
36
+ field: 'authenticationProfileId',
37
+ headerName: 'STT',
38
+ width: 60,
39
+ valueGetter: function (_unUse, idx, stt) { return stt; },
40
+ },
41
+ {
42
+ field: 'authenticationMethodCode',
43
+ headerName: 'Method Code',
44
+ width: 130,
45
+ },
46
+ {
47
+ field: 'apControllerCode',
48
+ headerName: (0, jsx_runtime_1.jsx)("b", { children: "AP Controller Code" }),
49
+ width: 170,
50
+ valueGetter: function (row) {
51
+ return row.apControllerCode === Utils_1.AP_CONTROLLER_CODE.All ||
52
+ !row.apControllerCode
53
+ ? t('AuthenticationProfile.All')
54
+ : row.apControllerCode;
55
+ },
56
+ },
57
+ {
58
+ field: 'name',
59
+ headerName: t('Common.Name'),
60
+ width: 250,
61
+ dynamicTableCellProps: function () {
62
+ return {
63
+ style: { wordBreak: 'break-all' },
64
+ };
65
+ },
66
+ },
67
+ {
68
+ field: 'parameters',
69
+ headerName: 'Params',
70
+ dynamicTableCellProps: function () {
71
+ return {
72
+ style: { wordBreak: 'break-all' },
73
+ };
74
+ },
75
+ },
76
+ ], loading: loading, rows: (authenticationProfiles === null || authenticationProfiles === void 0 ? void 0 : authenticationProfiles.items) || [], onCreateButtonClick: function () {
77
+ return navigate("/".concat(Constant_1.Constants.AUTHENTICATION_PROFILE_PATH, "/").concat(Constant_1.Constants.CREATE_PATH));
78
+ }, totalOfRows: (authenticationProfiles === null || authenticationProfiles === void 0 ? void 0 : authenticationProfiles.totalItemCount) || 0, onDelete: (_a = service.authenticationProfilesDelete) === null || _a === void 0 ? void 0 : _a.bind(service), onRowClick: function (id) {
79
+ return navigate("/".concat(Constant_1.Constants.AUTHENTICATION_PROFILE_PATH, "/").concat(Constant_1.Constants.EDIT_PATH, "/").concat(id));
80
+ }, confirmDelete: confirm, showNotificationSuccess: function () { return snackbar('success'); } }));
81
+ }
82
+ exports.default = Container;
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ var react_1 = require("@testing-library/react");
55
+ var Router_1 = require("../../AWING/Router");
56
+ var Container_1 = __importDefault(require("./Container"));
57
+ var Constant_1 = require("./Constant");
58
+ var items = [
59
+ {
60
+ authenticationProfileId: '4798649175639457397',
61
+ name: 'TCI UNIFI TEST VP API',
62
+ directoryId: '4960166916046400365',
63
+ directoryPath: '.0.90.100.4960166916046400365.4798649175639457397.',
64
+ authenticationMethodCode: 'api',
65
+ apControllerCode: 'ruckusvirtualsmartzone',
66
+ parameters: '{"BaseUrl": "118.70.206.198:8443","SiteId": "24g5ytl0","Username": "admin","Password": "Awing@2018", "Up":10000,"Down":10000,"Minutes":90,"Mbytes":10000}',
67
+ description: '',
68
+ createdDate: {
69
+ seconds: '1702977561',
70
+ nanos: 0,
71
+ },
72
+ },
73
+ {
74
+ authenticationProfileId: '5044439137295001011',
75
+ name: 'Radius 120',
76
+ directoryId: '4960166916046400365',
77
+ directoryPath: '.0.90.100.4960166916046400365.5044439137295001011.',
78
+ authenticationMethodCode: 'radius',
79
+ apControllerCode: 'extreme',
80
+ parameters: '{"Username":"awing120","Password":"Awing120@2018","SecretKey":"awing"}',
81
+ description: '',
82
+ createdDate: {
83
+ seconds: '1636731568',
84
+ nanos: 0,
85
+ },
86
+ },
87
+ ];
88
+ var clientMethod = {
89
+ authenticationProfilesPaging: function () {
90
+ return Promise.resolve({
91
+ items: items,
92
+ totalItemCount: items.length,
93
+ });
94
+ },
95
+ authenticationProfilesDelete: function () { return function (_id) { }; },
96
+ };
97
+ // Mock Hooks
98
+ jest.mock('./Hooks', function () { return ({
99
+ __esModule: true,
100
+ default: function () { return ({
101
+ service: {
102
+ authenticationProfilesPaging: jest.fn(function (_param) {
103
+ return Promise.resolve(clientMethod.authenticationProfilesPaging());
104
+ }),
105
+ authenticationProfilesDelete: jest.fn(function (_id) {
106
+ return Promise.resolve(clientMethod.authenticationProfilesDelete());
107
+ }),
108
+ },
109
+ }); },
110
+ }); });
111
+ // Mock đa ngữ
112
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
113
+ // Mock PageManagement
114
+ jest.mock('../../AWING', function () { return ({
115
+ PageManagement: function (props) {
116
+ props.onChangeQueryInput({
117
+ searchString: '',
118
+ pageIndex: 0,
119
+ pageSize: 10,
120
+ });
121
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { "data-testid": "title", children: "t('AuthenticationProfile.Title')" }), props.columns
122
+ .filter(function (item) { return item.valueGetter; })
123
+ .map(function (getter, idx) { return ((0, jsx_runtime_1.jsx)("span", { children: getter.valueGetter(items[0], idx) }, idx)); }), (0, jsx_runtime_1.jsx)("span", { "data-testid": "rowid", children: props.getRowId(items[0]) }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "Rowclick", onClick: function () {
124
+ props.onRowClick(items[0].authenticationProfileId);
125
+ }, children: "Rowclick" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "CreateBtn", onClick: props.onCreateButtonClick, children: "CreateBtn" }), (0, jsx_runtime_1.jsx)("button", { onClick: function () {
126
+ props.onChangeQueryInput({
127
+ pageIndex: 1,
128
+ pageSize: 10,
129
+ });
130
+ }, children: "ChangeInput" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onDelete", onClick: function () {
131
+ props.onDelete('onDelete');
132
+ }, children: "Remove Btn" }), (0, jsx_runtime_1.jsx)("p", { children: JSON.stringify(props.rows) }), (0, jsx_runtime_1.jsxs)("span", { children: ["totalItemCount:", props.totalOfRows] })] }));
133
+ },
134
+ }); });
135
+ var renderUi = function () {
136
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(Container_1.default, {}) }));
137
+ };
138
+ describe('AuthenticationProfileId Container component', function () {
139
+ it('Check renders component(Container).', function () {
140
+ renderUi();
141
+ expect(react_1.screen.getByTestId('title')).toBeInTheDocument();
142
+ expect(react_1.screen.getByTestId('CreateBtn')).toBeInTheDocument();
143
+ });
144
+ it('Chuyển đến trang thêm mới.', function () { return __awaiter(void 0, void 0, void 0, function () {
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ renderUi();
149
+ expect(react_1.screen.getByTestId('CreateBtn')).toBeInTheDocument();
150
+ react_1.fireEvent.click(react_1.screen.getByTestId('CreateBtn'));
151
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
152
+ return expect(window.location.href).toContain([
153
+ 'http://localhost',
154
+ Constant_1.Constants.AUTHENTICATION_PROFILE_PATH,
155
+ Constant_1.Constants.CREATE_PATH,
156
+ ].join('/'));
157
+ })];
158
+ case 1:
159
+ _a.sent();
160
+ return [2 /*return*/];
161
+ }
162
+ });
163
+ }); });
164
+ it('Chuyến đến trang Edit.', function () { return __awaiter(void 0, void 0, void 0, function () {
165
+ return __generator(this, function (_a) {
166
+ switch (_a.label) {
167
+ case 0:
168
+ renderUi();
169
+ react_1.fireEvent.click(react_1.screen.getByTestId('Rowclick'));
170
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
171
+ return expect(window.location.href).toContain([
172
+ 'http://localhost',
173
+ Constant_1.Constants.AUTHENTICATION_PROFILE_PATH,
174
+ Constant_1.Constants.EDIT_PATH,
175
+ items[0].authenticationProfileId,
176
+ ].join('/'));
177
+ })];
178
+ case 1:
179
+ _a.sent();
180
+ return [2 /*return*/];
181
+ }
182
+ });
183
+ }); });
184
+ });
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { AuthenticationProfileFeatureProps } from './Types';
3
+ export declare const authenticationProfilePropsContext: import("react").Context<AuthenticationProfileFeatureProps>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authenticationProfilePropsContext = void 0;
4
+ var react_1 = require("react");
5
+ exports.authenticationProfilePropsContext = (0, react_1.createContext)({});
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ /* eslint-disable testing-library/no-wait-for-side-effects */
55
+ var react_1 = require("@testing-library/react");
56
+ var Router_1 = require("../../../AWING/Router");
57
+ var index_1 = __importDefault(require("./index"));
58
+ var id = 'idEdit11081999';
59
+ var apControllers = [
60
+ { text: 'Chọn tất cả', value: 'all' },
61
+ { text: 'Aerohive', value: 'aerohive' },
62
+ { text: 'Allied AP', value: 'allied' },
63
+ { text: 'Aruba AP', value: 'aruba' },
64
+ { text: 'Aruba IAP', value: 'arubaiap' },
65
+ { text: 'Aruba Instant', value: 'arubainstant' },
66
+ ];
67
+ var authenticationProfile = {
68
+ authenticationProfileId: '4761184776632900642',
69
+ name: 'TCI',
70
+ directoryId: '4960166916046400365',
71
+ directoryPath: '.0.90.100.4960166916046400365.4761184776632900642.',
72
+ authenticationMethodCode: 'api',
73
+ apControllerCode: 'unifi',
74
+ parameters: '{"Username": "admin","Password": "Awing@2018"}',
75
+ description: '',
76
+ createdDate: {
77
+ seconds: '1703131590',
78
+ nanos: 0,
79
+ },
80
+ };
81
+ var clientMethod = {
82
+ authenticationProfilesGet: function () { return function (_id) {
83
+ Promise.resolve(authenticationProfile);
84
+ }; },
85
+ apsGetApControllers: function () { return Promise.resolve(apControllers); },
86
+ authenticationProfilesPut: function (_id, body) { },
87
+ authenticationProfilesPost: function (body) { },
88
+ };
89
+ jest.mock('../Types', function () { return ({
90
+ __esModule: true,
91
+ AuthenticationProfile: {},
92
+ IAuthenticationProfile: {},
93
+ }); });
94
+ // mock Router
95
+ jest.mock('../../../AWING/Router', function () { return (__assign(__assign({}, jest.requireActual('../../../AWING/Router')), { useParams: jest.fn() })); });
96
+ // Mock đa ngữ
97
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
98
+ // Mock Hooks
99
+ jest.mock('../Hooks', function () { return ({
100
+ __esModule: true,
101
+ default: function () { return ({
102
+ service: {
103
+ authenticationProfilesGet: jest.fn(function (_id) {
104
+ return Promise.resolve(clientMethod.authenticationProfilesGet());
105
+ }),
106
+ apsGetApControllers: jest.fn(function () {
107
+ return Promise.resolve(clientMethod.apsGetApControllers());
108
+ }),
109
+ authenticationProfilesPut: jest.fn(function (_id, body) {
110
+ return Promise.resolve(clientMethod.authenticationProfilesPut(_id, body));
111
+ }),
112
+ authenticationProfilesPost: jest.fn(function (body) {
113
+ return Promise.resolve(clientMethod.authenticationProfilesPost(body));
114
+ }),
115
+ },
116
+ }); },
117
+ }); });
118
+ // Mock Drawer
119
+ jest.mock('../../../Commons/Components/ClassicDrawer', function () { return function (props) { return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { "data-testid": "title-drawer", children: id ? 'Common.Edit' : 'Common.Create' }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onSubmit", onClick: props.onSubmit, children: "submit" }), props.children] })); }; });
120
+ // mock BasicDataForm
121
+ jest.mock('../../../AWING', function () { return ({
122
+ BasicDataForm: function (props) {
123
+ props.fields.forEach(function (element) {
124
+ if (element === null || element === void 0 ? void 0 : element.onValidate) {
125
+ element === null || element === void 0 ? void 0 : element.onValidate();
126
+ }
127
+ });
128
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-testid": "BasicDataForm", children: [(0, jsx_runtime_1.jsx)("p", { children: JSON.stringify(props.oldValue) }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onUpdate", onClick: function () {
129
+ props.onUpdate(true, {
130
+ name: 'TCI',
131
+ authenticationMethodCode: 'api',
132
+ apControllerCode: 'unifi',
133
+ parameters: '{"Username": "QuanDX","Password": "Awing@2018"}',
134
+ description: '',
135
+ });
136
+ } })] }));
137
+ },
138
+ CircularProgress: function () { return (0, jsx_runtime_1.jsx)("div", { children: "CircularProgress" }); },
139
+ }); });
140
+ describe('AddOrEdit component', function () {
141
+ beforeEach(function () {
142
+ ;
143
+ Router_1.useParams.mockReturnValue({ id: '' });
144
+ });
145
+ var renderUi = function () {
146
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(index_1.default, {}) }));
147
+ };
148
+ it('Render component', function () {
149
+ renderUi();
150
+ expect(react_1.screen.getByTestId('title-drawer')).toBeInTheDocument();
151
+ expect(react_1.screen.getByTestId('onSubmit')).toBeInTheDocument();
152
+ });
153
+ it('handleSubmit-create', function () { return __awaiter(void 0, void 0, void 0, function () {
154
+ var authenticationProfilesPostSpy;
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0:
158
+ authenticationProfilesPostSpy = jest.spyOn(clientMethod, 'authenticationProfilesPost');
159
+ renderUi();
160
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
161
+ react_1.fireEvent.click(react_1.screen.getByTestId('onUpdate'));
162
+ react_1.fireEvent.click(react_1.screen.getByTestId('onSubmit'));
163
+ expect(authenticationProfilesPostSpy).toHaveBeenCalledWith({
164
+ name: 'TCI',
165
+ authenticationMethodCode: 'api',
166
+ apControllerCode: 'unifi',
167
+ parameters: '{"Username": "QuanDX","Password": "Awing@2018"}',
168
+ description: '',
169
+ });
170
+ })];
171
+ case 1:
172
+ _a.sent();
173
+ return [2 /*return*/];
174
+ }
175
+ });
176
+ }); });
177
+ it('handleSubmit-edit', function () { return __awaiter(void 0, void 0, void 0, function () {
178
+ var authenticationProfilesPutSpy;
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0:
182
+ ;
183
+ Router_1.useParams.mockReturnValue({ id: id });
184
+ authenticationProfilesPutSpy = jest.spyOn(clientMethod, 'authenticationProfilesPut');
185
+ renderUi();
186
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
187
+ react_1.fireEvent.click(react_1.screen.getByTestId('onUpdate'));
188
+ react_1.fireEvent.click(react_1.screen.getByTestId('onSubmit'));
189
+ return expect(authenticationProfilesPutSpy).toHaveBeenCalledWith(id, {
190
+ name: 'TCI',
191
+ authenticationMethodCode: 'api',
192
+ apControllerCode: 'unifi',
193
+ parameters: '{"Username": "QuanDX","Password": "Awing@2018"}',
194
+ description: '',
195
+ });
196
+ })];
197
+ case 1:
198
+ _a.sent();
199
+ return [2 /*return*/];
200
+ }
201
+ });
202
+ }); });
203
+ });
@@ -0,0 +1,2 @@
1
+ declare const CreateOrEdit: () => import("react/jsx-runtime").JSX.Element;
2
+ export default CreateOrEdit;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_1 = require("react");
17
+ var react_i18next_1 = require("react-i18next");
18
+ var Router_1 = require("../../../AWING/Router");
19
+ var Hooks_1 = __importDefault(require("../Hooks"));
20
+ var ClassicDrawer_1 = __importDefault(require("../../../Commons/Components/ClassicDrawer"));
21
+ var Utils_1 = require("../Utils");
22
+ var AWING_1 = require("../../../AWING");
23
+ var CreateOrEdit = function () {
24
+ var id = (0, Router_1.useParams)().id;
25
+ var t = (0, react_i18next_1.useTranslation)().t;
26
+ var service = (0, Hooks_1.default)().service;
27
+ var _a = (0, react_1.useState)(true), loading = _a[0], setLoading = _a[1];
28
+ var _b = (0, react_1.useState)(false), formValid = _b[0], setFromValid = _b[1];
29
+ var _c = (0, react_1.useState)(false), confirmExit = _c[0], setConfirmExit = _c[1];
30
+ var _d = (0, react_1.useState)([]), apControllers = _d[0], setApControllers = _d[1];
31
+ var _e = (0, react_1.useState)(), authenticationProfile = _e[0], setAuthenticationProfile = _e[1];
32
+ (0, react_1.useEffect)(function () {
33
+ !apControllers.length &&
34
+ service.apsGetApControllers().then(function (apController) {
35
+ var apControllers = __spreadArray([
36
+ {
37
+ text: t('Common.SelectAll'),
38
+ value: null,
39
+ }
40
+ ], apController.map(function (item) { return ({
41
+ text: (item === null || item === void 0 ? void 0 : item.name) || '',
42
+ value: (item === null || item === void 0 ? void 0 : item.apControllerCode) || '',
43
+ }); }), true);
44
+ setApControllers(apControllers);
45
+ });
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ }, [apControllers]);
48
+ (0, react_1.useEffect)(function () {
49
+ if (id) {
50
+ service
51
+ .authenticationProfilesGet(id)
52
+ .then(function (authenticationProfile_) {
53
+ authenticationProfile_.apControllerCode =
54
+ (authenticationProfile_ === null || authenticationProfile_ === void 0 ? void 0 : authenticationProfile_.apControllerCode) ===
55
+ Utils_1.AP_CONTROLLER_CODE.All
56
+ ? null
57
+ : (authenticationProfile_ === null || authenticationProfile_ === void 0 ? void 0 : authenticationProfile_.apControllerCode) ||
58
+ null;
59
+ setAuthenticationProfile(authenticationProfile_);
60
+ })
61
+ .finally(function () {
62
+ setLoading(false);
63
+ });
64
+ }
65
+ else {
66
+ setLoading(false);
67
+ }
68
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
+ }, [id]);
70
+ var handleSubmit = function () {
71
+ return id
72
+ ? service.authenticationProfilesPut(id, authenticationProfile)
73
+ : service.authenticationProfilesPost(authenticationProfile);
74
+ };
75
+ return ((0, jsx_runtime_1.jsx)(ClassicDrawer_1.default, { title: id ? t('Common.Edit') : t('Common.Create'), onSubmit: handleSubmit, confirmExit: confirmExit, childrenWrapperStyle: { padding: 0 }, disableButtonSubmit: !(formValid && confirmExit), children: loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(AWING_1.BasicDataForm, { fields: [
76
+ {
77
+ fieldName: 'authenticationMethodCode',
78
+ type: 'autocomplete',
79
+ label: 'Authentication Method code',
80
+ required: true,
81
+ defaultValue: Utils_1.AUTHENTICATION_METHOD_CODE.MethodByLocalAP,
82
+ options: Object.entries(Utils_1.AUTHENTICATION_METHOD_CODE).map(function (_a) {
83
+ var key = _a[0], value = _a[1];
84
+ return ({
85
+ value: value,
86
+ text: t(['AuthenticationProfile', key].join('.')),
87
+ });
88
+ }),
89
+ },
90
+ {
91
+ fieldName: 'apControllerCode',
92
+ type: 'autocomplete',
93
+ label: 'AP Controller Code',
94
+ required: true,
95
+ options: apControllers,
96
+ defaultValue: null,
97
+ checkValid: function (value) {
98
+ return value === null || value;
99
+ },
100
+ },
101
+ {
102
+ fieldName: 'name',
103
+ type: 'text',
104
+ label: t('Common.Name'),
105
+ required: true,
106
+ },
107
+ {
108
+ fieldName: 'parameters',
109
+ type: 'text',
110
+ label: t('AuthenticationProfile.Params'),
111
+ required: true,
112
+ length: 500,
113
+ pattern: /.*/g,
114
+ },
115
+ {
116
+ fieldName: 'description',
117
+ type: 'text-area',
118
+ label: t('Common.Description'),
119
+ length: 500,
120
+ },
121
+ ], onUpdate: function (validState, valueForm) {
122
+ if (valueForm) {
123
+ setConfirmExit(true);
124
+ setFromValid(validState);
125
+ setAuthenticationProfile(valueForm);
126
+ }
127
+ }, oldValue: authenticationProfile })) }));
128
+ };
129
+ exports.default = CreateOrEdit;
@@ -0,0 +1,2 @@
1
+ declare const useAuthenticationProfileProps: () => import("./Types").AuthenticationProfileFeatureProps;
2
+ export default useAuthenticationProfileProps;