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