Add some api integration tests (#18872)
depends on #18871 Added some api integration tests to help testing of #18798. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>tokarchuk/v1.18
parent
18622a0705
commit
a577214760
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,38 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package integration |
||||||
|
|
||||||
|
import ( |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
"code.gitea.io/gitea/tests" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestFeed(t *testing.T) { |
||||||
|
t.Run("User", func(t *testing.T) { |
||||||
|
t.Run("Atom", func(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", "/user2.atom") |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
data := resp.Body.String() |
||||||
|
assert.Contains(t, data, `<feed xmlns="http://www.w3.org/2005/Atom"`) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("RSS", func(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", "/user2.rss") |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
data := resp.Body.String() |
||||||
|
assert.Contains(t, data, `<rss version="2.0"`) |
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,111 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package integration |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
api "code.gitea.io/gitea/modules/structs" |
||||||
|
"code.gitea.io/gitea/tests" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestAPIFollow(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
user1 := "user4" |
||||||
|
user2 := "user1" |
||||||
|
|
||||||
|
session1 := loginUser(t, user1) |
||||||
|
token1 := getTokenForLoggedInUser(t, session1) |
||||||
|
|
||||||
|
session2 := loginUser(t, user2) |
||||||
|
token2 := getTokenForLoggedInUser(t, session2) |
||||||
|
|
||||||
|
t.Run("Follow", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("ListFollowing", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following?token=%s", user2, token2)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var users []api.User |
||||||
|
DecodeJSON(t, resp, &users) |
||||||
|
assert.Len(t, users, 1) |
||||||
|
assert.Equal(t, user1, users[0].UserName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("ListMyFollowing", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following?token=%s", token2)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var users []api.User |
||||||
|
DecodeJSON(t, resp, &users) |
||||||
|
assert.Len(t, users, 1) |
||||||
|
assert.Equal(t, user1, users[0].UserName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("ListFollowers", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/followers?token=%s", user1, token1)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var users []api.User |
||||||
|
DecodeJSON(t, resp, &users) |
||||||
|
assert.Len(t, users, 1) |
||||||
|
assert.Equal(t, user2, users[0].UserName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("ListMyFollowers", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/followers?token=%s", token1)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var users []api.User |
||||||
|
DecodeJSON(t, resp, &users) |
||||||
|
assert.Len(t, users, 1) |
||||||
|
assert.Equal(t, user2, users[0].UserName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("CheckFollowing", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following/%s?token=%s", user2, user1, token2)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
|
||||||
|
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following/%s?token=%s", user1, user2, token2)) |
||||||
|
MakeRequest(t, req, http.StatusNotFound) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("CheckMyFollowing", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
|
||||||
|
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user2, token1)) |
||||||
|
MakeRequest(t, req, http.StatusNotFound) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Unfollow", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package integration |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
api "code.gitea.io/gitea/modules/structs" |
||||||
|
"code.gitea.io/gitea/tests" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestAPIUserInfo(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
user := "user1" |
||||||
|
user2 := "user31" |
||||||
|
|
||||||
|
session := loginUser(t, user) |
||||||
|
token := getTokenForLoggedInUser(t, session) |
||||||
|
|
||||||
|
t.Run("GetInfo", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s?token=%s", user2, token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var u api.User |
||||||
|
DecodeJSON(t, resp, &u) |
||||||
|
assert.Equal(t, user2, u.UserName) |
||||||
|
|
||||||
|
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", user2)) |
||||||
|
MakeRequest(t, req, http.StatusNotFound) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("GetAuthenticatedUser", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user?token=%s", token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
var u api.User |
||||||
|
DecodeJSON(t, resp, &u) |
||||||
|
assert.Equal(t, user, u.UserName) |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package integration |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
api "code.gitea.io/gitea/modules/structs" |
||||||
|
"code.gitea.io/gitea/tests" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestAPIStar(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
user := "user1" |
||||||
|
repo := "user2/repo1" |
||||||
|
|
||||||
|
session := loginUser(t, user) |
||||||
|
token := getTokenForLoggedInUser(t, session) |
||||||
|
|
||||||
|
t.Run("Star", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("GetStarredRepos", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/starred?token=%s", user, token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) |
||||||
|
|
||||||
|
var repos []api.Repository |
||||||
|
DecodeJSON(t, resp, &repos) |
||||||
|
assert.Len(t, repos, 1) |
||||||
|
assert.Equal(t, repo, repos[0].FullName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("GetMyStarredRepos", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred?token=%s", token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) |
||||||
|
|
||||||
|
var repos []api.Repository |
||||||
|
DecodeJSON(t, resp, &repos) |
||||||
|
assert.Len(t, repos, 1) |
||||||
|
assert.Equal(t, repo, repos[0].FullName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("IsStarring", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
|
||||||
|
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo+"notexisting", token)) |
||||||
|
MakeRequest(t, req, http.StatusNotFound) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Unstar", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package integration |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
api "code.gitea.io/gitea/modules/structs" |
||||||
|
"code.gitea.io/gitea/tests" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert" |
||||||
|
) |
||||||
|
|
||||||
|
func TestAPIWatch(t *testing.T) { |
||||||
|
defer tests.PrepareTestEnv(t)() |
||||||
|
|
||||||
|
user := "user1" |
||||||
|
repo := "user2/repo1" |
||||||
|
|
||||||
|
session := loginUser(t, user) |
||||||
|
token := getTokenForLoggedInUser(t, session) |
||||||
|
|
||||||
|
t.Run("Watch", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusOK) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("GetWatchedRepos", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/subscriptions?token=%s", user, token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) |
||||||
|
|
||||||
|
var repos []api.Repository |
||||||
|
DecodeJSON(t, resp, &repos) |
||||||
|
assert.Len(t, repos, 1) |
||||||
|
assert.Equal(t, repo, repos[0].FullName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("GetMyWatchedRepos", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/subscriptions?token=%s", token)) |
||||||
|
resp := MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) |
||||||
|
|
||||||
|
var repos []api.Repository |
||||||
|
DecodeJSON(t, resp, &repos) |
||||||
|
assert.Len(t, repos, 1) |
||||||
|
assert.Equal(t, repo, repos[0].FullName) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("IsWatching", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusOK) |
||||||
|
|
||||||
|
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo+"notexisting", token)) |
||||||
|
MakeRequest(t, req, http.StatusNotFound) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Unwatch", func(t *testing.T) { |
||||||
|
defer tests.PrintCurrentTest(t)() |
||||||
|
|
||||||
|
req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token)) |
||||||
|
MakeRequest(t, req, http.StatusNoContent) |
||||||
|
}) |
||||||
|
} |
Loading…
Reference in new issue