fix: date fixes; go middleware refactors; regex fixes; etc (#368)
fix: format of date when MR was closed or merged (#367) refactor: Add Payload Validators + Middleware In Go Code (#366) fix: Add better checks for leaving comments (#369) fix: regex support for http credentials embedded in remote url (#372) fix: Comment on single line selects two lines (#371) This is a #PATCH release.
This commit is contained in:
committed by
GitHub
parent
f1faf603b0
commit
22bfd0c83e
@@ -40,10 +40,18 @@ func TestPostComment(t *testing.T) {
|
||||
var testCommentCreationData = PostCommentRequest{Comment: "Some comment"}
|
||||
t.Run("Creates a new note (unlinked comment)", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/mr/comment", testCommentCreationData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{}}
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data := getSuccessData(t, svc, request)
|
||||
assert(t, data.Message, "Comment created successfully")
|
||||
assert(t, data.Status, http.StatusOK)
|
||||
})
|
||||
|
||||
t.Run("Creates a new comment", func(t *testing.T) {
|
||||
@@ -54,23 +62,49 @@ func TestPostComment(t *testing.T) {
|
||||
},
|
||||
}
|
||||
request := makeRequest(t, http.MethodPost, "/mr/comment", testCommentCreationData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{}}
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data := getSuccessData(t, svc, request)
|
||||
assert(t, data.Message, "Comment created successfully")
|
||||
assert(t, data.Status, http.StatusOK)
|
||||
})
|
||||
|
||||
t.Run("Handles errors from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/mr/comment", testCommentCreationData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{errFromGitlab: true}}}
|
||||
data := getFailData(t, svc, request)
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{testBase{errFromGitlab: true}}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data, _ := getFailData(t, svc, request)
|
||||
checkErrorFromGitlab(t, data, "Could not create discussion")
|
||||
})
|
||||
|
||||
t.Run("Handles non-200s from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/mr/comment", testCommentCreationData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{status: http.StatusSeeOther}}}
|
||||
data := getFailData(t, svc, request)
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{testBase{status: http.StatusSeeOther}}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data, _ := getFailData(t, svc, request)
|
||||
checkNon200(t, data, "Could not create discussion", "/mr/comment")
|
||||
})
|
||||
}
|
||||
@@ -79,23 +113,18 @@ func TestDeleteComment(t *testing.T) {
|
||||
var testCommentDeletionData = DeleteCommentRequest{NoteId: 3, DiscussionId: "abc123"}
|
||||
t.Run("Deletes a comment", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodDelete, "/mr/comment", testCommentDeletionData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{}}
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data := getSuccessData(t, svc, request)
|
||||
assert(t, data.Message, "Comment deleted successfully")
|
||||
assert(t, data.Status, http.StatusOK)
|
||||
})
|
||||
t.Run("Handles errors from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodDelete, "/mr/comment", testCommentDeletionData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{errFromGitlab: true}}}
|
||||
data := getFailData(t, svc, request)
|
||||
checkErrorFromGitlab(t, data, "Could not delete comment")
|
||||
})
|
||||
|
||||
t.Run("Handles non-200s from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodDelete, "/mr/comment", testCommentDeletionData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{status: http.StatusSeeOther}}}
|
||||
data := getFailData(t, svc, request)
|
||||
checkNon200(t, data, "Could not delete comment", "/mr/comment")
|
||||
})
|
||||
}
|
||||
|
||||
@@ -103,22 +132,17 @@ func TestEditComment(t *testing.T) {
|
||||
var testEditCommentData = EditCommentRequest{Comment: "Some comment", NoteId: 3, DiscussionId: "abc123"}
|
||||
t.Run("Edits a comment", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPatch, "/mr/comment", testEditCommentData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{}}
|
||||
svc := middleware(
|
||||
commentService{testProjectData, fakeCommentClient{}},
|
||||
withMr(testProjectData, fakeMergeRequestLister{}),
|
||||
withPayloadValidation(methodToPayload{
|
||||
http.MethodPost: &PostCommentRequest{},
|
||||
http.MethodDelete: &DeleteCommentRequest{},
|
||||
http.MethodPatch: &EditCommentRequest{},
|
||||
}),
|
||||
withMethodCheck(http.MethodPost, http.MethodDelete, http.MethodPatch),
|
||||
)
|
||||
data := getSuccessData(t, svc, request)
|
||||
assert(t, data.Message, "Comment updated successfully")
|
||||
assert(t, data.Status, http.StatusOK)
|
||||
})
|
||||
t.Run("Handles errors from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPatch, "/mr/comment", testEditCommentData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{errFromGitlab: true}}}
|
||||
data := getFailData(t, svc, request)
|
||||
checkErrorFromGitlab(t, data, "Could not update comment")
|
||||
})
|
||||
|
||||
t.Run("Handles non-200s from Gitlab client", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPatch, "/mr/comment", testEditCommentData)
|
||||
svc := commentService{testProjectData, fakeCommentClient{testBase{status: http.StatusSeeOther}}}
|
||||
data := getFailData(t, svc, request)
|
||||
checkNon200(t, data, "Could not update comment", "/mr/comment")
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user