code.gitea.io/gitea@v1.22.3/tests/integration/api_user_star_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package integration 5 6 import ( 7 "fmt" 8 "net/http" 9 "testing" 10 11 auth_model "code.gitea.io/gitea/models/auth" 12 "code.gitea.io/gitea/models/unittest" 13 user_model "code.gitea.io/gitea/models/user" 14 api "code.gitea.io/gitea/modules/structs" 15 "code.gitea.io/gitea/tests" 16 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func TestAPIStar(t *testing.T) { 21 defer tests.PrepareTestEnv(t)() 22 23 user := "user1" 24 repo := "user2/repo1" 25 26 session := loginUser(t, user) 27 token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadUser) 28 tokenWithUserScope := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser, auth_model.AccessTokenScopeWriteRepository) 29 30 t.Run("Star", func(t *testing.T) { 31 defer tests.PrintCurrentTest(t)() 32 33 req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/starred/%s", repo)). 34 AddTokenAuth(tokenWithUserScope) 35 MakeRequest(t, req, http.StatusNoContent) 36 37 // blocked user can't star a repo 38 user34 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 34}) 39 req = NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/starred/%s", repo)). 40 AddTokenAuth(getUserToken(t, user34.Name, auth_model.AccessTokenScopeWriteRepository)) 41 MakeRequest(t, req, http.StatusForbidden) 42 }) 43 44 t.Run("GetStarredRepos", func(t *testing.T) { 45 defer tests.PrintCurrentTest(t)() 46 47 req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/starred", user)). 48 AddTokenAuth(token) 49 resp := MakeRequest(t, req, http.StatusOK) 50 51 assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) 52 53 var repos []api.Repository 54 DecodeJSON(t, resp, &repos) 55 assert.Len(t, repos, 1) 56 assert.Equal(t, repo, repos[0].FullName) 57 }) 58 59 t.Run("GetMyStarredRepos", func(t *testing.T) { 60 defer tests.PrintCurrentTest(t)() 61 62 req := NewRequest(t, "GET", "/api/v1/user/starred"). 63 AddTokenAuth(tokenWithUserScope) 64 resp := MakeRequest(t, req, http.StatusOK) 65 66 assert.Equal(t, "1", resp.Header().Get("X-Total-Count")) 67 68 var repos []api.Repository 69 DecodeJSON(t, resp, &repos) 70 assert.Len(t, repos, 1) 71 assert.Equal(t, repo, repos[0].FullName) 72 }) 73 74 t.Run("IsStarring", func(t *testing.T) { 75 defer tests.PrintCurrentTest(t)() 76 77 req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s", repo)). 78 AddTokenAuth(tokenWithUserScope) 79 MakeRequest(t, req, http.StatusNoContent) 80 81 req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s", repo+"notexisting")). 82 AddTokenAuth(tokenWithUserScope) 83 MakeRequest(t, req, http.StatusNotFound) 84 }) 85 86 t.Run("Unstar", func(t *testing.T) { 87 defer tests.PrintCurrentTest(t)() 88 89 req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/user/starred/%s", repo)). 90 AddTokenAuth(tokenWithUserScope) 91 MakeRequest(t, req, http.StatusNoContent) 92 }) 93 }