forked from forgejo/forgejo
API: Get release by tags endpoint (#12932)
Get a release based on a tag name (for which a release exists). Based on: https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name Co-authored-by: 赵智超 <1012112796@qq.com> Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
parent
d71eaacbf2
commit
34d9cb335c
4 changed files with 140 additions and 0 deletions
|
@ -7,6 +7,7 @@ package integrations
|
|||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
|
@ -120,3 +121,36 @@ func TestAPICreateReleaseToDefaultBranchOnExistingTag(t *testing.T) {
|
|||
|
||||
createNewReleaseUsingAPI(t, session, token, owner, repo, "v0.0.1", "", "v0.0.1", "test")
|
||||
}
|
||||
|
||||
func TestAPIGetReleaseByTag(t *testing.T) {
|
||||
defer prepareTestEnv(t)()
|
||||
|
||||
repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
|
||||
owner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User)
|
||||
session := loginUser(t, owner.LowerName)
|
||||
|
||||
tag := "v1.1"
|
||||
|
||||
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/%s/",
|
||||
owner.Name, repo.Name, tag)
|
||||
|
||||
req := NewRequestf(t, "GET", urlStr)
|
||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
var release *api.Release
|
||||
DecodeJSON(t, resp, &release)
|
||||
|
||||
assert.Equal(t, "testing-release", release.Title)
|
||||
|
||||
nonexistingtag := "nonexistingtag"
|
||||
|
||||
urlStr = fmt.Sprintf("/api/v1/repos/%s/%s/releases/tags/%s/",
|
||||
owner.Name, repo.Name, nonexistingtag)
|
||||
|
||||
req = NewRequestf(t, "GET", urlStr)
|
||||
resp = session.MakeRequest(t, req, http.StatusNotFound)
|
||||
|
||||
var err *api.APIError
|
||||
DecodeJSON(t, resp, &err)
|
||||
assert.True(t, strings.HasPrefix(err.Message, "release tag does not exist"))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue