Skip to content

Commit e24f97d

Browse files
committed
Add TEST for API ListReleases
1 parent 515e3a6 commit e24f97d

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

integrations/api_releases_test.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package integrations
77
import (
88
"fmt"
99
"net/http"
10+
"net/url"
1011
"testing"
1112

1213
"code.gitea.io/gitea/models"
@@ -16,6 +17,58 @@ import (
1617
"github.com/stretchr/testify/assert"
1718
)
1819

20+
func TestAPIListReleases(t *testing.T) {
21+
defer prepareTestEnv(t)()
22+
23+
repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
24+
user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
25+
session := loginUser(t, user2.LowerName)
26+
token := getTokenForLoggedInUser(t, session)
27+
28+
link, _ := url.Parse(fmt.Sprintf("/api/v1/repos/%s/%s/releases", user2.Name, repo.Name))
29+
link.RawQuery = url.Values{"token": {token}}.Encode()
30+
resp := session.MakeRequest(t, NewRequest(t, "GET", link.String()), http.StatusOK)
31+
var apiReleases []*api.Release
32+
DecodeJSON(t, resp, &apiReleases)
33+
if assert.Len(t, apiReleases, 3) {
34+
for _, release := range apiReleases {
35+
switch release.ID {
36+
case 1:
37+
assert.False(t, release.IsDraft)
38+
assert.False(t, release.IsPrerelease)
39+
case 4:
40+
assert.True(t, release.IsDraft)
41+
assert.False(t, release.IsPrerelease)
42+
case 5:
43+
assert.False(t, release.IsDraft)
44+
assert.True(t, release.IsPrerelease)
45+
default:
46+
assert.NoError(t, fmt.Errorf("unexpected release: %v", release))
47+
}
48+
}
49+
}
50+
51+
// test filter
52+
testFilterByLen := func(auth bool, query url.Values, expectedLength int, msgAndArgs ...string) {
53+
link.RawQuery = query.Encode()
54+
if auth {
55+
query.Set("token", token)
56+
resp = session.MakeRequest(t, NewRequest(t, "GET", link.String()), http.StatusOK)
57+
} else {
58+
resp = MakeRequest(t, NewRequest(t, "GET", link.String()), http.StatusOK)
59+
}
60+
DecodeJSON(t, resp, &apiReleases)
61+
assert.Len(t, apiReleases, expectedLength, msgAndArgs)
62+
}
63+
64+
testFilterByLen(false, url.Values{"draft": {"true"}}, 0, "anon should not see drafts")
65+
testFilterByLen(true, url.Values{"draft": {"true"}}, 1, "repo owner should see drafts")
66+
testFilterByLen(true, url.Values{"draft": {"false"}}, 2, "exclude drafts")
67+
testFilterByLen(true, url.Values{"draft": {"false"}, "pre-release": {"false"}}, 1, "exclude drafts and pre-releases")
68+
testFilterByLen(true, url.Values{"pre-release": {"true"}}, 1, "only get pre-release")
69+
testFilterByLen(true, url.Values{"draft": {"true"}, "pre-release": {"true"}}, 0, "there is no pre-release draft")
70+
}
71+
1972
func createNewReleaseUsingAPI(t *testing.T, session *TestSession, token string, owner *models.User, repo *models.Repository, name, target, title, desc string) *api.Release {
2073
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/releases?token=%s",
2174
owner.Name, repo.Name, token)

0 commit comments

Comments
 (0)