@ -6,7 +6,6 @@ package integration
import (
"fmt"
"net/http"
"net/url"
"strings"
"testing"
@ -19,13 +18,14 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/test"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
)
func TestAPIOrgCreate ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
func TestAPIOrgCreateRename ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
token := getUserToken ( t , "user1" , auth_model . AccessTokenScopeWriteOrganization )
org := api . CreateOrgOption {
@ -36,8 +36,7 @@ func TestAPIOrgCreate(t *testing.T) {
Location : "Shanghai" ,
Visibility : "limited" ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/orgs" , & org ) .
AddTokenAuth ( token )
req := NewRequestWithJSON ( t , "POST" , "/api/v1/orgs" , & org ) . AddTokenAuth ( token )
resp := MakeRequest ( t , req , http . StatusCreated )
var apiOrg api . Organization
@ -56,9 +55,15 @@ func TestAPIOrgCreate(t *testing.T) {
FullName : org . FullName ,
} )
// check org name
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s" , org . UserName ) . AddTokenAuth ( token )
resp = MakeRequest ( t , req , http . StatusOK )
DecodeJSON ( t , resp , & apiOrg )
assert . EqualValues ( t , org . UserName , apiOrg . Name )
t . Run ( "CheckPermission" , func ( t * testing . T ) {
// Check owner team permission
ownerTeam , _ := org_model . GetOwnerTeam ( db . DefaultContext , apiOrg . ID )
for _ , ut := range unit_model . AllRepoUnitTypes {
up := perm . AccessModeOwner
if ut == unit_model . TypeExternalTracker || ut == unit_model . TypeExternalWiki {
@ -71,37 +76,42 @@ func TestAPIOrgCreate(t *testing.T) {
AccessMode : up ,
} )
}
} )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s" , org . UserName ) .
AddTokenAuth ( token )
t . Run ( "CheckMembers" , func ( t * testing . T ) {
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/members" , org . UserName ) . AddTokenAuth ( token )
resp = MakeRequest ( t , req , http . StatusOK )
DecodeJSON ( t , resp , & apiOrg )
assert . EqualValues ( t , org . UserName , apiOrg . Name )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/repos" , org . UserName ) .
AddTokenAuth ( token )
resp = MakeRequest ( t , req , http . StatusOK )
// user1 on this org is public
var users [ ] * api . User
DecodeJSON ( t , resp , & users )
assert . Len ( t , users , 1 )
assert . EqualValues ( t , "user1" , users [ 0 ] . UserName )
} )
t . Run ( "RenameOrg" , func ( t * testing . T ) {
req = NewRequestWithJSON ( t , "POST" , "/api/v1/orgs/user1_org/rename" , & api . RenameOrgOption {
NewName : "renamed_org" ,
} ) . AddTokenAuth ( token )
MakeRequest ( t , req , http . StatusNoContent )
unittest . AssertExistsAndLoadBean ( t , & org_model . Organization { Name : "renamed_org" } )
org . UserName = "renamed_org" // update the variable so the following tests could still use it
} )
t . Run ( "ListRepos" , func ( t * testing . T ) {
// FIXME: this test is wrong, there is no repository at all, so the for-loop is empty
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/repos" , org . UserName ) . AddTokenAuth ( token )
resp = MakeRequest ( t , req , http . StatusOK )
var repos [ ] * api . Repository
DecodeJSON ( t , resp , & repos )
for _ , repo := range repos {
assert . False ( t , repo . Private )
}
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/members" , org . UserName ) .
AddTokenAuth ( token )
resp = MakeRequest ( t , req , http . StatusOK )
// user1 on this org is public
var users [ ] * api . User
DecodeJSON ( t , resp , & users )
assert . Len ( t , users , 1 )
assert . EqualValues ( t , "user1" , users [ 0 ] . UserName )
} )
}
func TestAPIOrgEdit ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
defer tests . PrepareTestEnv ( t ) ( )
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeWriteOrganization )
@ -125,11 +135,10 @@ func TestAPIOrgEdit(t *testing.T) {
assert . Equal ( t , org . Website , apiOrg . Website )
assert . Equal ( t , org . Location , apiOrg . Location )
assert . Equal ( t , org . Visibility , apiOrg . Visibility )
} )
}
func TestAPIOrgEditBadVisibility ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
defer tests . PrepareTestEnv ( t ) ( )
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeWriteOrganization )
@ -143,15 +152,11 @@ func TestAPIOrgEditBadVisibility(t *testing.T) {
req := NewRequestWithJSON ( t , "PATCH" , "/api/v1/orgs/org3" , & org ) .
AddTokenAuth ( token )
MakeRequest ( t , req , http . StatusUnprocessableEntity )
} )
}
func TestAPIOrgDeny ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
setting . Service . RequireSignInView = true
defer func ( ) {
setting . Service . RequireSignInView = false
} ( )
defer tests . PrepareTestEnv ( t ) ( )
defer test . MockVariableValue ( & setting . Service . RequireSignInView , true ) ( )
orgName := "user1_org"
req := NewRequestf ( t , "GET" , "/api/v1/orgs/%s" , orgName )
@ -162,12 +167,10 @@ func TestAPIOrgDeny(t *testing.T) {
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/members" , orgName )
MakeRequest ( t , req , http . StatusNotFound )
} )
}
func TestAPIGetAll ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
token := getUserToken ( t , "user1" , auth_model . AccessTokenScopeReadOrganization )
// accessing with a token will return all orgs
@ -192,7 +195,7 @@ func TestAPIGetAll(t *testing.T) {
}
func TestAPIOrgSearchEmptyTeam ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
defer tests . PrepareTestEnv ( t ) ( )
token := getUserToken ( t , "user1" , auth_model . AccessTokenScopeWriteOrganization )
orgName := "org_with_empty_team"
@ -224,5 +227,4 @@ func TestAPIOrgSearchEmptyTeam(t *testing.T) {
if assert . Len ( t , data . Data , 1 ) {
assert . EqualValues ( t , "Empty" , data . Data [ 0 ] . Name )
}
} )
}