2018-11-20 20:31:30 +03:00
// Copyright 2018 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"
2019-04-24 19:16:14 +03:00
"net/url"
2018-11-20 20:31:30 +03:00
"strings"
"testing"
"code.gitea.io/gitea/models"
2019-04-24 19:16:14 +03:00
"code.gitea.io/gitea/modules/setting"
2019-05-11 13:21:34 +03:00
api "code.gitea.io/gitea/modules/structs"
2018-11-20 20:31:30 +03:00
"github.com/stretchr/testify/assert"
)
2019-05-30 20:57:55 +03:00
func TestAPIOrgCreate ( t * testing . T ) {
2019-04-24 19:16:14 +03:00
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session )
var org = api . CreateOrgOption {
UserName : "user1_org" ,
FullName : "User1's organization" ,
Description : "This organization created by user1" ,
Website : "https://try.gitea.io" ,
Location : "Shanghai" ,
2019-05-30 20:57:55 +03:00
Visibility : "limited" ,
2019-04-24 19:16:14 +03:00
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/orgs?token=" + token , & org )
resp := session . MakeRequest ( t , req , http . StatusCreated )
var apiOrg api . Organization
DecodeJSON ( t , resp , & apiOrg )
assert . Equal ( t , org . UserName , apiOrg . UserName )
assert . Equal ( t , org . FullName , apiOrg . FullName )
assert . Equal ( t , org . Description , apiOrg . Description )
assert . Equal ( t , org . Website , apiOrg . Website )
assert . Equal ( t , org . Location , apiOrg . Location )
2019-05-30 20:57:55 +03:00
assert . Equal ( t , org . Visibility , apiOrg . Visibility )
2019-04-24 19:16:14 +03:00
models . AssertExistsAndLoadBean ( t , & models . User {
Name : org . UserName ,
LowerName : strings . ToLower ( org . UserName ) ,
FullName : org . FullName ,
} )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s" , org . UserName )
resp = session . MakeRequest ( t , req , http . StatusOK )
DecodeJSON ( t , resp , & apiOrg )
assert . EqualValues ( t , org . UserName , apiOrg . UserName )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/repos" , org . UserName )
resp = session . 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 )
resp = session . MakeRequest ( t , req , http . StatusOK )
// user1 on this org is public
var users [ ] * api . User
DecodeJSON ( t , resp , & users )
2021-06-07 08:27:09 +03:00
assert . Len ( t , users , 1 )
2019-04-24 19:16:14 +03:00
assert . EqualValues ( t , "user1" , users [ 0 ] . UserName )
} )
}
2019-05-30 20:57:55 +03:00
func TestAPIOrgEdit ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session )
var org = api . EditOrgOption {
FullName : "User3 organization new full name" ,
Description : "A new description" ,
Website : "https://try.gitea.io/new" ,
Location : "Beijing" ,
Visibility : "private" ,
}
req := NewRequestWithJSON ( t , "PATCH" , "/api/v1/orgs/user3?token=" + token , & org )
resp := session . MakeRequest ( t , req , http . StatusOK )
var apiOrg api . Organization
DecodeJSON ( t , resp , & apiOrg )
assert . Equal ( t , "user3" , apiOrg . UserName )
assert . Equal ( t , org . FullName , apiOrg . FullName )
assert . Equal ( t , org . Description , apiOrg . Description )
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 ) {
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session )
var org = api . EditOrgOption {
FullName : "User3 organization new full name" ,
Description : "A new description" ,
Website : "https://try.gitea.io/new" ,
Location : "Beijing" ,
Visibility : "badvisibility" ,
}
req := NewRequestWithJSON ( t , "PATCH" , "/api/v1/orgs/user3?token=" + token , & org )
session . MakeRequest ( t , req , http . StatusUnprocessableEntity )
} )
}
2019-04-24 19:16:14 +03:00
func TestAPIOrgDeny ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
setting . Service . RequireSignInView = true
defer func ( ) {
setting . Service . RequireSignInView = false
} ( )
var orgName = "user1_org"
req := NewRequestf ( t , "GET" , "/api/v1/orgs/%s" , orgName )
MakeRequest ( t , req , http . StatusNotFound )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/repos" , orgName )
MakeRequest ( t , req , http . StatusNotFound )
req = NewRequestf ( t , "GET" , "/api/v1/orgs/%s/members" , orgName )
MakeRequest ( t , req , http . StatusNotFound )
2018-11-20 20:31:30 +03:00
} )
}
2020-01-12 18:43:44 +03:00
func TestAPIGetAll ( t * testing . T ) {
defer prepareTestEnv ( t ) ( )
req := NewRequestf ( t , "GET" , "/api/v1/orgs" )
resp := MakeRequest ( t , req , http . StatusOK )
var apiOrgList [ ] * api . Organization
DecodeJSON ( t , resp , & apiOrgList )
assert . Len ( t , apiOrgList , 7 )
assert . Equal ( t , "org25" , apiOrgList [ 0 ] . FullName )
assert . Equal ( t , "public" , apiOrgList [ 0 ] . Visibility )
}