github-issue-tower-defence-management 1.69.0 → 1.69.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/bin/adapter/entry-points/cli/index.js +8 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +11 -5
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/package.json +2 -2
- package/src/adapter/entry-points/cli/index.test.ts +2 -0
- package/src/adapter/entry-points/cli/index.ts +9 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +357 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +32 -9
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +2 -0
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [1.69.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.69.0...v1.69.1) (2026-05-30)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **security:** make allowedIssueAuthors optional for backward compatibility ([f8785e7](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/f8785e76f7e944fca8de069b9624851240b71e04)), closes [#668](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/668)
|
|
7
|
+
* **security:** verify comment author in NotifyFinishedIssuePreparation rejection checks ([4042bdf](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/4042bdfe66c8b4f74897f0d8138809f925c82fc7)), closes [#668](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/668)
|
|
8
|
+
|
|
1
9
|
# [1.69.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.68.0...v1.69.0) (2026-05-30)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -234,11 +234,19 @@ exports.program
|
|
|
234
234
|
const issueCommentRepository = new GitHubIssueCommentRepository_1.GitHubIssueCommentRepository(token);
|
|
235
235
|
const webhookRepository = new FetchWebhookRepository_1.FetchWebhookRepository();
|
|
236
236
|
const useCase = new NotifyFinishedIssuePreparationUseCase_1.NotifyFinishedIssuePreparationUseCase(projectRepository, issueRepository, issueCommentRepository, webhookRepository);
|
|
237
|
+
const rawAllowedIssueAuthors = config.allowedIssueAuthors;
|
|
238
|
+
const allowedIssueAuthors = rawAllowedIssueAuthors
|
|
239
|
+
? rawAllowedIssueAuthors
|
|
240
|
+
.split(',')
|
|
241
|
+
.map((s) => s.trim())
|
|
242
|
+
.filter(Boolean)
|
|
243
|
+
: null;
|
|
237
244
|
await useCase.run({
|
|
238
245
|
projectUrl,
|
|
239
246
|
issueUrl: options.issueUrl,
|
|
240
247
|
thresholdForAutoReject,
|
|
241
248
|
workflowBlockerResolvedWebhookUrl,
|
|
249
|
+
allowedIssueAuthors,
|
|
242
250
|
});
|
|
243
251
|
});
|
|
244
252
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,16 +77,19 @@ class NotifyFinishedIssuePreparationUseCase {
|
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
const comments = await this.issueCommentRepository.getCommentsFromIssue(issue);
|
|
80
|
-
const
|
|
80
|
+
const isTrustedAuthor = (author) => this.isAuthorTrusted(author, params.allowedIssueAuthors ?? null);
|
|
81
|
+
const { rejections } = await this.collectRejections(issue, comments, isTrustedAuthor);
|
|
81
82
|
const rejectionStatusMessage = rejections.length > 0
|
|
82
83
|
? `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`
|
|
83
84
|
: 'Auto Status Check: APPROVED';
|
|
84
85
|
const lastTargetComments = comments.slice(-params.thresholdForAutoReject * 2);
|
|
85
86
|
if (rejections.length > 0 &&
|
|
86
|
-
lastTargetComments.filter((comment) => comment.content.startsWith('Auto Status Check: REJECTED')
|
|
87
|
+
lastTargetComments.filter((comment) => comment.content.startsWith('Auto Status Check: REJECTED') &&
|
|
88
|
+
isTrustedAuthor(comment.author)).length >= params.thresholdForAutoReject &&
|
|
87
89
|
!lastTargetComments.some((comment) => comment.content
|
|
88
90
|
.toLowerCase()
|
|
89
|
-
.includes('failed to pass the check automatically')
|
|
91
|
+
.includes('failed to pass the check automatically') &&
|
|
92
|
+
isTrustedAuthor(comment.author))) {
|
|
90
93
|
issue.status = WorkflowStatus_1.FAILED_PREPARATION_STATUS_NAME;
|
|
91
94
|
await this.issueRepository.update(issue, project);
|
|
92
95
|
await this.issueRepository.updateStatus(project, issue, failedPreparationStatusOption.id);
|
|
@@ -109,10 +112,13 @@ class NotifyFinishedIssuePreparationUseCase {
|
|
|
109
112
|
await this.setDependedIssueUrlForAllOpenPRs(issue, params.issueUrl, project);
|
|
110
113
|
await this.issueCommentRepository.createComment(issue, rejectionStatusMessage);
|
|
111
114
|
};
|
|
112
|
-
this.
|
|
115
|
+
this.isAuthorTrusted = (author, allowedIssueAuthors) => allowedIssueAuthors === null || allowedIssueAuthors.includes(author);
|
|
116
|
+
this.collectRejections = async (issue, comments, isTrustedAuthor) => {
|
|
113
117
|
const rejections = [];
|
|
114
118
|
const lastComment = comments[comments.length - 1];
|
|
115
|
-
if (!lastComment ||
|
|
119
|
+
if (!lastComment ||
|
|
120
|
+
!isTrustedAuthor(lastComment.author) ||
|
|
121
|
+
!lastComment.content.startsWith('From: :robot:')) {
|
|
116
122
|
rejections.push({
|
|
117
123
|
type: 'NO_REPORT_FROM_AGENT_BOT',
|
|
118
124
|
detail: 'NO_REPORT_FROM_AGENT_BOT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":";;;AAIA,+DAKoC;AACpC,uEAGmC;AAEnC,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,QAAgB;QAC1B,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AACD,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YACE,QAAgB,EAChB,aAA4B,EAC5B,cAA6B;QAE7B,KAAK,CACH,4BAA4B,QAAQ,cAAc,cAAc,aAAa,aAAa,EAAE,CAC7F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAXD,0DAWC;AAMD,MAAa,qCAAqC;IAGhD,YACmB,iBAAsD,EACtD,eAShB,EACgB,sBAGhB,EACgB,iBAGhB;QAlBgB,sBAAiB,GAAjB,iBAAiB,CAAqC;QACtD,oBAAe,GAAf,eAAe,CAS/B;QACgB,2BAAsB,GAAtB,sBAAsB,CAGtC;QACgB,sBAAiB,GAAjB,iBAAiB,CAGjC;QAKH,QAAG,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github-issue-tower-defence-management",
|
|
3
|
-
"version": "1.69.
|
|
3
|
+
"version": "1.69.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "bin/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"better-sqlite3": "12.10.0",
|
|
76
76
|
"commander": "^14.0.0",
|
|
77
77
|
"dotenv": "^17.0.0",
|
|
78
|
-
"googleapis": "^171.
|
|
78
|
+
"googleapis": "^171.4.0",
|
|
79
79
|
"ky": "^2.0.0",
|
|
80
80
|
"typia": "^12.0.0",
|
|
81
81
|
"yaml": "^2.6.0"
|
|
@@ -1083,6 +1083,7 @@ codexHomeCandidates:
|
|
|
1083
1083
|
issueUrl: 'https://github.com/test/repo/issues/1',
|
|
1084
1084
|
thresholdForAutoReject: 3,
|
|
1085
1085
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1086
|
+
allowedIssueAuthors: null,
|
|
1086
1087
|
});
|
|
1087
1088
|
});
|
|
1088
1089
|
|
|
@@ -1116,6 +1117,7 @@ codexHomeCandidates:
|
|
|
1116
1117
|
issueUrl: 'https://github.com/test/repo/issues/1',
|
|
1117
1118
|
thresholdForAutoReject: 3,
|
|
1118
1119
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1120
|
+
allowedIssueAuthors: null,
|
|
1119
1121
|
});
|
|
1120
1122
|
});
|
|
1121
1123
|
|
|
@@ -426,11 +426,20 @@ program
|
|
|
426
426
|
webhookRepository,
|
|
427
427
|
);
|
|
428
428
|
|
|
429
|
+
const rawAllowedIssueAuthors = config.allowedIssueAuthors;
|
|
430
|
+
const allowedIssueAuthors = rawAllowedIssueAuthors
|
|
431
|
+
? rawAllowedIssueAuthors
|
|
432
|
+
.split(',')
|
|
433
|
+
.map((s) => s.trim())
|
|
434
|
+
.filter(Boolean)
|
|
435
|
+
: null;
|
|
436
|
+
|
|
429
437
|
await useCase.run({
|
|
430
438
|
projectUrl,
|
|
431
439
|
issueUrl: options.issueUrl,
|
|
432
440
|
thresholdForAutoReject,
|
|
433
441
|
workflowBlockerResolvedWebhookUrl,
|
|
442
|
+
allowedIssueAuthors,
|
|
434
443
|
});
|
|
435
444
|
});
|
|
436
445
|
|
|
@@ -174,6 +174,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
174
174
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
175
175
|
thresholdForAutoReject: 3,
|
|
176
176
|
workflowBlockerResolvedWebhookUrl: null,
|
|
177
|
+
allowedIssueAuthors: null,
|
|
177
178
|
});
|
|
178
179
|
|
|
179
180
|
expect(mockIssueRepository.update).toHaveBeenCalledTimes(1);
|
|
@@ -229,6 +230,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
229
230
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
230
231
|
thresholdForAutoReject: 3,
|
|
231
232
|
workflowBlockerResolvedWebhookUrl: null,
|
|
233
|
+
allowedIssueAuthors: null,
|
|
232
234
|
});
|
|
233
235
|
|
|
234
236
|
expect(mockIssueRepository.setDependedIssueUrl).toHaveBeenCalledWith(
|
|
@@ -248,6 +250,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
248
250
|
issueUrl: 'https://github.com/user/repo/issues/999',
|
|
249
251
|
thresholdForAutoReject: 3,
|
|
250
252
|
workflowBlockerResolvedWebhookUrl: null,
|
|
253
|
+
allowedIssueAuthors: null,
|
|
251
254
|
}),
|
|
252
255
|
).rejects.toThrow(
|
|
253
256
|
'Issue not found: https://github.com/user/repo/issues/999',
|
|
@@ -269,6 +272,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
269
272
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
270
273
|
thresholdForAutoReject: 3,
|
|
271
274
|
workflowBlockerResolvedWebhookUrl: null,
|
|
275
|
+
allowedIssueAuthors: null,
|
|
272
276
|
}),
|
|
273
277
|
).rejects.toThrow(
|
|
274
278
|
'Illegal issue status for https://github.com/user/repo/issues/1: expected Preparation, but got Done',
|
|
@@ -293,6 +297,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
293
297
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
294
298
|
thresholdForAutoReject: 3,
|
|
295
299
|
workflowBlockerResolvedWebhookUrl: null,
|
|
300
|
+
allowedIssueAuthors: null,
|
|
296
301
|
});
|
|
297
302
|
|
|
298
303
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -345,6 +350,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
345
350
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
346
351
|
thresholdForAutoReject: 3,
|
|
347
352
|
workflowBlockerResolvedWebhookUrl: null,
|
|
353
|
+
allowedIssueAuthors: null,
|
|
348
354
|
});
|
|
349
355
|
|
|
350
356
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -372,6 +378,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
372
378
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
373
379
|
thresholdForAutoReject: 3,
|
|
374
380
|
workflowBlockerResolvedWebhookUrl: null,
|
|
381
|
+
allowedIssueAuthors: null,
|
|
375
382
|
});
|
|
376
383
|
|
|
377
384
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -404,6 +411,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
404
411
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
405
412
|
thresholdForAutoReject: 3,
|
|
406
413
|
workflowBlockerResolvedWebhookUrl: null,
|
|
414
|
+
allowedIssueAuthors: null,
|
|
407
415
|
});
|
|
408
416
|
|
|
409
417
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -451,6 +459,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
451
459
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
452
460
|
thresholdForAutoReject: 3,
|
|
453
461
|
workflowBlockerResolvedWebhookUrl: null,
|
|
462
|
+
allowedIssueAuthors: null,
|
|
454
463
|
});
|
|
455
464
|
|
|
456
465
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -500,6 +509,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
500
509
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
501
510
|
thresholdForAutoReject: 3,
|
|
502
511
|
workflowBlockerResolvedWebhookUrl: null,
|
|
512
|
+
allowedIssueAuthors: null,
|
|
503
513
|
});
|
|
504
514
|
|
|
505
515
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -547,6 +557,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
547
557
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
548
558
|
thresholdForAutoReject: 3,
|
|
549
559
|
workflowBlockerResolvedWebhookUrl: null,
|
|
560
|
+
allowedIssueAuthors: null,
|
|
550
561
|
});
|
|
551
562
|
|
|
552
563
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -589,6 +600,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
589
600
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
590
601
|
thresholdForAutoReject: 3,
|
|
591
602
|
workflowBlockerResolvedWebhookUrl: null,
|
|
603
|
+
allowedIssueAuthors: null,
|
|
592
604
|
});
|
|
593
605
|
|
|
594
606
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -631,6 +643,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
631
643
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
632
644
|
thresholdForAutoReject: 3,
|
|
633
645
|
workflowBlockerResolvedWebhookUrl: null,
|
|
646
|
+
allowedIssueAuthors: null,
|
|
634
647
|
});
|
|
635
648
|
|
|
636
649
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -673,6 +686,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
673
686
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
674
687
|
thresholdForAutoReject: 3,
|
|
675
688
|
workflowBlockerResolvedWebhookUrl: null,
|
|
689
|
+
allowedIssueAuthors: null,
|
|
676
690
|
});
|
|
677
691
|
|
|
678
692
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -701,6 +715,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
701
715
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
702
716
|
thresholdForAutoReject: 3,
|
|
703
717
|
workflowBlockerResolvedWebhookUrl: null,
|
|
718
|
+
allowedIssueAuthors: null,
|
|
704
719
|
});
|
|
705
720
|
|
|
706
721
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -762,6 +777,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
762
777
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
763
778
|
thresholdForAutoReject: 3,
|
|
764
779
|
workflowBlockerResolvedWebhookUrl: null,
|
|
780
|
+
allowedIssueAuthors: null,
|
|
765
781
|
});
|
|
766
782
|
|
|
767
783
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -814,6 +830,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
814
830
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
815
831
|
thresholdForAutoReject: 3,
|
|
816
832
|
workflowBlockerResolvedWebhookUrl: null,
|
|
833
|
+
allowedIssueAuthors: null,
|
|
817
834
|
});
|
|
818
835
|
|
|
819
836
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -858,6 +875,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
858
875
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
859
876
|
thresholdForAutoReject: 3,
|
|
860
877
|
workflowBlockerResolvedWebhookUrl: null,
|
|
878
|
+
allowedIssueAuthors: null,
|
|
861
879
|
});
|
|
862
880
|
|
|
863
881
|
expect(mockIssueRepository.update).not.toHaveBeenCalledWith(
|
|
@@ -904,6 +922,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
904
922
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
905
923
|
thresholdForAutoReject: 3,
|
|
906
924
|
workflowBlockerResolvedWebhookUrl: null,
|
|
925
|
+
allowedIssueAuthors: null,
|
|
907
926
|
});
|
|
908
927
|
|
|
909
928
|
expect(mockIssueRepository.update).not.toHaveBeenCalledWith(
|
|
@@ -948,6 +967,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
948
967
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
949
968
|
thresholdForAutoReject: 3,
|
|
950
969
|
workflowBlockerResolvedWebhookUrl: null,
|
|
970
|
+
allowedIssueAuthors: null,
|
|
951
971
|
});
|
|
952
972
|
|
|
953
973
|
expect(mockIssueRepository.update).not.toHaveBeenCalledWith(
|
|
@@ -974,6 +994,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
974
994
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
975
995
|
thresholdForAutoReject: 3,
|
|
976
996
|
workflowBlockerResolvedWebhookUrl: null,
|
|
997
|
+
allowedIssueAuthors: null,
|
|
977
998
|
});
|
|
978
999
|
|
|
979
1000
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1027,6 +1048,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1027
1048
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1028
1049
|
thresholdForAutoReject: 3,
|
|
1029
1050
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1051
|
+
allowedIssueAuthors: null,
|
|
1030
1052
|
});
|
|
1031
1053
|
|
|
1032
1054
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1071,6 +1093,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1071
1093
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1072
1094
|
thresholdForAutoReject: 3,
|
|
1073
1095
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1096
|
+
allowedIssueAuthors: null,
|
|
1074
1097
|
});
|
|
1075
1098
|
|
|
1076
1099
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1115,6 +1138,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1115
1138
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1116
1139
|
thresholdForAutoReject: 3,
|
|
1117
1140
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1141
|
+
allowedIssueAuthors: null,
|
|
1118
1142
|
});
|
|
1119
1143
|
|
|
1120
1144
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1159,6 +1183,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1159
1183
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1160
1184
|
thresholdForAutoReject: 3,
|
|
1161
1185
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1186
|
+
allowedIssueAuthors: null,
|
|
1162
1187
|
});
|
|
1163
1188
|
|
|
1164
1189
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1209,6 +1234,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1209
1234
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1210
1235
|
thresholdForAutoReject: 3,
|
|
1211
1236
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1237
|
+
allowedIssueAuthors: null,
|
|
1212
1238
|
});
|
|
1213
1239
|
|
|
1214
1240
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1259,6 +1285,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1259
1285
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1260
1286
|
thresholdForAutoReject: 3,
|
|
1261
1287
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1288
|
+
allowedIssueAuthors: null,
|
|
1262
1289
|
});
|
|
1263
1290
|
|
|
1264
1291
|
expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
|
|
@@ -1297,6 +1324,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1297
1324
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1298
1325
|
thresholdForAutoReject: 3,
|
|
1299
1326
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1327
|
+
allowedIssueAuthors: null,
|
|
1300
1328
|
});
|
|
1301
1329
|
|
|
1302
1330
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1342,6 +1370,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1342
1370
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1343
1371
|
thresholdForAutoReject: 3,
|
|
1344
1372
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1373
|
+
allowedIssueAuthors: null,
|
|
1345
1374
|
});
|
|
1346
1375
|
|
|
1347
1376
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1377,6 +1406,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1377
1406
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1378
1407
|
thresholdForAutoReject: 3,
|
|
1379
1408
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1409
|
+
allowedIssueAuthors: null,
|
|
1380
1410
|
});
|
|
1381
1411
|
|
|
1382
1412
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1416,6 +1446,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1416
1446
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1417
1447
|
thresholdForAutoReject: 3,
|
|
1418
1448
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1449
|
+
allowedIssueAuthors: null,
|
|
1419
1450
|
});
|
|
1420
1451
|
|
|
1421
1452
|
expect(mockIssueRepository.findRelatedOpenPRs).toHaveBeenCalled();
|
|
@@ -1448,6 +1479,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1448
1479
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1449
1480
|
thresholdForAutoReject: 3,
|
|
1450
1481
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1482
|
+
allowedIssueAuthors: null,
|
|
1451
1483
|
});
|
|
1452
1484
|
|
|
1453
1485
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1483,6 +1515,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1483
1515
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1484
1516
|
thresholdForAutoReject: 3,
|
|
1485
1517
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1518
|
+
allowedIssueAuthors: null,
|
|
1486
1519
|
});
|
|
1487
1520
|
|
|
1488
1521
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1510,6 +1543,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1510
1543
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1511
1544
|
thresholdForAutoReject: 3,
|
|
1512
1545
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1546
|
+
allowedIssueAuthors: null,
|
|
1513
1547
|
});
|
|
1514
1548
|
|
|
1515
1549
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1539,6 +1573,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1539
1573
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1540
1574
|
thresholdForAutoReject: 3,
|
|
1541
1575
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1576
|
+
allowedIssueAuthors: null,
|
|
1542
1577
|
});
|
|
1543
1578
|
|
|
1544
1579
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -1578,6 +1613,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1578
1613
|
issueUrl: 'https://github.com/user/repo/pull/10',
|
|
1579
1614
|
thresholdForAutoReject: 3,
|
|
1580
1615
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1616
|
+
allowedIssueAuthors: null,
|
|
1581
1617
|
});
|
|
1582
1618
|
|
|
1583
1619
|
expect(mockIssueRepository.getOpenPullRequest).toHaveBeenCalledWith(
|
|
@@ -1620,6 +1656,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1620
1656
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1621
1657
|
thresholdForAutoReject: 3,
|
|
1622
1658
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1659
|
+
allowedIssueAuthors: null,
|
|
1623
1660
|
});
|
|
1624
1661
|
|
|
1625
1662
|
expect(mockIssueRepository.setDependedIssueUrl).toHaveBeenCalledWith(
|
|
@@ -1658,6 +1695,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1658
1695
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1659
1696
|
thresholdForAutoReject: 3,
|
|
1660
1697
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1698
|
+
allowedIssueAuthors: null,
|
|
1661
1699
|
});
|
|
1662
1700
|
|
|
1663
1701
|
expect(mockIssueRepository.setDependedIssueUrl).toHaveBeenCalledWith(
|
|
@@ -1706,6 +1744,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1706
1744
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1707
1745
|
thresholdForAutoReject: 3,
|
|
1708
1746
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1747
|
+
allowedIssueAuthors: null,
|
|
1709
1748
|
});
|
|
1710
1749
|
|
|
1711
1750
|
expect(mockIssueRepository.setDependedIssueUrl).toHaveBeenCalledWith(
|
|
@@ -1751,6 +1790,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1751
1790
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1752
1791
|
thresholdForAutoReject: 3,
|
|
1753
1792
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1793
|
+
allowedIssueAuthors: null,
|
|
1754
1794
|
});
|
|
1755
1795
|
|
|
1756
1796
|
expect(mockIssueRepository.setDependedIssueUrl).toHaveBeenCalledTimes(1);
|
|
@@ -1798,6 +1838,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1798
1838
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1799
1839
|
thresholdForAutoReject: 3,
|
|
1800
1840
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1841
|
+
allowedIssueAuthors: null,
|
|
1801
1842
|
});
|
|
1802
1843
|
|
|
1803
1844
|
expect(consoleWarnSpy).toHaveBeenCalledWith(
|
|
@@ -1880,6 +1921,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1880
1921
|
thresholdForAutoReject: 3,
|
|
1881
1922
|
workflowBlockerResolvedWebhookUrl:
|
|
1882
1923
|
'https://example.com/webhook?url={URL}&msg={MESSAGE}',
|
|
1924
|
+
allowedIssueAuthors: null,
|
|
1883
1925
|
});
|
|
1884
1926
|
|
|
1885
1927
|
expect(mockWebhookRepository.sendGetRequest).toHaveBeenCalledWith(
|
|
@@ -1919,6 +1961,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1919
1961
|
thresholdForAutoReject: 3,
|
|
1920
1962
|
workflowBlockerResolvedWebhookUrl:
|
|
1921
1963
|
'https://example.com/notify={MESSAGE}',
|
|
1964
|
+
allowedIssueAuthors: null,
|
|
1922
1965
|
});
|
|
1923
1966
|
|
|
1924
1967
|
expect(mockWebhookRepository.sendGetRequest).toHaveBeenCalledTimes(1);
|
|
@@ -1959,6 +2002,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1959
2002
|
thresholdForAutoReject: 3,
|
|
1960
2003
|
workflowBlockerResolvedWebhookUrl:
|
|
1961
2004
|
'https://example.com/webhook?msg={MESSAGE}',
|
|
2005
|
+
allowedIssueAuthors: null,
|
|
1962
2006
|
});
|
|
1963
2007
|
|
|
1964
2008
|
expect(mockWebhookRepository.sendGetRequest).not.toHaveBeenCalled();
|
|
@@ -1992,6 +2036,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
1992
2036
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
1993
2037
|
thresholdForAutoReject: 3,
|
|
1994
2038
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2039
|
+
allowedIssueAuthors: null,
|
|
1995
2040
|
});
|
|
1996
2041
|
|
|
1997
2042
|
expect(mockWebhookRepository.sendGetRequest).not.toHaveBeenCalled();
|
|
@@ -2036,6 +2081,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2036
2081
|
thresholdForAutoReject: 3,
|
|
2037
2082
|
workflowBlockerResolvedWebhookUrl:
|
|
2038
2083
|
'https://example.com/webhook?msg={MESSAGE}',
|
|
2084
|
+
allowedIssueAuthors: null,
|
|
2039
2085
|
});
|
|
2040
2086
|
|
|
2041
2087
|
expect(consoleWarnSpy).toHaveBeenCalledWith(
|
|
@@ -2086,6 +2132,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2086
2132
|
thresholdForAutoReject: 3,
|
|
2087
2133
|
workflowBlockerResolvedWebhookUrl:
|
|
2088
2134
|
'https://example.com/runTasker/notify=:={MESSAGE}',
|
|
2135
|
+
allowedIssueAuthors: null,
|
|
2089
2136
|
});
|
|
2090
2137
|
|
|
2091
2138
|
expect(mockWebhookRepository.sendGetRequest).toHaveBeenCalledTimes(1);
|
|
@@ -2137,6 +2184,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2137
2184
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2138
2185
|
thresholdForAutoReject: 3,
|
|
2139
2186
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2187
|
+
allowedIssueAuthors: null,
|
|
2140
2188
|
});
|
|
2141
2189
|
|
|
2142
2190
|
expect(consoleWarnSpy).toHaveBeenCalledWith(
|
|
@@ -2170,6 +2218,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2170
2218
|
issueUrl: 'https://github.com/user/repo/pull/10',
|
|
2171
2219
|
thresholdForAutoReject: 3,
|
|
2172
2220
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2221
|
+
allowedIssueAuthors: null,
|
|
2173
2222
|
});
|
|
2174
2223
|
|
|
2175
2224
|
expect(mockIssueRepository.getOpenPullRequest).toHaveBeenCalledWith(
|
|
@@ -2215,6 +2264,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2215
2264
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2216
2265
|
thresholdForAutoReject: 3,
|
|
2217
2266
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2267
|
+
allowedIssueAuthors: null,
|
|
2218
2268
|
});
|
|
2219
2269
|
|
|
2220
2270
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -2253,6 +2303,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2253
2303
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2254
2304
|
thresholdForAutoReject: 3,
|
|
2255
2305
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2306
|
+
allowedIssueAuthors: null,
|
|
2256
2307
|
});
|
|
2257
2308
|
|
|
2258
2309
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -2292,6 +2343,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2292
2343
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2293
2344
|
thresholdForAutoReject: 3,
|
|
2294
2345
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2346
|
+
allowedIssueAuthors: null,
|
|
2295
2347
|
});
|
|
2296
2348
|
|
|
2297
2349
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -2330,6 +2382,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2330
2382
|
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2331
2383
|
thresholdForAutoReject: 3,
|
|
2332
2384
|
workflowBlockerResolvedWebhookUrl: null,
|
|
2385
|
+
allowedIssueAuthors: null,
|
|
2333
2386
|
});
|
|
2334
2387
|
|
|
2335
2388
|
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
@@ -2337,4 +2390,308 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
2337
2390
|
mockProject,
|
|
2338
2391
|
);
|
|
2339
2392
|
});
|
|
2393
|
+
|
|
2394
|
+
describe('author verification (allowedIssueAuthors)', () => {
|
|
2395
|
+
it('should treat From: comment from untrusted author as NO_REPORT_FROM_AGENT_BOT', async () => {
|
|
2396
|
+
const issue = createMockIssue({
|
|
2397
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2398
|
+
status: 'Preparation',
|
|
2399
|
+
});
|
|
2400
|
+
|
|
2401
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2402
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2403
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2404
|
+
createMockComment({
|
|
2405
|
+
author: 'attacker',
|
|
2406
|
+
content: 'From: :robot: Fake report',
|
|
2407
|
+
}),
|
|
2408
|
+
]);
|
|
2409
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
|
|
2410
|
+
|
|
2411
|
+
await useCase.run({
|
|
2412
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2413
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2414
|
+
thresholdForAutoReject: 3,
|
|
2415
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2416
|
+
allowedIssueAuthors: ['trusted-bot'],
|
|
2417
|
+
});
|
|
2418
|
+
|
|
2419
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2420
|
+
expect.objectContaining({ status: 'Awaiting Workspace' }),
|
|
2421
|
+
mockProject,
|
|
2422
|
+
);
|
|
2423
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
2424
|
+
mockProject,
|
|
2425
|
+
expect.objectContaining({ status: 'Awaiting Workspace' }),
|
|
2426
|
+
'awaiting-workspace-id',
|
|
2427
|
+
);
|
|
2428
|
+
expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
|
|
2429
|
+
expect.objectContaining({
|
|
2430
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2431
|
+
}),
|
|
2432
|
+
expect.stringContaining('NO_REPORT_FROM_AGENT_BOT'),
|
|
2433
|
+
);
|
|
2434
|
+
});
|
|
2435
|
+
|
|
2436
|
+
it('should accept From: comment from trusted author and route to Awaiting Quality Check', async () => {
|
|
2437
|
+
const issue = createMockIssue({
|
|
2438
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2439
|
+
status: 'Preparation',
|
|
2440
|
+
});
|
|
2441
|
+
|
|
2442
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2443
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2444
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2445
|
+
createMockComment({
|
|
2446
|
+
author: 'trusted-bot',
|
|
2447
|
+
content: 'From: :robot: Real report',
|
|
2448
|
+
}),
|
|
2449
|
+
]);
|
|
2450
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
|
|
2451
|
+
{
|
|
2452
|
+
url: 'https://github.com/user/repo/pull/1',
|
|
2453
|
+
isConflicted: false,
|
|
2454
|
+
isPassedAllCiJob: true,
|
|
2455
|
+
isCiStateSuccess: true,
|
|
2456
|
+
isResolvedAllReviewComments: true,
|
|
2457
|
+
isBranchOutOfDate: false,
|
|
2458
|
+
missingRequiredCheckNames: [],
|
|
2459
|
+
},
|
|
2460
|
+
]);
|
|
2461
|
+
|
|
2462
|
+
await useCase.run({
|
|
2463
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2464
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2465
|
+
thresholdForAutoReject: 3,
|
|
2466
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2467
|
+
allowedIssueAuthors: ['trusted-bot'],
|
|
2468
|
+
});
|
|
2469
|
+
|
|
2470
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2471
|
+
expect.objectContaining({ status: 'Awaiting Quality Check' }),
|
|
2472
|
+
mockProject,
|
|
2473
|
+
);
|
|
2474
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
2475
|
+
mockProject,
|
|
2476
|
+
expect.objectContaining({ status: 'Awaiting Quality Check' }),
|
|
2477
|
+
'awaiting-quality-check-id',
|
|
2478
|
+
);
|
|
2479
|
+
});
|
|
2480
|
+
|
|
2481
|
+
it('should not auto-escalate to Failed Preparation when REJECTED comments come from untrusted authors', async () => {
|
|
2482
|
+
const issue = createMockIssue({
|
|
2483
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2484
|
+
status: 'Preparation',
|
|
2485
|
+
});
|
|
2486
|
+
|
|
2487
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2488
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2489
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2490
|
+
createMockComment({
|
|
2491
|
+
author: 'attacker',
|
|
2492
|
+
content: 'Auto Status Check: REJECTED - first',
|
|
2493
|
+
}),
|
|
2494
|
+
createMockComment({
|
|
2495
|
+
author: 'attacker',
|
|
2496
|
+
content: 'Auto Status Check: REJECTED - second',
|
|
2497
|
+
}),
|
|
2498
|
+
createMockComment({
|
|
2499
|
+
author: 'attacker',
|
|
2500
|
+
content: 'Auto Status Check: REJECTED - third',
|
|
2501
|
+
}),
|
|
2502
|
+
]);
|
|
2503
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
|
|
2504
|
+
|
|
2505
|
+
await useCase.run({
|
|
2506
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2507
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2508
|
+
thresholdForAutoReject: 3,
|
|
2509
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2510
|
+
allowedIssueAuthors: ['trusted-bot'],
|
|
2511
|
+
});
|
|
2512
|
+
|
|
2513
|
+
expect(mockIssueRepository.update).not.toHaveBeenCalledWith(
|
|
2514
|
+
expect.objectContaining({ status: 'Failed Preparation' }),
|
|
2515
|
+
mockProject,
|
|
2516
|
+
);
|
|
2517
|
+
expect(mockIssueRepository.updateStatus).not.toHaveBeenCalledWith(
|
|
2518
|
+
mockProject,
|
|
2519
|
+
expect.anything(),
|
|
2520
|
+
'failed-preparation-id',
|
|
2521
|
+
);
|
|
2522
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2523
|
+
expect.objectContaining({ status: 'Awaiting Workspace' }),
|
|
2524
|
+
mockProject,
|
|
2525
|
+
);
|
|
2526
|
+
});
|
|
2527
|
+
|
|
2528
|
+
it('should auto-escalate to Failed Preparation when REJECTED comments come from trusted authors', async () => {
|
|
2529
|
+
const issue = createMockIssue({
|
|
2530
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2531
|
+
status: 'Preparation',
|
|
2532
|
+
});
|
|
2533
|
+
|
|
2534
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2535
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2536
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2537
|
+
createMockComment({
|
|
2538
|
+
author: 'trusted-bot',
|
|
2539
|
+
content: 'Auto Status Check: REJECTED - first',
|
|
2540
|
+
}),
|
|
2541
|
+
createMockComment({
|
|
2542
|
+
author: 'trusted-bot',
|
|
2543
|
+
content: 'Auto Status Check: REJECTED - second',
|
|
2544
|
+
}),
|
|
2545
|
+
createMockComment({
|
|
2546
|
+
author: 'trusted-bot',
|
|
2547
|
+
content: 'Auto Status Check: REJECTED - third',
|
|
2548
|
+
}),
|
|
2549
|
+
]);
|
|
2550
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
|
|
2551
|
+
|
|
2552
|
+
await useCase.run({
|
|
2553
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2554
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2555
|
+
thresholdForAutoReject: 3,
|
|
2556
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2557
|
+
allowedIssueAuthors: ['trusted-bot'],
|
|
2558
|
+
});
|
|
2559
|
+
|
|
2560
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2561
|
+
expect.objectContaining({ status: 'Failed Preparation' }),
|
|
2562
|
+
mockProject,
|
|
2563
|
+
);
|
|
2564
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
2565
|
+
mockProject,
|
|
2566
|
+
expect.objectContaining({ status: 'Failed Preparation' }),
|
|
2567
|
+
'failed-preparation-id',
|
|
2568
|
+
);
|
|
2569
|
+
});
|
|
2570
|
+
|
|
2571
|
+
it('should ignore attacker-injected "failed to pass the check automatically" string and still escalate when trusted REJECTED comments meet threshold', async () => {
|
|
2572
|
+
const issue = createMockIssue({
|
|
2573
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2574
|
+
status: 'Preparation',
|
|
2575
|
+
});
|
|
2576
|
+
|
|
2577
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2578
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2579
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2580
|
+
createMockComment({
|
|
2581
|
+
author: 'trusted-bot',
|
|
2582
|
+
content: 'Auto Status Check: REJECTED - first',
|
|
2583
|
+
}),
|
|
2584
|
+
createMockComment({
|
|
2585
|
+
author: 'trusted-bot',
|
|
2586
|
+
content: 'Auto Status Check: REJECTED - second',
|
|
2587
|
+
}),
|
|
2588
|
+
createMockComment({
|
|
2589
|
+
author: 'attacker',
|
|
2590
|
+
content: 'failed to pass the check automatically',
|
|
2591
|
+
}),
|
|
2592
|
+
createMockComment({
|
|
2593
|
+
author: 'trusted-bot',
|
|
2594
|
+
content: 'Auto Status Check: REJECTED - third',
|
|
2595
|
+
}),
|
|
2596
|
+
]);
|
|
2597
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
|
|
2598
|
+
|
|
2599
|
+
await useCase.run({
|
|
2600
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2601
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2602
|
+
thresholdForAutoReject: 3,
|
|
2603
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2604
|
+
allowedIssueAuthors: ['trusted-bot'],
|
|
2605
|
+
});
|
|
2606
|
+
|
|
2607
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2608
|
+
expect.objectContaining({ status: 'Failed Preparation' }),
|
|
2609
|
+
mockProject,
|
|
2610
|
+
);
|
|
2611
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
2612
|
+
mockProject,
|
|
2613
|
+
expect.objectContaining({ status: 'Failed Preparation' }),
|
|
2614
|
+
'failed-preparation-id',
|
|
2615
|
+
);
|
|
2616
|
+
});
|
|
2617
|
+
|
|
2618
|
+
it('should accept any author when allowedIssueAuthors is null (backward compatibility)', async () => {
|
|
2619
|
+
const issue = createMockIssue({
|
|
2620
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2621
|
+
status: 'Preparation',
|
|
2622
|
+
});
|
|
2623
|
+
|
|
2624
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2625
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2626
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2627
|
+
createMockComment({
|
|
2628
|
+
author: 'arbitrary-user',
|
|
2629
|
+
content: 'From: :robot: Report',
|
|
2630
|
+
}),
|
|
2631
|
+
]);
|
|
2632
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
|
|
2633
|
+
{
|
|
2634
|
+
url: 'https://github.com/user/repo/pull/1',
|
|
2635
|
+
isConflicted: false,
|
|
2636
|
+
isPassedAllCiJob: true,
|
|
2637
|
+
isCiStateSuccess: true,
|
|
2638
|
+
isResolvedAllReviewComments: true,
|
|
2639
|
+
isBranchOutOfDate: false,
|
|
2640
|
+
missingRequiredCheckNames: [],
|
|
2641
|
+
},
|
|
2642
|
+
]);
|
|
2643
|
+
|
|
2644
|
+
await useCase.run({
|
|
2645
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2646
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2647
|
+
thresholdForAutoReject: 3,
|
|
2648
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2649
|
+
allowedIssueAuthors: null,
|
|
2650
|
+
});
|
|
2651
|
+
|
|
2652
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2653
|
+
expect.objectContaining({ status: 'Awaiting Quality Check' }),
|
|
2654
|
+
mockProject,
|
|
2655
|
+
);
|
|
2656
|
+
});
|
|
2657
|
+
|
|
2658
|
+
it('should accept any author when allowedIssueAuthors is omitted (backward compatibility)', async () => {
|
|
2659
|
+
const issue = createMockIssue({
|
|
2660
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
2661
|
+
status: 'Preparation',
|
|
2662
|
+
});
|
|
2663
|
+
|
|
2664
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2665
|
+
mockIssueRepository.get.mockResolvedValue(issue);
|
|
2666
|
+
mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
|
|
2667
|
+
createMockComment({
|
|
2668
|
+
author: 'arbitrary-user',
|
|
2669
|
+
content: 'From: :robot: Report',
|
|
2670
|
+
}),
|
|
2671
|
+
]);
|
|
2672
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
|
|
2673
|
+
{
|
|
2674
|
+
url: 'https://github.com/user/repo/pull/1',
|
|
2675
|
+
isConflicted: false,
|
|
2676
|
+
isPassedAllCiJob: true,
|
|
2677
|
+
isCiStateSuccess: true,
|
|
2678
|
+
isResolvedAllReviewComments: true,
|
|
2679
|
+
isBranchOutOfDate: false,
|
|
2680
|
+
missingRequiredCheckNames: [],
|
|
2681
|
+
},
|
|
2682
|
+
]);
|
|
2683
|
+
|
|
2684
|
+
await useCase.run({
|
|
2685
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
2686
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
2687
|
+
thresholdForAutoReject: 3,
|
|
2688
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
2689
|
+
});
|
|
2690
|
+
|
|
2691
|
+
expect(mockIssueRepository.update).toHaveBeenCalledWith(
|
|
2692
|
+
expect.objectContaining({ status: 'Awaiting Quality Check' }),
|
|
2693
|
+
mockProject,
|
|
2694
|
+
);
|
|
2695
|
+
});
|
|
2696
|
+
});
|
|
2340
2697
|
});
|
|
@@ -68,6 +68,7 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
68
68
|
issueUrl: string;
|
|
69
69
|
thresholdForAutoReject: number;
|
|
70
70
|
workflowBlockerResolvedWebhookUrl: string | null;
|
|
71
|
+
allowedIssueAuthors?: string[] | null;
|
|
71
72
|
}): Promise<void> => {
|
|
72
73
|
const project = await this.projectRepository.getByUrl(params.projectUrl);
|
|
73
74
|
|
|
@@ -167,7 +168,14 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
167
168
|
const comments =
|
|
168
169
|
await this.issueCommentRepository.getCommentsFromIssue(issue);
|
|
169
170
|
|
|
170
|
-
const
|
|
171
|
+
const isTrustedAuthor = (author: string): boolean =>
|
|
172
|
+
this.isAuthorTrusted(author, params.allowedIssueAuthors ?? null);
|
|
173
|
+
|
|
174
|
+
const { rejections } = await this.collectRejections(
|
|
175
|
+
issue,
|
|
176
|
+
comments,
|
|
177
|
+
isTrustedAuthor,
|
|
178
|
+
);
|
|
171
179
|
|
|
172
180
|
const rejectionStatusMessage =
|
|
173
181
|
rejections.length > 0
|
|
@@ -179,13 +187,17 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
179
187
|
);
|
|
180
188
|
if (
|
|
181
189
|
rejections.length > 0 &&
|
|
182
|
-
lastTargetComments.filter(
|
|
183
|
-
comment
|
|
190
|
+
lastTargetComments.filter(
|
|
191
|
+
(comment) =>
|
|
192
|
+
comment.content.startsWith('Auto Status Check: REJECTED') &&
|
|
193
|
+
isTrustedAuthor(comment.author),
|
|
184
194
|
).length >= params.thresholdForAutoReject &&
|
|
185
|
-
!lastTargetComments.some(
|
|
186
|
-
comment
|
|
187
|
-
.
|
|
188
|
-
|
|
195
|
+
!lastTargetComments.some(
|
|
196
|
+
(comment) =>
|
|
197
|
+
comment.content
|
|
198
|
+
.toLowerCase()
|
|
199
|
+
.includes('failed to pass the check automatically') &&
|
|
200
|
+
isTrustedAuthor(comment.author),
|
|
189
201
|
)
|
|
190
202
|
) {
|
|
191
203
|
issue.status = FAILED_PREPARATION_STATUS_NAME;
|
|
@@ -253,9 +265,16 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
253
265
|
);
|
|
254
266
|
};
|
|
255
267
|
|
|
268
|
+
private isAuthorTrusted = (
|
|
269
|
+
author: string,
|
|
270
|
+
allowedIssueAuthors: string[] | null,
|
|
271
|
+
): boolean =>
|
|
272
|
+
allowedIssueAuthors === null || allowedIssueAuthors.includes(author);
|
|
273
|
+
|
|
256
274
|
private collectRejections = async (
|
|
257
275
|
issue: { url: string; labels: string[]; isPr: boolean },
|
|
258
|
-
comments: { content: string }[],
|
|
276
|
+
comments: { author: string; content: string }[],
|
|
277
|
+
isTrustedAuthor: (author: string) => boolean,
|
|
259
278
|
): Promise<{
|
|
260
279
|
rejections: { type: RejectedReasonType; detail: string }[];
|
|
261
280
|
approvedPrUrl: string | null;
|
|
@@ -263,7 +282,11 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
263
282
|
const rejections: { type: RejectedReasonType; detail: string }[] = [];
|
|
264
283
|
|
|
265
284
|
const lastComment = comments[comments.length - 1];
|
|
266
|
-
if (
|
|
285
|
+
if (
|
|
286
|
+
!lastComment ||
|
|
287
|
+
!isTrustedAuthor(lastComment.author) ||
|
|
288
|
+
!lastComment.content.startsWith('From: :robot:')
|
|
289
|
+
) {
|
|
267
290
|
rejections.push({
|
|
268
291
|
type: 'NO_REPORT_FROM_AGENT_BOT',
|
|
269
292
|
detail: 'NO_REPORT_FROM_AGENT_BOT',
|
|
@@ -20,7 +20,9 @@ export declare class NotifyFinishedIssuePreparationUseCase {
|
|
|
20
20
|
issueUrl: string;
|
|
21
21
|
thresholdForAutoReject: number;
|
|
22
22
|
workflowBlockerResolvedWebhookUrl: string | null;
|
|
23
|
+
allowedIssueAuthors?: string[] | null;
|
|
23
24
|
}) => Promise<void>;
|
|
25
|
+
private isAuthorTrusted;
|
|
24
26
|
private collectRejections;
|
|
25
27
|
private reportBodyHasNextStep;
|
|
26
28
|
private setDependedIssueUrlForAllOpenPRs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAY3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAMD,qBAAa,qCAAqC;IAI9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAUhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAlBpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;gBAG/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,CACxB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAKH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAY3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAMD,qBAAa,qCAAqC;IAI9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAUhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAlBpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;gBAG/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,CACxB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAKH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACvC,KAAG,OAAO,CAAC,IAAI,CAAC,CAkMf;IAEF,OAAO,CAAC,eAAe,CAIgD;IAEvE,OAAO,CAAC,iBAAiB,CA8BvB;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,gCAAgC,CAiBtC;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,+BAA+B,CAkCrC;CACH"}
|