2022-10-17 18:23:27 +02:00
// Copyright 2022 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2022-10-17 18:23:27 +02:00
package integration
import (
"fmt"
"net/http"
"testing"
2023-01-17 16:46:03 -05:00
auth_model "code.gitea.io/gitea/models/auth"
2022-10-17 18:23:27 +02:00
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 )
2023-01-17 16:46:03 -05:00
tokenWithRepoScope := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeRepo )
2022-10-17 18:23:27 +02:00
t . Run ( "Watch" , func ( t * testing . T ) {
defer tests . PrintCurrentTest ( t ) ( )
2023-01-17 16:46:03 -05:00
req := NewRequest ( t , "PUT" , fmt . Sprintf ( "/api/v1/repos/%s/subscription?token=%s" , repo , tokenWithRepoScope ) )
2022-10-17 18:23:27 +02:00
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 ) ( )
2023-01-17 16:46:03 -05:00
req := NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/user/subscriptions?token=%s" , tokenWithRepoScope ) )
2022-10-17 18:23:27 +02:00
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 ) ( )
2023-01-17 16:46:03 -05:00
req := NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/repos/%s/subscription?token=%s" , repo , tokenWithRepoScope ) )
2022-10-17 18:23:27 +02:00
MakeRequest ( t , req , http . StatusOK )
2023-01-17 16:46:03 -05:00
req = NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/repos/%s/subscription?token=%s" , repo + "notexisting" , tokenWithRepoScope ) )
2022-10-17 18:23:27 +02:00
MakeRequest ( t , req , http . StatusNotFound )
} )
t . Run ( "Unwatch" , func ( t * testing . T ) {
defer tests . PrintCurrentTest ( t ) ( )
2023-01-17 16:46:03 -05:00
req := NewRequest ( t , "DELETE" , fmt . Sprintf ( "/api/v1/repos/%s/subscription?token=%s" , repo , tokenWithRepoScope ) )
2022-10-17 18:23:27 +02:00
MakeRequest ( t , req , http . StatusNoContent )
} )
}