]> source.dussan.org Git - gitea.git/commitdiff
Fix bug in getting merged pull request by commit (#32079)
authorZettat123 <zettat123@gmail.com>
Tue, 24 Sep 2024 01:00:09 +0000 (09:00 +0800)
committerGitHub <noreply@github.com>
Tue, 24 Sep 2024 01:00:09 +0000 (01:00 +0000)
routers/api/v1/api.go
routers/api/v1/repo/commits.go
templates/swagger/v1_json.tmpl
tests/integration/api_pull_test.go

index be67ec1695b3bf3115b7673f0e9de8ccd0ab2256..1244676508ee554c1c25808b09f571895f543504 100644 (file)
@@ -1286,6 +1286,8 @@ func Routes() *web.Router {
                                        m.Group("/{ref}", func() {
                                                m.Get("/status", repo.GetCombinedCommitStatusByRef)
                                                m.Get("/statuses", repo.GetCommitStatusesByRef)
+                                       }, context.ReferencesGitRepo())
+                                       m.Group("/{sha}", func() {
                                                m.Get("/pull", repo.GetCommitPullRequest)
                                        }, context.ReferencesGitRepo())
                                }, reqRepoReader(unit.TypeCode))
index cec7c3d534c627ae7efe91a48e6c51c1bbe4df1a..788c75fab2ffea3156658991e943c599cd89659b 100644 (file)
@@ -325,11 +325,11 @@ func DownloadCommitDiffOrPatch(ctx *context.APIContext) {
        }
 }
 
-// GetCommitPullRequest returns the pull request of the commit
+// GetCommitPullRequest returns the merged pull request of the commit
 func GetCommitPullRequest(ctx *context.APIContext) {
        // swagger:operation GET /repos/{owner}/{repo}/commits/{sha}/pull repository repoGetCommitPullRequest
        // ---
-       // summary: Get the pull request of the commit
+       // summary: Get the merged pull request of the commit
        // produces:
        // - application/json
        // parameters:
@@ -354,7 +354,7 @@ func GetCommitPullRequest(ctx *context.APIContext) {
        //   "404":
        //     "$ref": "#/responses/notFound"
 
-       pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.PathParam(":sha"))
+       pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.PathParam("sha"))
        if err != nil {
                if issues_model.IsErrPullRequestNotExist(err) {
                        ctx.Error(http.StatusNotFound, "GetPullRequestByMergedCommit", err)
index d9f1a8f5e931fa2354d072e0e47f787442afc639..598350550276ed5824265a6748e94ab54410c820 100644 (file)
         "tags": [
           "repository"
         ],
-        "summary": "Get the pull request of the commit",
+        "summary": "Get the merged pull request of the commit",
         "operationId": "repoGetCommitPullRequest",
         "parameters": [
           {
index 8239878d2b789cd93aa03bf1b6aecaa6cdf6c623..b7e01d4a20c94c73135f51cd417ea8c98a591f51 100644 (file)
@@ -334,3 +334,19 @@ func doAPIGetPullFiles(ctx APITestContext, pr *api.PullRequest, callback func(*t
                }
        }
 }
+
+func TestAPICommitPullRequest(t *testing.T) {
+       defer tests.PrepareTestEnv(t)()
+       repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
+       owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
+
+       ctx := NewAPITestContext(t, "user2", repo.Name, auth_model.AccessTokenScopeReadRepository)
+
+       mergedCommitSHA := "1a8823cd1a9549fde083f992f6b9b87a7ab74fb3"
+       req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/commits/%s/pull", owner.Name, repo.Name, mergedCommitSHA).AddTokenAuth(ctx.Token)
+       ctx.Session.MakeRequest(t, req, http.StatusOK)
+
+       invalidCommitSHA := "abcd1234abcd1234abcd1234abcd1234abcd1234"
+       req = NewRequestf(t, "GET", "/api/v1/repos/%s/%s/commits/%s/pull", owner.Name, repo.Name, invalidCommitSHA).AddTokenAuth(ctx.Token)
+       ctx.Session.MakeRequest(t, req, http.StatusNotFound)
+}