2017-04-29 07:33:25 +03: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"
2017-07-10 14:07:39 +03:00
"strings"
2017-04-29 07:33:25 +03:00
"testing"
2017-07-10 14:07:39 +03:00
"code.gitea.io/gitea/models"
api "code.gitea.io/sdk/gitea"
"github.com/stretchr/testify/assert"
2017-04-29 07:33:25 +03:00
)
func TestAPIUserReposNotLogin ( t * testing . T ) {
2017-06-25 12:34:30 +03:00
prepareTestEnv ( t )
2017-07-10 14:07:39 +03: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 07:33:25 +03:00
2017-07-10 14:07:39 +03: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 )
}
}
type searchResponseBody struct {
ok bool
data [ ] api . Repository
2017-04-29 07:33:25 +03:00
}
2017-04-30 08:08:09 +03:00
func TestAPISearchRepoNotLogin ( t * testing . T ) {
2017-06-25 12:34:30 +03:00
prepareTestEnv ( t )
2017-07-10 14:07:39 +03:00
const keyword = "test"
req := NewRequestf ( t , "GET" , "/api/v1/repos/search?q=%s" , keyword )
resp := MakeRequest ( t , req , http . StatusOK )
2017-04-30 08:08:09 +03:00
2017-07-10 14:07:39 +03:00
var body searchResponseBody
DecodeJSON ( t , resp , & body )
for _ , repo := range body . data {
assert . True ( t , strings . Contains ( repo . Name , keyword ) )
}
2017-04-30 08:08:09 +03:00
}
2017-07-12 04:23:41 +03: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 14:14:15 +03: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-30 04:13:33 +03: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 )
}