@atlassian-dc-mcp/bitbucket 0.34.0 → 0.36.0
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 +20 -0
- package/README.md +55 -2
- package/build/__tests__/bitbucket-service.test.js +41 -2
- package/build/__tests__/bitbucket-service.test.js.map +1 -1
- package/build/__tests__/config.test.js +2 -1
- package/build/__tests__/config.test.js.map +1 -1
- package/build/__tests__/pr-builds.test.d.ts +2 -0
- package/build/__tests__/pr-builds.test.d.ts.map +1 -0
- package/build/__tests__/pr-builds.test.js +74 -0
- package/build/__tests__/pr-builds.test.js.map +1 -0
- package/build/__tests__/pr-merge.test.js +5 -4
- package/build/__tests__/pr-merge.test.js.map +1 -1
- package/build/__tests__/pr-state.test.d.ts +2 -0
- package/build/__tests__/pr-state.test.d.ts.map +1 -0
- package/build/__tests__/pr-state.test.js +118 -0
- package/build/__tests__/pr-state.test.js.map +1 -0
- package/build/__tests__/repo-gateway.test.d.ts +2 -0
- package/build/__tests__/repo-gateway.test.d.ts.map +1 -0
- package/build/__tests__/{merge-gateway.test.js → repo-gateway.test.js} +70 -10
- package/build/__tests__/repo-gateway.test.js.map +1 -0
- package/build/bitbucket-service.d.ts +44 -0
- package/build/bitbucket-service.d.ts.map +1 -1
- package/build/bitbucket-service.js +59 -0
- package/build/bitbucket-service.js.map +1 -1
- package/build/index.js +33 -1
- package/build/index.js.map +1 -1
- package/build/pr-builds.d.ts +36 -0
- package/build/pr-builds.d.ts.map +1 -0
- package/build/pr-builds.js +40 -0
- package/build/pr-builds.js.map +1 -0
- package/build/pr-merge.d.ts +2 -2
- package/build/pr-merge.d.ts.map +1 -1
- package/build/pr-merge.js +2 -2
- package/build/pr-merge.js.map +1 -1
- package/build/pr-state.d.ts +33 -0
- package/build/pr-state.d.ts.map +1 -0
- package/build/pr-state.js +37 -0
- package/build/pr-state.js.map +1 -0
- package/build/repo-gateway.d.ts +57 -0
- package/build/repo-gateway.d.ts.map +1 -0
- package/build/repo-gateway.js +122 -0
- package/build/repo-gateway.js.map +1 -0
- package/package.json +3 -3
- package/src/__tests__/bitbucket-service.test.ts +50 -2
- package/src/__tests__/config.test.ts +2 -1
- package/src/__tests__/pr-builds.test.ts +93 -0
- package/src/__tests__/pr-merge.test.ts +5 -5
- package/src/__tests__/pr-state.test.ts +150 -0
- package/src/__tests__/{merge-gateway.test.ts → repo-gateway.test.ts} +83 -11
- package/src/bitbucket-service.ts +67 -0
- package/src/index.ts +52 -1
- package/src/pr-builds.ts +74 -0
- package/src/pr-merge.ts +3 -3
- package/src/pr-state.ts +68 -0
- package/src/repo-gateway.ts +183 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/__tests__/merge-gateway.test.d.ts +0 -2
- package/build/__tests__/merge-gateway.test.d.ts.map +0 -1
- package/build/__tests__/merge-gateway.test.js.map +0 -1
- package/build/merge-gateway.d.ts +0 -34
- package/build/merge-gateway.d.ts.map +0 -1
- package/build/merge-gateway.js +0 -86
- package/build/merge-gateway.js.map +0 -1
- package/src/merge-gateway.ts +0 -132
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { DeprecatedService, PullRequestsService } from '../bitbucket-client/index.js';
|
|
2
|
+
import { fetchPullRequestBuilds } from '../pr-builds.js';
|
|
3
|
+
jest.mock('../bitbucket-client/index.js', () => ({
|
|
4
|
+
PullRequestsService: {
|
|
5
|
+
get3: jest.fn(),
|
|
6
|
+
},
|
|
7
|
+
DeprecatedService: {
|
|
8
|
+
getBuildStatus: jest.fn(),
|
|
9
|
+
},
|
|
10
|
+
OpenAPI: { BASE: '', TOKEN: '', VERSION: '' },
|
|
11
|
+
}));
|
|
12
|
+
const getPullRequest = PullRequestsService.get3;
|
|
13
|
+
const getBuildStatus = DeprecatedService.getBuildStatus;
|
|
14
|
+
const HEAD = '0780e1428c06abf1c96ab9cb995d129255511c93';
|
|
15
|
+
const OPEN_PR = { id: 42, fromRef: { id: 'refs/heads/feature', latestCommit: HEAD } };
|
|
16
|
+
const BUILD = {
|
|
17
|
+
key: 'a1',
|
|
18
|
+
name: 'Builds » demo » PR-42 #1',
|
|
19
|
+
state: 'SUCCESSFUL',
|
|
20
|
+
url: 'https://ci.example.com/job/demo/job/PR-42/1/',
|
|
21
|
+
description: 'This commit looks good.',
|
|
22
|
+
dateAdded: 1791464936354,
|
|
23
|
+
};
|
|
24
|
+
const E2E = { ...BUILD, key: 'b2', name: 'E2E » demo » PR-42 #1', state: 'FAILED' };
|
|
25
|
+
const REVIEW = { ...BUILD, key: 'c3', name: 'AI Code Review » demo » PR-42 #1', state: 'INPROGRESS' };
|
|
26
|
+
describe('fetchPullRequestBuilds', () => {
|
|
27
|
+
beforeEach(() => jest.clearAllMocks());
|
|
28
|
+
it('lists the build statuses of the latest source commit with per-state counts', async () => {
|
|
29
|
+
getPullRequest.mockResolvedValue(OPEN_PR);
|
|
30
|
+
getBuildStatus.mockResolvedValue({ size: 3, isLastPage: true, values: [BUILD, E2E, REVIEW] });
|
|
31
|
+
const result = await fetchPullRequestBuilds('PROJ', 'demo', '42');
|
|
32
|
+
expect(getPullRequest).toHaveBeenCalledWith('PROJ', '42', 'demo');
|
|
33
|
+
expect(getBuildStatus).toHaveBeenCalledWith(HEAD, 'NEWEST', 0, 100);
|
|
34
|
+
expect(result).toEqual({
|
|
35
|
+
success: true,
|
|
36
|
+
data: {
|
|
37
|
+
commitId: HEAD,
|
|
38
|
+
counts: { successful: 1, failed: 1, inProgress: 1, cancelled: 0, unknown: 0 },
|
|
39
|
+
builds: [BUILD, E2E, REVIEW],
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it('counts a build without a recognised state as unknown', async () => {
|
|
44
|
+
getPullRequest.mockResolvedValue(OPEN_PR);
|
|
45
|
+
getBuildStatus.mockResolvedValue({ values: [{ key: 'x' }, { key: 'y', state: 'QUEUED' }] });
|
|
46
|
+
const result = await fetchPullRequestBuilds('PROJ', 'demo', '42');
|
|
47
|
+
expect(result.data?.counts).toEqual({ successful: 0, failed: 0, inProgress: 0, cancelled: 0, unknown: 2 });
|
|
48
|
+
});
|
|
49
|
+
it('returns empty builds when no CI has reported on the commit', async () => {
|
|
50
|
+
getPullRequest.mockResolvedValue(OPEN_PR);
|
|
51
|
+
getBuildStatus.mockResolvedValue({ size: 0, isLastPage: true, values: [] });
|
|
52
|
+
const result = await fetchPullRequestBuilds('PROJ', 'demo', '42');
|
|
53
|
+
expect(result.data).toEqual({
|
|
54
|
+
commitId: HEAD,
|
|
55
|
+
counts: { successful: 0, failed: 0, inProgress: 0, cancelled: 0, unknown: 0 },
|
|
56
|
+
builds: [],
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
it('fails without querying builds when the pull request has no source commit', async () => {
|
|
60
|
+
getPullRequest.mockResolvedValue({ id: 42, fromRef: { id: 'refs/heads/feature' } });
|
|
61
|
+
const result = await fetchPullRequestBuilds('PROJ', 'demo', '42');
|
|
62
|
+
expect(result.success).toBe(false);
|
|
63
|
+
expect(result.error).toBe('Pull request 42 has no source commit');
|
|
64
|
+
expect(getBuildStatus).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
it('reports an API error with the status line', async () => {
|
|
67
|
+
getPullRequest.mockRejectedValue({ status: 404, statusText: 'Not Found', body: { errors: [] } });
|
|
68
|
+
const result = await fetchPullRequestBuilds('PROJ', 'demo', '42');
|
|
69
|
+
expect(result.success).toBe(false);
|
|
70
|
+
expect(result.error).toBe('Error fetching pull request builds: 404 Not Found');
|
|
71
|
+
expect(getBuildStatus).not.toHaveBeenCalled();
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=pr-builds.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-builds.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-builds.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PullRequestsService } from '../bitbucket-client/index.js';
|
|
2
2
|
import { fetchMergeability, mergePullRequest } from '../pr-merge.js';
|
|
3
|
+
import { MERGE_POLICY } from '../repo-gateway.js';
|
|
3
4
|
jest.mock('../bitbucket-client/index.js', () => ({
|
|
4
5
|
PullRequestsService: {
|
|
5
6
|
canMerge: jest.fn(),
|
|
@@ -11,7 +12,7 @@ jest.mock('../bitbucket-client/index.js', () => ({
|
|
|
11
12
|
const canMerge = PullRequestsService.canMerge;
|
|
12
13
|
const merge = PullRequestsService.merge;
|
|
13
14
|
const getPullRequest = PullRequestsService.get3;
|
|
14
|
-
const OPEN_GATEWAY = { enabled: true, repos: ['PROJ/demo'], targetRefs: [] };
|
|
15
|
+
const OPEN_GATEWAY = { enabled: true, repos: ['PROJ/demo'], targetRefs: [], policy: MERGE_POLICY };
|
|
15
16
|
const CLEAN = { canMerge: true, conflicted: false, outcome: 'CLEAN', vetoes: [] };
|
|
16
17
|
const MERGED_PR = {
|
|
17
18
|
id: 42,
|
|
@@ -91,7 +92,7 @@ describe('mergePullRequest', () => {
|
|
|
91
92
|
it('refuses without any request when merging is disabled', async () => {
|
|
92
93
|
const result = await mergePullRequest({
|
|
93
94
|
...baseParams,
|
|
94
|
-
gateway: { enabled: false, repos: [], targetRefs: [] },
|
|
95
|
+
gateway: { enabled: false, repos: [], targetRefs: [], policy: MERGE_POLICY },
|
|
95
96
|
});
|
|
96
97
|
expect(result.success).toBe(false);
|
|
97
98
|
expect(result.error).toMatch(/disabled on this server/);
|
|
@@ -112,7 +113,7 @@ describe('mergePullRequest', () => {
|
|
|
112
113
|
getPullRequest.mockResolvedValue({ toRef: { id: 'refs/heads/master' } });
|
|
113
114
|
const result = await mergePullRequest({
|
|
114
115
|
...baseParams,
|
|
115
|
-
gateway: { enabled: true, repos: ['PROJ/demo'], targetRefs: ['refs/heads/develop'] },
|
|
116
|
+
gateway: { enabled: true, repos: ['PROJ/demo'], targetRefs: ['refs/heads/develop'], policy: MERGE_POLICY },
|
|
116
117
|
});
|
|
117
118
|
expect(result.success).toBe(false);
|
|
118
119
|
expect(result.error).toMatch(/refs\/heads\/master is not allowed/);
|
|
@@ -125,7 +126,7 @@ describe('mergePullRequest', () => {
|
|
|
125
126
|
merge.mockResolvedValue(MERGED_PR);
|
|
126
127
|
const result = await mergePullRequest({
|
|
127
128
|
...baseParams,
|
|
128
|
-
gateway: { enabled: true, repos: ['PROJ/demo'], targetRefs: ['refs/heads/release/*'] },
|
|
129
|
+
gateway: { enabled: true, repos: ['PROJ/demo'], targetRefs: ['refs/heads/release/*'], policy: MERGE_POLICY },
|
|
129
130
|
});
|
|
130
131
|
expect(result.success).toBe(true);
|
|
131
132
|
expect(merge).toHaveBeenCalled();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-merge.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-merge.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"pr-merge.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-merge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-state.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pr-state.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { PullRequestsService } from '../bitbucket-client/index.js';
|
|
2
|
+
import { declinePullRequest, reopenPullRequest } from '../pr-state.js';
|
|
3
|
+
import { DECLINE_POLICY } from '../repo-gateway.js';
|
|
4
|
+
jest.mock('../bitbucket-client/index.js', () => ({
|
|
5
|
+
PullRequestsService: {
|
|
6
|
+
decline: jest.fn(),
|
|
7
|
+
reopen: jest.fn(),
|
|
8
|
+
},
|
|
9
|
+
OpenAPI: { BASE: '', TOKEN: '', VERSION: '' },
|
|
10
|
+
}));
|
|
11
|
+
const decline = PullRequestsService.decline;
|
|
12
|
+
const reopen = PullRequestsService.reopen;
|
|
13
|
+
const OPEN_GATEWAY = {
|
|
14
|
+
enabled: true,
|
|
15
|
+
repos: ['PROJ/demo'],
|
|
16
|
+
targetRefs: [],
|
|
17
|
+
policy: DECLINE_POLICY,
|
|
18
|
+
};
|
|
19
|
+
const DECLINED_PR = {
|
|
20
|
+
id: 42,
|
|
21
|
+
version: 3,
|
|
22
|
+
title: 'Add decline tool',
|
|
23
|
+
state: 'DECLINED',
|
|
24
|
+
fromRef: { id: 'refs/heads/feature' },
|
|
25
|
+
toRef: { id: 'refs/heads/develop' },
|
|
26
|
+
reviewers: [],
|
|
27
|
+
};
|
|
28
|
+
const REOPENED_PR = { ...DECLINED_PR, version: 4, state: 'OPEN' };
|
|
29
|
+
const baseParams = {
|
|
30
|
+
projectKey: 'PROJ',
|
|
31
|
+
repositorySlug: 'demo',
|
|
32
|
+
pullRequestId: '42',
|
|
33
|
+
version: 2,
|
|
34
|
+
};
|
|
35
|
+
describe('declinePullRequest', () => {
|
|
36
|
+
beforeEach(() => jest.clearAllMocks());
|
|
37
|
+
it('declines with the version as an optimistic lock and returns a compact ack', async () => {
|
|
38
|
+
decline.mockResolvedValue(DECLINED_PR);
|
|
39
|
+
const result = await declinePullRequest({ ...baseParams, gateway: OPEN_GATEWAY });
|
|
40
|
+
expect(decline).toHaveBeenCalledWith('PROJ', '42', 'demo', '2', { version: 2 });
|
|
41
|
+
expect(result.success).toBe(true);
|
|
42
|
+
expect(result.data).toEqual({
|
|
43
|
+
id: 42,
|
|
44
|
+
version: 3,
|
|
45
|
+
title: 'Add decline tool',
|
|
46
|
+
state: 'DECLINED',
|
|
47
|
+
fromRefId: 'refs/heads/feature',
|
|
48
|
+
toRefId: 'refs/heads/develop',
|
|
49
|
+
reviewerCount: 0,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('posts the reason atomically with the decline when a comment is given', async () => {
|
|
53
|
+
decline.mockResolvedValue(DECLINED_PR);
|
|
54
|
+
await declinePullRequest({
|
|
55
|
+
...baseParams,
|
|
56
|
+
gateway: OPEN_GATEWAY,
|
|
57
|
+
comment: 'Superseded by PR 99.',
|
|
58
|
+
});
|
|
59
|
+
expect(decline).toHaveBeenCalledWith('PROJ', '42', 'demo', '2', {
|
|
60
|
+
version: 2,
|
|
61
|
+
comment: 'Superseded by PR 99.',
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
it('can return the full payload', async () => {
|
|
65
|
+
decline.mockResolvedValue(DECLINED_PR);
|
|
66
|
+
const result = await declinePullRequest({ ...baseParams, gateway: OPEN_GATEWAY, output: 'full' });
|
|
67
|
+
expect(result.data).toBe(DECLINED_PR);
|
|
68
|
+
});
|
|
69
|
+
it('refuses without any request when declining is disabled', async () => {
|
|
70
|
+
const result = await declinePullRequest({
|
|
71
|
+
...baseParams,
|
|
72
|
+
gateway: { enabled: false, repos: [], targetRefs: [], policy: DECLINE_POLICY },
|
|
73
|
+
});
|
|
74
|
+
expect(result.success).toBe(false);
|
|
75
|
+
expect(result.error).toMatch(/Declining pull requests is disabled on this server/);
|
|
76
|
+
expect(decline).not.toHaveBeenCalled();
|
|
77
|
+
});
|
|
78
|
+
it('refuses a repository outside the allowed list without any request', async () => {
|
|
79
|
+
const result = await declinePullRequest({
|
|
80
|
+
...baseParams,
|
|
81
|
+
repositorySlug: 'other-repo',
|
|
82
|
+
gateway: OPEN_GATEWAY,
|
|
83
|
+
});
|
|
84
|
+
expect(result.success).toBe(false);
|
|
85
|
+
expect(result.error).toMatch(/Declining is not allowed in PROJ\/other-repo/);
|
|
86
|
+
expect(decline).not.toHaveBeenCalled();
|
|
87
|
+
});
|
|
88
|
+
it('surfaces a server-side failure such as a stale version', async () => {
|
|
89
|
+
decline.mockRejectedValue({ status: 409, statusText: 'Conflict', body: { errors: [{ message: 'stale' }] } });
|
|
90
|
+
const result = await declinePullRequest({ ...baseParams, gateway: OPEN_GATEWAY });
|
|
91
|
+
expect(result.success).toBe(false);
|
|
92
|
+
expect(result.error).toBe('Error declining pull request: 409 Conflict');
|
|
93
|
+
expect(result.details).toEqual({ errors: [{ message: 'stale' }] });
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('reopenPullRequest', () => {
|
|
97
|
+
beforeEach(() => jest.clearAllMocks());
|
|
98
|
+
it('reopens with the version as an optimistic lock and returns a compact ack', async () => {
|
|
99
|
+
reopen.mockResolvedValue(REOPENED_PR);
|
|
100
|
+
const result = await reopenPullRequest(baseParams);
|
|
101
|
+
expect(reopen).toHaveBeenCalledWith('PROJ', '42', 'demo', '2', { version: 2 });
|
|
102
|
+
expect(result.success).toBe(true);
|
|
103
|
+
expect(result.data).toMatchObject({ id: 42, version: 4, state: 'OPEN' });
|
|
104
|
+
});
|
|
105
|
+
it('can return the full payload', async () => {
|
|
106
|
+
reopen.mockResolvedValue(REOPENED_PR);
|
|
107
|
+
const result = await reopenPullRequest({ ...baseParams, output: 'full' });
|
|
108
|
+
expect(result.data).toBe(REOPENED_PR);
|
|
109
|
+
});
|
|
110
|
+
it('surfaces a server-side failure such as a pull request that is not declined', async () => {
|
|
111
|
+
reopen.mockRejectedValue({ status: 409, statusText: 'Conflict', body: { errors: [{ message: 'not declined' }] } });
|
|
112
|
+
const result = await reopenPullRequest(baseParams);
|
|
113
|
+
expect(result.success).toBe(false);
|
|
114
|
+
expect(result.error).toBe('Error reopening pull request: 409 Conflict');
|
|
115
|
+
expect(result.details).toEqual({ errors: [{ message: 'not declined' }] });
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=pr-state.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-state.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-state.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-gateway.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/repo-gateway.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DECLINE_POLICY, MERGE_POLICY, assertRepoOperationAllowed, assertTargetRefMergeAllowed, resolveDeclineGateway, resolveMergeGateway, } from '../repo-gateway.js';
|
|
2
2
|
const silentWarn = () => undefined;
|
|
3
|
+
const disabled = (policy = MERGE_POLICY) => ({
|
|
4
|
+
enabled: false,
|
|
5
|
+
repos: [],
|
|
6
|
+
targetRefs: [],
|
|
7
|
+
policy,
|
|
8
|
+
});
|
|
3
9
|
describe('resolveMergeGateway', () => {
|
|
4
10
|
it('is disabled by default', () => {
|
|
5
11
|
const gateway = resolveMergeGateway({ env: {}, warn: silentWarn });
|
|
@@ -51,34 +57,88 @@ describe('resolveMergeGateway', () => {
|
|
|
51
57
|
expect(warnings[1]).toContain('stay disabled');
|
|
52
58
|
});
|
|
53
59
|
});
|
|
54
|
-
describe('
|
|
60
|
+
describe('resolveDeclineGateway', () => {
|
|
61
|
+
it('is disabled by default', () => {
|
|
62
|
+
const gateway = resolveDeclineGateway({ env: {}, warn: silentWarn });
|
|
63
|
+
expect(gateway.enabled).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it('reads its own environment variables rather than the merge ones', () => {
|
|
66
|
+
const gateway = resolveDeclineGateway({
|
|
67
|
+
env: {
|
|
68
|
+
BITBUCKET_DECLINE_ENABLED: 'true',
|
|
69
|
+
BITBUCKET_DECLINE_ALLOWED_REPOS: 'proj/Demo, OTHER/*',
|
|
70
|
+
},
|
|
71
|
+
warn: silentWarn,
|
|
72
|
+
});
|
|
73
|
+
expect(gateway.enabled).toBe(true);
|
|
74
|
+
expect(gateway.repos).toEqual(['PROJ/demo', 'OTHER/*']);
|
|
75
|
+
});
|
|
76
|
+
it('stays disabled when only merging was enabled', () => {
|
|
77
|
+
const gateway = resolveDeclineGateway({
|
|
78
|
+
env: { BITBUCKET_MERGE_ENABLED: 'true', BITBUCKET_MERGE_ALLOWED_REPOS: 'PROJ/demo' },
|
|
79
|
+
warn: silentWarn,
|
|
80
|
+
});
|
|
81
|
+
expect(gateway.enabled).toBe(false);
|
|
82
|
+
});
|
|
83
|
+
it('never restricts target refs, even when the merge target refs are configured', () => {
|
|
84
|
+
const gateway = resolveDeclineGateway({
|
|
85
|
+
env: {
|
|
86
|
+
BITBUCKET_DECLINE_ENABLED: 'true',
|
|
87
|
+
BITBUCKET_DECLINE_ALLOWED_REPOS: 'PROJ/demo',
|
|
88
|
+
BITBUCKET_MERGE_ALLOWED_TARGET_REFS: 'develop',
|
|
89
|
+
},
|
|
90
|
+
warn: silentWarn,
|
|
91
|
+
});
|
|
92
|
+
expect(gateway.targetRefs).toEqual([]);
|
|
93
|
+
});
|
|
94
|
+
it('names the decline environment variables when enabled with no valid repository', () => {
|
|
95
|
+
const warnings = [];
|
|
96
|
+
resolveDeclineGateway({ env: { BITBUCKET_DECLINE_ENABLED: 'true' }, warn: message => warnings.push(message) });
|
|
97
|
+
expect(warnings).toHaveLength(1);
|
|
98
|
+
expect(warnings[0]).toContain('BITBUCKET_DECLINE_ALLOWED_REPOS');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('assertRepoOperationAllowed', () => {
|
|
55
102
|
const gateway = resolveMergeGateway({
|
|
56
103
|
env: { BITBUCKET_MERGE_ENABLED: 'true', BITBUCKET_MERGE_ALLOWED_REPOS: 'PROJ/demo, OTHER/*' },
|
|
57
104
|
warn: silentWarn,
|
|
58
105
|
});
|
|
59
|
-
it('refuses everything when
|
|
60
|
-
expect(() =>
|
|
106
|
+
it('refuses everything when the operation is disabled', () => {
|
|
107
|
+
expect(() => assertRepoOperationAllowed(disabled(), 'PROJ', 'demo'))
|
|
61
108
|
.toThrow(/disabled on this server/);
|
|
62
109
|
});
|
|
110
|
+
it('names the environment variables of its own operation when disabled', () => {
|
|
111
|
+
expect(() => assertRepoOperationAllowed(disabled(DECLINE_POLICY), 'PROJ', 'demo'))
|
|
112
|
+
.toThrow(/Declining pull requests is disabled on this server\. Enable it with BITBUCKET_DECLINE_ENABLED and list the allowed repositories in BITBUCKET_DECLINE_ALLOWED_REPOS\./);
|
|
113
|
+
});
|
|
63
114
|
it('allows an exact repository regardless of the casing used by the caller', () => {
|
|
64
|
-
expect(() =>
|
|
115
|
+
expect(() => assertRepoOperationAllowed(gateway, 'proj', 'DEMO')).not.toThrow();
|
|
65
116
|
});
|
|
66
117
|
it('allows any repository in a wildcard project', () => {
|
|
67
|
-
expect(() =>
|
|
118
|
+
expect(() => assertRepoOperationAllowed(gateway, 'OTHER', 'anything')).not.toThrow();
|
|
68
119
|
});
|
|
69
120
|
it('refuses a repository outside the allowed list', () => {
|
|
70
|
-
expect(() =>
|
|
121
|
+
expect(() => assertRepoOperationAllowed(gateway, 'PROJ', 'other-repo')).toThrow(/Merging is not allowed in PROJ\/other-repo/);
|
|
122
|
+
});
|
|
123
|
+
it('names the refused operation in the message', () => {
|
|
124
|
+
const declineGateway = resolveDeclineGateway({
|
|
125
|
+
env: { BITBUCKET_DECLINE_ENABLED: 'true', BITBUCKET_DECLINE_ALLOWED_REPOS: 'PROJ/demo' },
|
|
126
|
+
warn: silentWarn,
|
|
127
|
+
});
|
|
128
|
+
expect(() => assertRepoOperationAllowed(declineGateway, 'PROJ', 'other-repo'))
|
|
129
|
+
.toThrow(/Declining is not allowed in PROJ\/other-repo/);
|
|
71
130
|
});
|
|
72
131
|
it('does not treat a wildcard project as a prefix of another project', () => {
|
|
73
|
-
expect(() =>
|
|
132
|
+
expect(() => assertRepoOperationAllowed(gateway, 'OTHERS', 'demo')).toThrow(/not allowed/);
|
|
74
133
|
});
|
|
75
134
|
});
|
|
76
135
|
describe('assertTargetRefMergeAllowed', () => {
|
|
77
|
-
const unrestricted = { enabled: true, repos: ['PROJ/demo'], targetRefs: [] };
|
|
136
|
+
const unrestricted = { enabled: true, repos: ['PROJ/demo'], targetRefs: [], policy: MERGE_POLICY };
|
|
78
137
|
const restricted = {
|
|
79
138
|
enabled: true,
|
|
80
139
|
repos: ['PROJ/demo'],
|
|
81
140
|
targetRefs: ['refs/heads/develop', 'refs/heads/release/*'],
|
|
141
|
+
policy: MERGE_POLICY,
|
|
82
142
|
};
|
|
83
143
|
it('allows any ref when no target-ref restriction is configured', () => {
|
|
84
144
|
expect(() => assertTargetRefMergeAllowed(unrestricted, 'refs/heads/master')).not.toThrow();
|
|
@@ -95,4 +155,4 @@ describe('assertTargetRefMergeAllowed', () => {
|
|
|
95
155
|
expect(() => assertTargetRefMergeAllowed(restricted, undefined)).toThrow(/Could not determine the target branch/);
|
|
96
156
|
});
|
|
97
157
|
});
|
|
98
|
-
//# sourceMappingURL=
|
|
158
|
+
//# sourceMappingURL=repo-gateway.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-gateway.test.js","sourceRoot":"","sources":["../../src/__tests__/repo-gateway.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { CompareDiffResponse } from './compare-diff-mapper.js';
|
|
3
3
|
import { type MergePullRequestParams } from './pr-merge.js';
|
|
4
|
+
import { type DeclinePullRequestParams, type ReopenPullRequestParams } from './pr-state.js';
|
|
4
5
|
import { BitbucketMutationOutputMode, BitbucketOutputMode } from './bitbucket-response-mapper.js';
|
|
5
6
|
type BranchDiffOutputMode = 'unified' | 'full';
|
|
6
7
|
export declare class BitbucketService {
|
|
@@ -195,6 +196,14 @@ export declare class BitbucketService {
|
|
|
195
196
|
* @returns Promise with the mergeability status
|
|
196
197
|
*/
|
|
197
198
|
getPullRequestMergeability(projectKey: string, repositorySlug: string, pullRequestId: string): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./bitbucket-client/index.js").RestPullRequestMergeability>>;
|
|
199
|
+
/**
|
|
200
|
+
* Get the CI build statuses reported on a pull request's latest source commit. Read-only.
|
|
201
|
+
* @param projectKey The project key
|
|
202
|
+
* @param repositorySlug The repository slug
|
|
203
|
+
* @param pullRequestId The pull request ID
|
|
204
|
+
* @returns Promise with the commit id, per-state counts and the build statuses
|
|
205
|
+
*/
|
|
206
|
+
getPullRequestBuilds(projectKey: string, repositorySlug: string, pullRequestId: string): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./pr-builds.js").PullRequestBuilds>>;
|
|
198
207
|
/**
|
|
199
208
|
* Merge a pull request. Only permitted for repositories (and target branches) the operator
|
|
200
209
|
* allowed through the merge gateway; see merge-gateway.ts. A conflicted or vetoed pull
|
|
@@ -206,6 +215,21 @@ export declare class BitbucketService {
|
|
|
206
215
|
* @returns Promise with the merged pull request
|
|
207
216
|
*/
|
|
208
217
|
mergePullRequest(params: MergePullRequestParams): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./bitbucket-client/index.js").RestPullRequest>>;
|
|
218
|
+
/**
|
|
219
|
+
* Decline a pull request. Only permitted for repositories the operator allowed through the
|
|
220
|
+
* decline gateway; see repo-gateway.ts.
|
|
221
|
+
* @param params.version The current pull request version, required for optimistic locking
|
|
222
|
+
* @param params.comment Optional reason, posted as a pull request comment by the same request
|
|
223
|
+
* @param params.gateway The resolved operator decline policy
|
|
224
|
+
* @returns Promise with the declined pull request
|
|
225
|
+
*/
|
|
226
|
+
declinePullRequest(params: DeclinePullRequestParams): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./bitbucket-client/index.js").RestPullRequest>>;
|
|
227
|
+
/**
|
|
228
|
+
* Reopen a declined pull request. Not gated: it restores the state a decline removed.
|
|
229
|
+
* @param params.version The current pull request version, required for optimistic locking
|
|
230
|
+
* @returns Promise with the reopened pull request
|
|
231
|
+
*/
|
|
232
|
+
reopenPullRequest(params: ReopenPullRequestParams): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./bitbucket-client/index.js").RestPullRequest>>;
|
|
209
233
|
/**
|
|
210
234
|
* Get a user by slug, or search for users by name/email filter
|
|
211
235
|
* @param userSlug Optional exact slug to look up a specific user
|
|
@@ -511,6 +535,11 @@ export declare const bitbucketToolSchemas: {
|
|
|
511
535
|
repositorySlug: z.ZodString;
|
|
512
536
|
pullRequestId: z.ZodString;
|
|
513
537
|
};
|
|
538
|
+
getPullRequestBuilds: {
|
|
539
|
+
projectKey: z.ZodString;
|
|
540
|
+
repositorySlug: z.ZodString;
|
|
541
|
+
pullRequestId: z.ZodString;
|
|
542
|
+
};
|
|
514
543
|
mergePullRequest: {
|
|
515
544
|
projectKey: z.ZodString;
|
|
516
545
|
repositorySlug: z.ZodString;
|
|
@@ -520,6 +549,21 @@ export declare const bitbucketToolSchemas: {
|
|
|
520
549
|
message: z.ZodOptional<z.ZodString>;
|
|
521
550
|
output: z.ZodOptional<z.ZodEnum<["ack", "full"]>>;
|
|
522
551
|
};
|
|
552
|
+
declinePullRequest: {
|
|
553
|
+
projectKey: z.ZodString;
|
|
554
|
+
repositorySlug: z.ZodString;
|
|
555
|
+
pullRequestId: z.ZodString;
|
|
556
|
+
version: z.ZodNumber;
|
|
557
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
558
|
+
output: z.ZodOptional<z.ZodEnum<["ack", "full"]>>;
|
|
559
|
+
};
|
|
560
|
+
reopenPullRequest: {
|
|
561
|
+
projectKey: z.ZodString;
|
|
562
|
+
repositorySlug: z.ZodString;
|
|
563
|
+
pullRequestId: z.ZodString;
|
|
564
|
+
version: z.ZodNumber;
|
|
565
|
+
output: z.ZodOptional<z.ZodEnum<["ack", "full"]>>;
|
|
566
|
+
};
|
|
523
567
|
getRequiredReviewers: {
|
|
524
568
|
projectKey: z.ZodString;
|
|
525
569
|
repositorySlug: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitbucket-service.d.ts","sourceRoot":"","sources":["../src/bitbucket-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"bitbucket-service.d.ts","sourceRoot":"","sources":["../src/bitbucket-service.ts"],"names":[],"mappings":"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"}
|