@ -11,6 +11,7 @@ import (
"net/http/httptest"
"testing"
"code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db"
git_model "code.gitea.io/gitea/models/git"
repo_model "code.gitea.io/gitea/models/repo"
@ -40,6 +41,31 @@ func storeObjectInRepo(t *testing.T, repositoryID int64, content *[]byte) string
return pointer . Oid
}
func storeAndGetLfsToken ( t * testing . T , ts auth . AccessTokenScope , content * [ ] byte , extraHeader * http . Header , expectedStatus int ) * httptest . ResponseRecorder {
repo , err := repo_model . GetRepositoryByOwnerAndName ( db . DefaultContext , "user2" , "repo1" )
assert . NoError ( t , err )
oid := storeObjectInRepo ( t , repo . ID , content )
defer git_model . RemoveLFSMetaObjectByOid ( db . DefaultContext , repo . ID , oid )
token := getUserToken ( t , "user2" , ts )
// Request OID
req := NewRequest ( t , "GET" , "/user2/repo1.git/info/lfs/objects/" + oid + "/test" )
req . Header . Set ( "Accept-Encoding" , "gzip" )
req . SetBasicAuth ( "user2" , token )
if extraHeader != nil {
for key , values := range * extraHeader {
for _ , value := range values {
req . Header . Add ( key , value )
}
}
}
resp := MakeRequest ( t , req , expectedStatus )
return resp
}
func storeAndGetLfs ( t * testing . T , content * [ ] byte , extraHeader * http . Header , expectedStatus int ) * httptest . ResponseRecorder {
repo , err := repo_model . GetRepositoryByOwnerAndName ( db . DefaultContext , "user2" , "repo1" )
assert . NoError ( t , err )
@ -89,6 +115,21 @@ func TestGetLFSSmall(t *testing.T) {
checkResponseTestContentEncoding ( t , & content , resp , false )
}
func TestGetLFSSmallToken ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
content := [ ] byte ( "A very small file\n" )
resp := storeAndGetLfsToken ( t , auth . AccessTokenScopePublicRepo , & content , nil , http . StatusOK )
checkResponseTestContentEncoding ( t , & content , resp , false )
}
func TestGetLFSSmallTokenFail ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
content := [ ] byte ( "A very small file\n" )
storeAndGetLfsToken ( t , auth . AccessTokenScopeNotification , & content , nil , http . StatusForbidden )
}
func TestGetLFSLarge ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
content := make ( [ ] byte , web . GzipMinSize * 10 )