@steedos-labs/content-compliance 0.8.21 → 0.8.22

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.
@@ -3,13 +3,5 @@ export declare const addBulkMaterials: {
3
3
  method: string;
4
4
  fullPath: string;
5
5
  };
6
- handler(ctx: any): Promise<{
7
- status: string;
8
- msg: string;
9
- data: {};
10
- } | {
11
- status?: undefined;
12
- msg?: undefined;
13
- data?: undefined;
14
- }>;
6
+ handler(ctx: any): Promise<{}>;
15
7
  };
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addBulkMaterials = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var _ = require("lodash");
6
+ var material_1 = require("../methods/material");
6
7
  exports.addBulkMaterials = {
7
8
  rest: {
8
9
  method: 'POST',
@@ -10,8 +11,9 @@ exports.addBulkMaterials = {
10
11
  },
11
12
  handler: function (ctx) {
12
13
  return tslib_1.__awaiter(this, void 0, void 0, function () {
13
- var logger, files, fileNameHasCopyright, files_1, files_1_1, item, allTrue;
14
+ var logger, files, fileNameHasCopyright, rejectSubmission, files_1, files_1_1, item, sizeProblem, e_1_1, allTrue;
14
15
  var e_1, _a;
16
+ var _this = this;
15
17
  return tslib_1.__generator(this, function (_b) {
16
18
  switch (_b.label) {
17
19
  case 0:
@@ -26,31 +28,61 @@ exports.addBulkMaterials = {
26
28
  case 2:
27
29
  files = _b.sent();
28
30
  fileNameHasCopyright = false;
29
- try {
30
- for (files_1 = tslib_1.__values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
31
- item = files_1_1.value;
32
- if (_.includes(item.original.name, '版权')) {
33
- return [2, {
34
- status: '500',
35
- msg: '上传素材中包含“版权”文件,请删除版权文件后再次提交。',
36
- data: {}
37
- }];
31
+ rejectSubmission = function (msg, item) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
32
+ var _a, _b;
33
+ return tslib_1.__generator(this, function (_c) {
34
+ switch (_c.label) {
35
+ case 0: return [4, logger.warn("".concat(ctx.params.approvalId, "-[\u6DFB\u52A0\u7D20\u6750\u88AB\u62D2]:").concat(msg), {
36
+ objectName: 'pepsico_material_approval',
37
+ pepsico_material_approval: ctx.params.approvalId,
38
+ file_name: item.original.name,
39
+ file_size: item.original.size,
40
+ uploaded_file: item._id,
41
+ uploaded_by: (_b = (_a = ctx.meta) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.userId,
42
+ reason: msg
43
+ })];
44
+ case 1:
45
+ _c.sent();
46
+ return [2, { status: '500', msg: msg, data: {} }];
38
47
  }
39
- }
40
- }
41
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
42
- finally {
43
- try {
44
- if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1);
45
- }
46
- finally { if (e_1) throw e_1.error; }
47
- }
48
- return [4, this.addBulkMaterials(ctx, ctx.params.approvalId, ctx.params.files)];
48
+ });
49
+ }); };
50
+ _b.label = 3;
49
51
  case 3:
52
+ _b.trys.push([3, 10, 11, 12]);
53
+ files_1 = tslib_1.__values(files), files_1_1 = files_1.next();
54
+ _b.label = 4;
55
+ case 4:
56
+ if (!!files_1_1.done) return [3, 9];
57
+ item = files_1_1.value;
58
+ if (!_.includes(item.original.name, '版权')) return [3, 6];
59
+ return [4, rejectSubmission('上传素材中包含“版权”文件,请删除版权文件后再次提交。', item)];
60
+ case 5: return [2, _b.sent()];
61
+ case 6:
62
+ sizeProblem = (0, material_1.officeFileSizeProblem)(item.original.name, item.original.size);
63
+ if (!sizeProblem) return [3, 8];
64
+ return [4, rejectSubmission("\u7D20\u6750\u300C".concat(item.original.name, "\u300D\uFF1A").concat(sizeProblem), item)];
65
+ case 7: return [2, _b.sent()];
66
+ case 8:
67
+ files_1_1 = files_1.next();
68
+ return [3, 4];
69
+ case 9: return [3, 12];
70
+ case 10:
71
+ e_1_1 = _b.sent();
72
+ e_1 = { error: e_1_1 };
73
+ return [3, 12];
74
+ case 11:
75
+ try {
76
+ if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1);
77
+ }
78
+ finally { if (e_1) throw e_1.error; }
79
+ return [7];
80
+ case 12: return [4, this.addBulkMaterials(ctx, ctx.params.approvalId, ctx.params.files)];
81
+ case 13:
50
82
  _b.sent();
51
- if (!false) return [3, 5];
83
+ if (!false) return [3, 15];
52
84
  return [4, this.uploadBulkDocToOneDrive(ctx, ctx.params.approvalId)];
53
- case 4:
85
+ case 14:
54
86
  allTrue = _b.sent();
55
87
  if (!allTrue) {
56
88
  return [2, {
@@ -59,8 +91,8 @@ exports.addBulkMaterials = {
59
91
  data: {}
60
92
  }];
61
93
  }
62
- _b.label = 5;
63
- case 5: return [2, {}];
94
+ _b.label = 15;
95
+ case 15: return [2, {}];
64
96
  }
65
97
  });
66
98
  });
@@ -1 +1 @@
1
- {"version":3,"file":"addBulkMaterials.js","sourceRoot":"","sources":["../../src/actions/addBulkMaterials.ts"],"names":[],"mappings":";;;;AAAA,0BAA6B;AAUhB,QAAA,gBAAgB,GAAG;IAC5B,IAAI,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,2CAA2C;KACxD;IACK,OAAO,YAAC,GAAG;;;;;;;wBACb,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAChB,WAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAA/B,MAAM,GAAG,SAAsB;wBACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBAGN,WAAM,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC;gCAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC1C,CAAC,EAAA;;wBAFI,KAAK,GAAG,SAEZ;wBAEE,oBAAoB,GAAG,KAAK,CAAC;;4BAEjC,KAAmB,UAAA,iBAAA,KAAK,CAAA,2EAAE;gCAAf,IAAI;gCACX,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;oCACpC,WAAO;4CACH,MAAM,EAAE,KAAK;4CACb,GAAG,EAAE,6BAA6B;4CAClC,IAAI,EAAE,EAAE;yCACX,EAAA;iCACJ;6BACJ;;;;;;;;;wBAGD,WAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAAzE,SAAyE,CAAC;6BACvE,KAAK,EAAL,cAAK;wBACY,WAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;wBAAxE,OAAO,GAAG,SAA8D;wBAC9E,IAAG,CAAC,OAAO,EAAC;4BACR,WAAO;oCACH,MAAM,EAAE,KAAK;oCACb,GAAG,EAAE,eAAe;oCACpB,IAAI,EAAE,EAAE;iCACX,EAAA;yBACJ;;4BAEL,WAAO,EAAE,EAAA;;;;KACZ;CACJ,CAAA"}
1
+ {"version":3,"file":"addBulkMaterials.js","sourceRoot":"","sources":["../../src/actions/addBulkMaterials.ts"],"names":[],"mappings":";;;;AAAA,0BAA6B;AAE7B,gDAA4D;AAS/C,QAAA,gBAAgB,GAAG;IAC5B,IAAI,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,2CAA2C;KACxD;IACK,OAAO,YAAC,GAAG;;;;;;;;wBACb,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAChB,WAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAA/B,MAAM,GAAG,SAAsB;wBACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBAGN,WAAM,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC;gCAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC1C,CAAC,EAAA;;wBAFI,KAAK,GAAG,SAEZ;wBAEE,oBAAoB,GAAG,KAAK,CAAC;wBAG3B,gBAAgB,GAAG,UAAO,GAAW,EAAE,IAAS;;;;4CAClD,WAAM,MAAM,CAAC,IAAI,CAAC,UAAG,GAAG,CAAC,MAAM,CAAC,UAAU,qDAAa,GAAG,CAAE,EAAE;4CAC1D,UAAU,EAAE,2BAA2B;4CACvC,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;4CAChD,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;4CAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;4CAC7B,aAAa,EAAE,IAAI,CAAC,GAAG;4CACvB,WAAW,EAAE,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,0CAAE,MAAM;4CACnC,MAAM,EAAE,GAAG;yCACd,CAAC,EAAA;;wCARF,SAQE,CAAC;wCACH,WAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAA,EAAE,IAAI,EAAE,EAAE,EAAE,EAAC;;;6BAC3C,CAAC;;;;wBAEiB,UAAA,iBAAA,KAAK,CAAA;;;;wBAAb,IAAI;6BACR,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAApC,cAAoC;wBAC5B,WAAM,gBAAgB,CAAC,6BAA6B,EAAE,IAAI,CAAC,EAAA;4BAAlE,WAAO,SAA2D,EAAC;;wBAKjE,WAAW,GAAG,IAAA,gCAAqB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;6BAC/E,WAAW,EAAX,cAAW;wBACH,WAAM,gBAAgB,CAAC,4BAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,yBAAK,WAAW,CAAE,EAAE,IAAI,CAAC,EAAA;4BAA/E,WAAO,SAAwE,EAAC;;;;;;;;;;;;;;;6BAKxF,WAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAAzE,SAAyE,CAAC;6BACvE,KAAK,EAAL,eAAK;wBACY,WAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;wBAAxE,OAAO,GAAG,SAA8D;wBAC9E,IAAG,CAAC,OAAO,EAAC;4BACR,WAAO;oCACH,MAAM,EAAE,KAAK;oCACb,GAAG,EAAE,eAAe;oCACpB,IAAI,EAAE,EAAE;iCACX,EAAA;yBACJ;;6BAEL,WAAO,EAAE,EAAA;;;;KACZ;CACJ,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var material_1 = require("../material");
5
+ var addBulkMaterials_1 = require("../../actions/addBulkMaterials");
6
+ var MB = 1024 * 1024;
7
+ describe('officeFileSizeProblem', function () {
8
+ it('拦下六种文档类型超过 250MB 的文件,其它类型放行', function () {
9
+ var e_1, _a;
10
+ try {
11
+ for (var _b = tslib_1.__values(['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx']), _c = _b.next(); !_c.done; _c = _b.next()) {
12
+ var ext = _c.value;
13
+ expect((0, material_1.officeFileSizeProblem)("a.".concat(ext), 251 * MB)).toMatch(/最大支持 250MB/);
14
+ expect((0, material_1.officeFileSizeProblem)("a.".concat(ext), 250 * MB)).toBe('');
15
+ }
16
+ }
17
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
18
+ finally {
19
+ try {
20
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
21
+ }
22
+ finally { if (e_1) throw e_1.error; }
23
+ }
24
+ expect((0, material_1.officeFileSizeProblem)('video.mp4', 900 * MB)).toBe('');
25
+ expect((0, material_1.officeFileSizeProblem)('pic.jpg', 500 * MB)).toBe('');
26
+ expect((0, material_1.officeFileSizeProblem)('a.pptx', undefined)).toBe('');
27
+ });
28
+ it('提示里带上实际大小,用户才知道超了多少', function () {
29
+ expect((0, material_1.officeFileSizeProblem)('BRIEF.pptx', 300 * MB)).toMatch(/当前文件约 300MB/);
30
+ });
31
+ });
32
+ var callAddBulkMaterials = function (files) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
33
+ var warnLogs, service, result;
34
+ return tslib_1.__generator(this, function (_a) {
35
+ switch (_a.label) {
36
+ case 0:
37
+ warnLogs = [];
38
+ service = {
39
+ addBulkMaterialsCalled: false,
40
+ getObject: function (objectName) {
41
+ var _this = this;
42
+ if (objectName === 'cfs_files_filerecord') {
43
+ return { find: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
44
+ return [2, files];
45
+ }); }); } };
46
+ }
47
+ throw new Error("\u4E0D\u8BE5\u67E5 ".concat(objectName));
48
+ },
49
+ getLogger: function () {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
51
+ var _this = this;
52
+ return tslib_1.__generator(this, function (_a) {
53
+ return [2, {
54
+ info: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
55
+ return [2];
56
+ }); }); },
57
+ error: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
58
+ return [2];
59
+ }); }); },
60
+ warn: function (message, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
61
+ warnLogs.push({ message: message, data: data });
62
+ return [2];
63
+ }); }); }
64
+ }];
65
+ });
66
+ });
67
+ },
68
+ addBulkMaterials: function () {
69
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
70
+ return tslib_1.__generator(this, function (_a) {
71
+ service.addBulkMaterialsCalled = true;
72
+ return [2, {}];
73
+ });
74
+ });
75
+ }
76
+ };
77
+ return [4, addBulkMaterials_1.addBulkMaterials.handler.call(service, {
78
+ params: { approvalId: 'approval-1', files: files.map(function (f) { return f._id; }) },
79
+ meta: { user: { userId: 'user-1' } }
80
+ })];
81
+ case 1:
82
+ result = _a.sent();
83
+ return [2, { result: result, service: service, warnLogs: warnLogs }];
84
+ }
85
+ });
86
+ }); };
87
+ describe('addBulkMaterials 的大小闸', function () {
88
+ it('任一文档超过 250MB 就拒绝提交,并报出具体文件名', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
89
+ var _a, result, service, warnLogs;
90
+ return tslib_1.__generator(this, function (_b) {
91
+ switch (_b.label) {
92
+ case 0: return [4, callAddBulkMaterials([
93
+ { _id: 'f1', original: { name: 'ok.pptx', size: 10 * MB } },
94
+ { _id: 'f2', original: { name: '超大方案.pptx', size: 400 * MB } }
95
+ ])];
96
+ case 1:
97
+ _a = _b.sent(), result = _a.result, service = _a.service, warnLogs = _a.warnLogs;
98
+ expect(result.status).toBe('500');
99
+ expect(result.msg).toMatch(/「超大方案.pptx」/);
100
+ expect(result.msg).toMatch(/最大支持 250MB/);
101
+ expect(service.addBulkMaterialsCalled).toBe(false);
102
+ expect(warnLogs).toHaveLength(1);
103
+ expect(warnLogs[0].message).toMatch(/\[添加素材被拒\]/);
104
+ expect(warnLogs[0].data.file_name).toBe('超大方案.pptx');
105
+ expect(warnLogs[0].data.file_size).toBe(400 * MB);
106
+ expect(warnLogs[0].data.uploaded_by).toBe('user-1');
107
+ return [2];
108
+ }
109
+ });
110
+ }); });
111
+ it('合规的一批正常放行', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
112
+ var _a, result, service, warnLogs;
113
+ return tslib_1.__generator(this, function (_b) {
114
+ switch (_b.label) {
115
+ case 0: return [4, callAddBulkMaterials([
116
+ { _id: 'f1', original: { name: 'ok.pptx', size: 249 * MB } },
117
+ { _id: 'f2', original: { name: 'video.mp4', size: 900 * MB } }
118
+ ])];
119
+ case 1:
120
+ _a = _b.sent(), result = _a.result, service = _a.service, warnLogs = _a.warnLogs;
121
+ expect(result).toEqual({});
122
+ expect(service.addBulkMaterialsCalled).toBe(true);
123
+ expect(warnLogs).toHaveLength(0);
124
+ return [2];
125
+ }
126
+ });
127
+ }); });
128
+ it('「版权」文件仍然被拦,且同样记日志', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
129
+ var _a, result, service, warnLogs;
130
+ return tslib_1.__generator(this, function (_b) {
131
+ switch (_b.label) {
132
+ case 0: return [4, callAddBulkMaterials([
133
+ { _id: 'f1', original: { name: '版权说明.docx', size: 1 * MB } }
134
+ ])];
135
+ case 1:
136
+ _a = _b.sent(), result = _a.result, service = _a.service, warnLogs = _a.warnLogs;
137
+ expect(result.status).toBe('500');
138
+ expect(result.msg).toMatch(/版权/);
139
+ expect(service.addBulkMaterialsCalled).toBe(false);
140
+ expect(warnLogs).toHaveLength(1);
141
+ return [2];
142
+ }
143
+ });
144
+ }); });
145
+ });
146
+ //# sourceMappingURL=materialSizeLimit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialSizeLimit.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/materialSizeLimit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var fs = require("fs");
5
+ var path = require("path");
6
+ var yaml = require("js-yaml");
7
+ var buttonPath = path.resolve(__dirname, '../../../main/default/objects/pepsico_material_approval/buttons/pepsico_material_upload.button.yml');
8
+ var compile = function (src) {
9
+ var args = [];
10
+ for (var _i = 1; _i < arguments.length; _i++) {
11
+ args[_i - 1] = arguments[_i];
12
+ }
13
+ return new (Function.bind.apply(Function, tslib_1.__spreadArray(tslib_1.__spreadArray([void 0], tslib_1.__read(args), false), [src], false)))();
14
+ };
15
+ var readSchema = function () { return JSON.parse(yaml.load(fs.readFileSync(buttonPath, 'utf8')).amis_schema); };
16
+ var readUploadFields = function () {
17
+ var schema = readSchema();
18
+ return schema.body[0].onEvent.click.actions
19
+ .filter(function (a) { var _a; return a.actionType === 'dialog' && ((_a = a.dialog) === null || _a === void 0 ? void 0 : _a.body); })
20
+ .map(function (a) { return a.dialog.body.find(function (item) { return item.type === 'input-file'; }); })
21
+ .filter(Boolean);
22
+ };
23
+ var readDefinitions = function (requestAdaptor) {
24
+ var cut = requestAdaptor.indexOf('const superData');
25
+ expect(cut).toBeGreaterThan(-1);
26
+ expect(requestAdaptor).toMatch(/return checkOfficeFile\(uploadFile\)\.then/);
27
+ return requestAdaptor.slice(0, cut);
28
+ };
29
+ var compileEntry = function (requestAdaptor) {
30
+ return compile(readDefinitions(requestAdaptor) + 'return checkOfficeFile(pickUploadFile(api.data));', 'api', 'context');
31
+ };
32
+ var compileGifEntry = function (requestAdaptor) {
33
+ return compile(readDefinitions(requestAdaptor) + 'return checkGifSize(pickUploadFile(api.data));', 'api', 'context');
34
+ };
35
+ var formDataWith = function (name, buffer) {
36
+ var data = new FormData();
37
+ data.append('file', new File([buffer], name));
38
+ return data;
39
+ };
40
+ var validZip = function () { return Buffer.concat([
41
+ Buffer.from([0x50, 0x4b, 0x03, 0x04]),
42
+ Buffer.from([0x50, 0x4b, 0x05, 0x06]),
43
+ Buffer.alloc(18, 0)
44
+ ]); };
45
+ var truncatedZip = function () { return Buffer.concat([
46
+ Buffer.from([0x50, 0x4b, 0x03, 0x04]),
47
+ Buffer.alloc(4096, 0xcd),
48
+ Buffer.from([0x50, 0x4b, 0x01, 0x02]),
49
+ Buffer.alloc(42, 0),
50
+ Buffer.from('ppt/tags/tag83.')
51
+ ]); };
52
+ var OLE_MAGIC = Buffer.from([0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);
53
+ describe('上传审核文件弹框的浏览器端校验', function () {
54
+ it('每个 requestAdaptor 都能用普通 Function 编译(不能有顶层 await)', function () {
55
+ var e_1, _a;
56
+ var adaptors = [];
57
+ (function walk(node) {
58
+ var e_2, _a;
59
+ if (!node || typeof node !== 'object')
60
+ return;
61
+ if (typeof node.requestAdaptor === 'string')
62
+ adaptors.push(node.requestAdaptor);
63
+ try {
64
+ for (var _b = tslib_1.__values(Object.keys(node)), _c = _b.next(); !_c.done; _c = _b.next()) {
65
+ var key = _c.value;
66
+ walk(node[key]);
67
+ }
68
+ }
69
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
70
+ finally {
71
+ try {
72
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
73
+ }
74
+ finally { if (e_2) throw e_2.error; }
75
+ }
76
+ })(readSchema());
77
+ expect(adaptors.length).toBeGreaterThanOrEqual(2);
78
+ var _loop_1 = function (src) {
79
+ expect(function () { return compile(src, 'api', 'context'); }).not.toThrow();
80
+ };
81
+ try {
82
+ for (var adaptors_1 = tslib_1.__values(adaptors), adaptors_1_1 = adaptors_1.next(); !adaptors_1_1.done; adaptors_1_1 = adaptors_1.next()) {
83
+ var src = adaptors_1_1.value;
84
+ _loop_1(src);
85
+ }
86
+ }
87
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
88
+ finally {
89
+ try {
90
+ if (adaptors_1_1 && !adaptors_1_1.done && (_a = adaptors_1.return)) _a.call(adaptors_1);
91
+ }
92
+ finally { if (e_1) throw e_1.error; }
93
+ }
94
+ });
95
+ it('两个弹框(DCO / 非 DCO)带的是同一套校验', function () {
96
+ var e_3, _a;
97
+ var fields = readUploadFields();
98
+ expect(fields).toHaveLength(2);
99
+ try {
100
+ for (var fields_1 = tslib_1.__values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {
101
+ var field = fields_1_1.value;
102
+ expect(field.receiver.requestAdaptor).toMatch(/checkOfficeFile/);
103
+ expect(field.receiver.requestAdaptor).toMatch(/80 && tail\[i \+ 1\] === 75/);
104
+ }
105
+ }
106
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
107
+ finally {
108
+ try {
109
+ if (fields_1_1 && !fields_1_1.done && (_a = fields_1.return)) _a.call(fields_1);
110
+ }
111
+ finally { if (e_3) throw e_3.error; }
112
+ }
113
+ expect(readDefinitions(fields[0].receiver.requestAdaptor))
114
+ .toBe(readDefinitions(fields[1].receiver.requestAdaptor));
115
+ });
116
+ it('拦下截断的 OOXML 文件', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
117
+ var entry;
118
+ return tslib_1.__generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0:
121
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
122
+ return [4, expect(entry({ data: formDataWith('BRIEF.pptx', truncatedZip()) }, {}))
123
+ .rejects.toThrow(/已损坏或未保存完整/)];
124
+ case 1:
125
+ _a.sent();
126
+ return [2];
127
+ }
128
+ });
129
+ }); });
130
+ it('拦下根本不是 zip 的文件(比如存成 .docx 的 HTML 错误页)', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
131
+ var entry;
132
+ return tslib_1.__generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0:
135
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
136
+ return [4, expect(entry({ data: formDataWith('方案.docx', Buffer.from('<html>502</html>')) }, {}))
137
+ .rejects.toThrow(/已损坏或未保存完整/)];
138
+ case 1:
139
+ _a.sent();
140
+ return [2];
141
+ }
142
+ });
143
+ }); });
144
+ it('拦下魔数不对的旧格式 doc', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
145
+ var entry;
146
+ return tslib_1.__generator(this, function (_a) {
147
+ switch (_a.label) {
148
+ case 0:
149
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
150
+ return [4, expect(entry({ data: formDataWith('方案.doc', Buffer.alloc(512, 0x11)) }, {}))
151
+ .rejects.toThrow(/已损坏或未保存完整/)];
152
+ case 1:
153
+ _a.sent();
154
+ return [2];
155
+ }
156
+ });
157
+ }); });
158
+ it('放行完好的 pptx / doc,以及不在校验范围的视频', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
159
+ var entry;
160
+ return tslib_1.__generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0:
163
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
164
+ return [4, expect(entry({ data: formDataWith('BRIEF.pptx', validZip()) }, {})).resolves.toBeUndefined()];
165
+ case 1:
166
+ _a.sent();
167
+ return [4, expect(entry({ data: formDataWith('方案.doc', Buffer.concat([OLE_MAGIC, Buffer.alloc(512, 0)])) }, {}))
168
+ .resolves.toBeUndefined()];
169
+ case 2:
170
+ _a.sent();
171
+ return [4, expect(entry({ data: formDataWith('video.mp4', Buffer.alloc(64, 0)) }, {})).resolves.toBeUndefined()];
172
+ case 3:
173
+ _a.sent();
174
+ return [2];
175
+ }
176
+ });
177
+ }); });
178
+ it('字段名不是 file 时也要能找到文件,不能静默跳过', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
179
+ var entry, data;
180
+ return tslib_1.__generator(this, function (_a) {
181
+ switch (_a.label) {
182
+ case 0:
183
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
184
+ data = new FormData();
185
+ data.append('upload', new File([truncatedZip()], 'BRIEF.pptx'));
186
+ return [4, expect(entry({ data: data }, {})).rejects.toThrow(/已损坏或未保存完整/)];
187
+ case 1:
188
+ _a.sent();
189
+ return [2];
190
+ }
191
+ });
192
+ }); });
193
+ it('保留原有的 GIF 20MB 限制', function () {
194
+ var gifEntry = compileGifEntry(readUploadFields()[0].receiver.requestAdaptor);
195
+ var big = { name: 'anim.gif', size: 21 * 1024 * 1024, slice: function () { return ({}); } };
196
+ var data = { get: function () { return big; }, forEach: function () { } };
197
+ expect(function () { return gifEntry({ data: data }, {}); }).toThrow(/GIF文件大小不能超过20MB/);
198
+ var small = { name: 'anim.gif', size: 19 * 1024 * 1024, slice: function () { return ({}); } };
199
+ expect(function () { return gifEntry({ data: { get: function () { return small; }, forEach: function () { } } }, {}); }).not.toThrow();
200
+ });
201
+ it('文档超过 250MB 在读字节之前就被拒', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
202
+ var entry, huge;
203
+ return tslib_1.__generator(this, function (_a) {
204
+ switch (_a.label) {
205
+ case 0:
206
+ entry = compileEntry(readUploadFields()[0].receiver.requestAdaptor);
207
+ huge = { name: '超大方案.pptx', size: 251 * 1024 * 1024, slice: function () { throw new Error('不该读字节'); } };
208
+ return [4, expect(entry({ data: { get: function () { return huge; }, forEach: function () { } } }, {}))
209
+ .rejects.toThrow(/Office文件大小不能超过250MB/)];
210
+ case 1:
211
+ _a.sent();
212
+ return [2];
213
+ }
214
+ });
215
+ }); });
216
+ });
217
+ //# sourceMappingURL=materialUploadValidation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialUploadValidation.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/materialUploadValidation.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { ApprovalStatus, MaterialApproval, Material, ProcessApprovalType } from "./consts";
2
+ export declare const officeFileSizeProblem: (fileName: string, size: number) => string;
2
3
  export declare const hasDuplicateMaterials: (ctx: any, approvalId: any) => Promise<boolean>;
3
4
  export declare const addBulkMaterials: (ctx: any, approvalId: any, fileIds: any) => Promise<{}>;
4
5
  export declare const submitMaterial: (ctx: any, materialId: string, approvalStatus: ApprovalStatus) => Promise<any>;
@@ -1,11 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.downloadDocFromOneDriveDoc = exports.downloadBulkFromOneDriveDoc = exports.deleteDocOneDriveShareLink = exports.deleteBulkDocOneDriveShareLink = exports.uploadBulkDocToOneDrive = exports.getOneDriveMaterials = exports.getPendingUploadsToOneDriveMaterials = exports.uploadDocToOneDrive = exports.getUserReviewedAllMaterialsStatus = exports.getApproverFieldByType = exports.getApproverField = exports.submitMaterial = exports.addBulkMaterials = exports.hasDuplicateMaterials = void 0;
3
+ exports.downloadDocFromOneDriveDoc = exports.downloadBulkFromOneDriveDoc = exports.deleteDocOneDriveShareLink = exports.deleteBulkDocOneDriveShareLink = exports.uploadBulkDocToOneDrive = exports.getOneDriveMaterials = exports.getPendingUploadsToOneDriveMaterials = exports.uploadDocToOneDrive = exports.getUserReviewedAllMaterialsStatus = exports.getApproverFieldByType = exports.getApproverField = exports.submitMaterial = exports.addBulkMaterials = exports.hasDuplicateMaterials = exports.officeFileSizeProblem = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var consts_1 = require("./consts");
6
6
  var _ = require("lodash");
7
7
  var mime_types_1 = require("mime-types");
8
+ var path = require("path");
8
9
  var const_1 = require("../const");
10
+ var getFileExtension = function (fileName) { return path.extname(fileName || '').slice(1).toLowerCase(); };
11
+ var OFFICE_DOC_MAX_BYTES = 250 * 1024 * 1024;
12
+ var OFFICE_DOC_EXTENSIONS = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'];
13
+ var officeFileSizeProblem = function (fileName, size) {
14
+ if (!OFFICE_DOC_EXTENSIONS.includes(getFileExtension(fileName)) || !(size > OFFICE_DOC_MAX_BYTES)) {
15
+ return '';
16
+ }
17
+ return "\u6587\u6863\u7C7B\u7D20\u6750\u6700\u5927\u652F\u6301 250MB\uFF08SharePoint \u63A5\u53E3\u9650\u5236\uFF09\uFF0C\u5F53\u524D\u6587\u4EF6\u7EA6 ".concat(Math.round(size / 1024 / 1024), "MB\u3002\u8BF7\u7CBE\u7B80\u6587\u4EF6\u540E\u91CD\u65B0\u4E0A\u4F20\u3002");
18
+ };
19
+ exports.officeFileSizeProblem = officeFileSizeProblem;
9
20
  var hasDuplicateMaterials = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
10
21
  var materials, md5s, md5Files;
11
22
  return tslib_1.__generator(this, function (_a) {
@@ -452,7 +463,15 @@ var uploadDocToOneDrive = function (ctx, material) { return tslib_1.__awaiter(vo
452
463
  })];
453
464
  case 5:
454
465
  _b.sent();
455
- return [4, ctx.logger.error("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u7D20\u6750\u4E0A\u4F20\u5230oneDrive\u5931\u8D25]:").concat(error_1.message), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval })];
466
+ return [4, ctx.logger.error("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u7D20\u6750\u4E0A\u4F20\u5230oneDrive\u5931\u8D25]:").concat(error_1.message), {
467
+ objectName: 'pepsico_material',
468
+ _id: material._id,
469
+ pepsico_material_approval: material.pepsico_material_approval,
470
+ file_name: material.name,
471
+ extension_type: material.extension_type,
472
+ uploaded_file: material.material,
473
+ error: error_1.message
474
+ })];
456
475
  case 6:
457
476
  _b.sent();
458
477
  console.log('uploadDocToOneDrive error:', error_1);