2017-04-29 12:33:25 +08:00
// Copyright 2017 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 integrations
import (
"net/http"
"testing"
2017-07-10 07:07:39 -04:00
"code.gitea.io/gitea/models"
api "code.gitea.io/sdk/gitea"
"github.com/stretchr/testify/assert"
2017-04-29 12:33:25 +08:00
)
func TestAPIUserReposNotLogin ( t * testing . T ) {
2017-06-25 05:34:30 -04:00
prepareTestEnv ( t )
2017-07-10 07:07:39 -04:00
user := models . AssertExistsAndLoadBean ( t , & models . User { ID : 2 } ) . ( * models . User )
req := NewRequestf ( t , "GET" , "/api/v1/users/%s/repos" , user . Name )
resp := MakeRequest ( t , req , http . StatusOK )
2017-04-29 12:33:25 +08:00
2017-07-10 07:07:39 -04:00
var apiRepos [ ] api . Repository
DecodeJSON ( t , resp , & apiRepos )
expectedLen := models . GetCount ( t , models . Repository { OwnerID : user . ID } ,
models . Cond ( "is_private = ?" , false ) )
assert . Len ( t , apiRepos , expectedLen )
for _ , repo := range apiRepos {
assert . EqualValues ( t , user . ID , repo . Owner . ID )
assert . False ( t , repo . Private )
}
}
2017-04-30 13:08:09 +08:00
func TestAPISearchRepoNotLogin ( t * testing . T ) {
2017-06-25 05:34:30 -04:00
prepareTestEnv ( t )
2017-07-10 07:07:39 -04:00
const keyword = "test"
req := NewRequestf ( t , "GET" , "/api/v1/repos/search?q=%s" , keyword )
resp := MakeRequest ( t , req , http . StatusOK )
2017-04-30 13:08:09 +08:00
2017-09-20 11:24:38 +02:00
var body api . SearchResults
2017-07-10 07:07:39 -04:00
DecodeJSON ( t , resp , & body )
2017-09-20 11:24:38 +02:00
assert . NotEmpty ( t , body . Data )
for _ , repo := range body . Data {
assert . Contains ( t , repo . Name , keyword )
assert . False ( t , repo . Private )
2017-07-10 07:07:39 -04:00
}
2017-04-30 13:08:09 +08:00
}
2017-07-11 21:23:41 -04:00
func TestAPIViewRepo ( t * testing . T ) {
prepareTestEnv ( t )
req := NewRequest ( t , "GET" , "/api/v1/repos/user2/repo1" )
resp := MakeRequest ( t , req , http . StatusOK )
var repo api . Repository
DecodeJSON ( t , resp , & repo )
assert . EqualValues ( t , 1 , repo . ID )
assert . EqualValues ( t , "repo1" , repo . Name )
}
2017-07-13 04:14:15 -07:00
func TestAPIOrgRepos ( t * testing . T ) {
prepareTestEnv ( t )
user := models . AssertExistsAndLoadBean ( t , & models . User { ID : 2 } ) . ( * models . User )
// User3 is an Org. Check their repos.
sourceOrg := models . AssertExistsAndLoadBean ( t , & models . User { ID : 3 } ) . ( * models . User )
// Login as User2.
session := loginUser ( t , user . Name )
req := NewRequestf ( t , "GET" , "/api/v1/orgs/%s/repos" , sourceOrg . Name )
resp := session . MakeRequest ( t , req , http . StatusOK )
var apiRepos [ ] * api . Repository
DecodeJSON ( t , resp , & apiRepos )
expectedLen := models . GetCount ( t , models . Repository { OwnerID : sourceOrg . ID } ,
models . Cond ( "is_private = ?" , false ) )
assert . Len ( t , apiRepos , expectedLen )
for _ , repo := range apiRepos {
assert . False ( t , repo . Private )
}
}
2017-07-29 18:13:33 -07:00
func TestAPIGetRepoByIDUnauthorized ( t * testing . T ) {
prepareTestEnv ( t )
user := models . AssertExistsAndLoadBean ( t , & models . User { ID : 4 } ) . ( * models . User )
sess := loginUser ( t , user . Name )
req := NewRequestf ( t , "GET" , "/api/v1/repositories/2" )
sess . MakeRequest ( t , req , http . StatusNotFound )
}