Skip to content

Commit

Permalink
Merge pull request #15 from fleboulch/contrib/fix-branch-name-constraint
Browse files Browse the repository at this point in the history
fix: remove the constraint on branch name
  • Loading branch information
greg0ire authored Jul 3, 2024
2 parents 9fd1ae1 + be2c6c8 commit 78e8e5b
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 3 deletions.
73 changes: 73 additions & 0 deletions __tests__/__fixtures__/hooks/pushHookFixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,76 @@ export const pushHookFixture = {
],
total_commits_count: 4,
};

export const pushHookFixtureFeatureBranch = {
object_kind: 'push',
before: '95790bf891e76fee5e1747ab589903a6a1f80f22',
after: 'da1560886d4f094c3e6c9ef40349f7d38b5d27d7',
ref: 'refs/heads/feat/add-logo',
checkout_sha: 'da1560886d4f094c3e6c9ef40349f7d38b5d27d7',
user_id: 4,
user_name: 'John Smith',
user_username: 'jsmith',
user_email: '[email protected]',
user_avatar:
'https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80',
project_id: projectFixture.id,
project: {
id: projectFixture.id,
name: projectFixture.name,
description: projectFixture.description,
web_url: projectFixture.web_url,
avatar_url: projectFixture.avatar_url,
git_ssh_url: '[email protected]:mike/diaspora.git',
git_http_url: 'http://example.com/mike/diaspora.git',
namespace: projectFixture.namespace,
visibility_level: 0,
path_with_namespace: projectFixture.path_with_namespace,
default_branch: projectFixture.default_branch,
homepage: 'http://example.com/mike/diaspora',
url: '[email protected]:mike/diaspora.git',
ssh_url: '[email protected]:mike/diaspora.git',
http_url: 'http://example.com/mike/diaspora.git',
},
repository: {
name: 'Diaspora',
url: '[email protected]:mike/diaspora.git',
description: '',
homepage: 'http://example.com/mike/diaspora',
git_http_url: 'http://example.com/mike/diaspora.git',
git_ssh_url: '[email protected]:mike/diaspora.git',
visibility_level: 0,
},
commits: [
{
id: 'b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327',
message:
'Update Catalan translation to e38cb41.\n\nSee https://gitlab.com/gitlab-org/gitlab for more information',
title: 'Update Catalan translation to e38cb41.',
timestamp: '2011-12-12T14:27:31+02:00',
url: 'http://example.com/mike/diaspora/commit/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327',
author: {
name: 'Jordi Mallach',
email: '[email protected]',
},
added: ['CHANGELOG'],
modified: ['app/controller/application.rb'],
removed: [],
},
{
id: 'da1560886d4f094c3e6c9ef40349f7d38b5d27d7',
message: 'fixed readme',
title: 'fixed readme',
timestamp: '2012-01-03T23:36:29+02:00',
url: 'http://example.com/mike/diaspora/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7',
author: {
name: 'GitLab dev user',
email: 'gitlabdev@dv6700.(none)',
},
added: ['CHANGELOG'],
modified: ['app/controller/application.rb'],
removed: [],
},
],
total_commits_count: 4,
};
70 changes: 68 additions & 2 deletions __tests__/review/pushHook.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { HTTP_STATUS_NO_CONTENT, HTTP_STATUS_OK } from '@/constants';
import { addReviewToChannel } from '@/core/services/data';
import { slackBotWebClient } from '@/core/services/slack';
import { pushHookFixture } from '../__fixtures__/hooks/pushHookFixture';
import {
pushHookFixture,
pushHookFixtureFeatureBranch,
} from '../__fixtures__/hooks/pushHookFixture';
import { mergeRequestFixture } from '../__fixtures__/mergeRequestFixture';
import { fetch } from '../utils/fetch';
import { getGitlabHeaders } from '../utils/getGitlabHeaders';
Expand All @@ -25,7 +28,7 @@ describe('review > pushHook', () => {

it('should publish a message on related review messages', async () => {
// Given
const branchName = pushHookFixture.ref.split('/').pop();
const branchName = 'master';
const channelId = 'channelId';

mockGitlabCall(
Expand Down Expand Up @@ -86,6 +89,69 @@ describe('review > pushHook', () => {
});
});

it('should publish a message on related review messages for branch containing a slash', async () => {
// Given
const branchName = 'feat/add-logo';
const channelId = 'channelId';

mockGitlabCall(
`/projects/${pushHookFixtureFeatureBranch.project_id}/merge_requests?source_branch=${branchName}`,
[mergeRequestFixture]
);
mockGitlabCall(
`/projects/${pushHookFixtureFeatureBranch.project_id}/merge_requests/${mergeRequestFixture.iid}/commits?per_page=100`,
[{ id: pushHookFixtureFeatureBranch.commits[1].id }]
);
await addReviewToChannel({
channelId,
mergeRequestIid: mergeRequestFixture.iid,
projectId: mergeRequestFixture.project_id,
ts: 'ts',
});

// When
const response = await fetch('/api/v1/homer/gitlab', {
body: pushHookFixtureFeatureBranch,
headers: getGitlabHeaders(),
});

// Then
expect(response.status).toEqual(HTTP_STATUS_OK);
expect(slackBotWebClient.chat.postMessage).toHaveBeenNthCalledWith(1, {
blocks: [
{
text: {
text: '<http://example.com/mike/diaspora/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7|fixed readme>',
type: 'mrkdwn',
},
type: 'section',
},
{
elements: [
{
alt_text: 'gitlabdev.real',
image_url: 'image_24',
type: 'image',
},
{
text: '*gitlabdev.real*',
type: 'mrkdwn',
},
{
text: '2 changes',
type: 'plain_text',
},
],
type: 'context',
},
],
channel: 'channelId',
icon_emoji: ':git-commit:',
text: ':git-commit: New commit(s)',
thread_ts: 'ts',
});
});

it('should answer no content status whether there is no commit', async () => {
// When
const response = await fetch('/api/v1/homer/gitlab', {
Expand Down
2 changes: 1 addition & 1 deletion src/review/commands/share/hookHandlers/pushHookHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export async function pushHookHandler(
return;
}

const branchName = ref.split('/').pop() as string;
const branchName = ref.split('/').slice(2).join('/') as string;

const mergeRequests =
(await fetchMergeRequestsByBranchName(project_id, branchName)).filter(
Expand Down

0 comments on commit 78e8e5b

Please sign in to comment.