Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make BitBucket Server username matching case insensitive #1291

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/platforms/bitbucket_server/BitBucketServerAPI.ts
Expand Up @@ -213,7 +213,7 @@ export class BitBucketServerAPI implements BitBucketServerAPIDSL {

return comments
.filter(comment => comment!.text.includes(dangerIDMessage))
.filter(comment => username || comment!.author.name === username)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure the history behind the username || part of this code but it does not seem like the proper logic? Happy to revert removing it if I need to.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I can't figure it out either, so lets take it and see

.filter(comment => comment!.author.name.toLowerCase() === username!.toLowerCase())
.filter(comment => comment!.text.includes("Generated by"))
}

Expand All @@ -232,7 +232,7 @@ export class BitBucketServerAPI implements BitBucketServerAPIDSL {
.map((i: any) => {
return {
id: i.id,
ownedByDanger: i.author.name === username && i.text.includes(dangerIDMessage),
ownedByDanger: i.author.name.toLowerCase() === username!.toLowerCase() && i.text.includes(dangerIDMessage),
body: i.text,
}
})
Expand Down
Expand Up @@ -241,6 +241,49 @@ describe("API testing - BitBucket Server", () => {
])
})

it("getDangerCommentsCaseInsensitive", async () => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added extra tests rather than changing the existing tests to have case differences in the usernames. I went this way to it is more obvious why the usernames don't match perfectly but I'm happy to make changes to go any other direction.

const commitID = "e70f3d6468f61a4bef68c9e6eaba9166b096e23c"
jsonResult = () => ({
isLastPage: true,
values: [
{
comment: {
text: `FAIL! danger-id-1; ${dangerSignaturePostfix({} as DangerResults, commitID)}`,
author: {
name: "userNAME",
},
},
},
{
comment: null,
},
{
comment: {
text: "not a danger comment",
author: {
name: "azz",
},
},
},
],
})
const result = await api.getDangerComments("1")

expect(api.fetch).toHaveBeenCalledWith(
`${host}/rest/api/1.0/projects/FOO/repos/BAR/pull-requests/1/activities?fromType=COMMENT&start=0`,
{ method: "GET", body: null, headers: expectedJSONHeaders },
undefined
)
expect(result).toEqual([
{
text: `FAIL! danger-id-1; ${dangerSignaturePostfix({} as DangerResults, commitID)}`,
author: {
name: "userNAME",
},
},
])
})

it("getDangerInlineComments", async () => {
jsonResult = () => ({
isLastPage: true,
Expand Down Expand Up @@ -270,6 +313,35 @@ describe("API testing - BitBucket Server", () => {
expect(comments[0].ownedByDanger).toBeTruthy()
})

it("getDangerInlineCommentsCaseInsensitive", async () => {
jsonResult = () => ({
isLastPage: true,
values: [
{
comment: {
text:
"\n[//]: # (danger-id-default;)\n[//]: # ( File: README.md;\n Line: 5;)\n\n- :warning: Hello updates\n\n\n ",
author: {
name: "userNAME",
},
},
commentAnchor: {
line: 5,
lineType: "ADDED",
},
},
],
})
const comments = await api.getDangerInlineComments("default")
expect(api.fetch).toHaveBeenCalledWith(
`${host}/rest/api/1.0/projects/FOO/repos/BAR/pull-requests/1/activities?fromType=COMMENT&start=0`,
{ method: "GET", body: null, headers: expectedJSONHeaders },
undefined
)
expect(comments.length).toEqual(1)
expect(comments[0].ownedByDanger).toBeTruthy()
})

it("getFileContents", async () => {
textResult = "contents..."
const result = await api.getFileContents("path/folder with space/foo.txt", "projects/FOO/repos/BAR", "master")
Expand Down