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
@@ -30,58 +30,81 @@ func TestListMergeRequestByUsername(t *testing.T) {
|
||||
var testListMrsByUsernamePayload = MergeRequestByUsernameRequest{Username: "hcramer", UserId: 1234, State: "opened"}
|
||||
t.Run("Gets merge requests by username", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", testListMrsByUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}}
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data := getSuccessData(t, svc, request)
|
||||
assert(t, data.Message, "Merge requests fetched for hcramer")
|
||||
assert(t, data.Status, http.StatusOK)
|
||||
})
|
||||
|
||||
t.Run("Should handle no merge requests", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", testListMrsByUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{emptyResponse: true}}
|
||||
data := getFailData(t, svc, request)
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{emptyResponse: true}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data, status := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "No MRs found")
|
||||
assert(t, data.Details, "hcramer did not have any MRs")
|
||||
assert(t, data.Status, http.StatusNotFound)
|
||||
assert(t, status, http.StatusNotFound)
|
||||
})
|
||||
|
||||
t.Run("Should require username", func(t *testing.T) {
|
||||
missingUsernamePayload := testListMrsByUsernamePayload
|
||||
missingUsernamePayload.Username = ""
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", missingUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}}
|
||||
data := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "username is required")
|
||||
assert(t, data.Details, "username is a required payload field")
|
||||
assert(t, data.Status, http.StatusBadRequest)
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data, status := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "Invalid payload")
|
||||
assert(t, data.Details, "Username is required")
|
||||
assert(t, status, http.StatusBadRequest)
|
||||
})
|
||||
|
||||
t.Run("Should require User ID for assignee call", func(t *testing.T) {
|
||||
missingUsernamePayload := testListMrsByUsernamePayload
|
||||
missingUsernamePayload.UserId = 0
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", missingUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}}
|
||||
data := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "user_id is required")
|
||||
assert(t, data.Details, "user_id is a required payload field")
|
||||
assert(t, data.Status, http.StatusBadRequest)
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data, status := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "Invalid payload")
|
||||
assert(t, data.Details, "UserId is required")
|
||||
assert(t, status, http.StatusBadRequest)
|
||||
})
|
||||
|
||||
t.Run("Should handle error from Gitlab", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", testListMrsByUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{testBase: testBase{errFromGitlab: true}}}
|
||||
data := getFailData(t, svc, request)
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{testBase: testBase{errFromGitlab: true}}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data, status := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "An error occurred")
|
||||
assert(t, data.Details, strings.Repeat("Some error from Gitlab; ", 3))
|
||||
assert(t, data.Status, http.StatusInternalServerError)
|
||||
assert(t, status, http.StatusInternalServerError)
|
||||
})
|
||||
|
||||
t.Run("Handles non-200 from Gitlab", func(t *testing.T) {
|
||||
request := makeRequest(t, http.MethodPost, "/merge_requests_by_username", testListMrsByUsernamePayload)
|
||||
svc := mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{testBase: testBase{status: http.StatusSeeOther}}}
|
||||
data := getFailData(t, svc, request)
|
||||
svc := middleware(
|
||||
mergeRequestListerByUsernameService{testProjectData, fakeMergeRequestListerByUsername{testBase: testBase{status: http.StatusSeeOther}}},
|
||||
withPayloadValidation(methodToPayload{http.MethodPost: &MergeRequestByUsernameRequest{}}),
|
||||
withMethodCheck(http.MethodPost),
|
||||
)
|
||||
data, status := getFailData(t, svc, request)
|
||||
assert(t, data.Message, "An error occurred")
|
||||
assert(t, data.Details, strings.Repeat("An error occurred on the /merge_requests_by_username endpoint; ", 3))
|
||||
assert(t, data.Status, http.StatusInternalServerError)
|
||||
assert(t, status, http.StatusInternalServerError)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user