2019-05-30 20:57:55 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-05-30 20:57:55 +03:00
2022-09-02 22:18:23 +03:00
package integration
2019-05-30 20:57:55 +03:00
import (
"net/http"
"net/url"
"strings"
"testing"
2023-01-18 00:46:03 +03:00
auth_model "code.gitea.io/gitea/models/auth"
2021-11-16 11:53:21 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2019-05-30 20:57:55 +03:00
api "code.gitea.io/gitea/modules/structs"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2019-05-30 20:57:55 +03:00
"github.com/stretchr/testify/assert"
)
func TestAPIAdminOrgCreate ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
session := loginUser ( t , "user1" )
2023-01-18 00:46:03 +03:00
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeSudo )
2019-05-30 20:57:55 +03:00
2022-01-20 20:46:10 +03:00
org := api . CreateOrgOption {
2019-05-30 20:57:55 +03:00
UserName : "user2_org" ,
FullName : "User2's organization" ,
Description : "This organization created by admin for user2" ,
Website : "https://try.gitea.io" ,
Location : "Shanghai" ,
Visibility : "private" ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/admin/users/user2/orgs?token=" + token , & org )
2022-12-02 06:39:42 +03:00
resp := MakeRequest ( t , req , http . StatusCreated )
2019-05-30 20:57:55 +03:00
var apiOrg api . Organization
DecodeJSON ( t , resp , & apiOrg )
2022-09-29 06:27:33 +03:00
assert . Equal ( t , org . UserName , apiOrg . Name )
2019-05-30 20:57:55 +03:00
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 )
2021-11-24 12:49:20 +03:00
unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2019-05-30 20:57:55 +03:00
Name : org . UserName ,
LowerName : strings . ToLower ( org . UserName ) ,
FullName : org . FullName ,
} )
} )
}
func TestAPIAdminOrgCreateBadVisibility ( t * testing . T ) {
onGiteaRun ( t , func ( * testing . T , * url . URL ) {
session := loginUser ( t , "user1" )
2023-01-18 00:46:03 +03:00
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeSudo )
2019-05-30 20:57:55 +03:00
2022-01-20 20:46:10 +03:00
org := api . CreateOrgOption {
2019-05-30 20:57:55 +03:00
UserName : "user2_org" ,
FullName : "User2's organization" ,
Description : "This organization created by admin for user2" ,
Website : "https://try.gitea.io" ,
Location : "Shanghai" ,
Visibility : "notvalid" ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/admin/users/user2/orgs?token=" + token , & org )
2022-12-02 06:39:42 +03:00
MakeRequest ( t , req , http . StatusUnprocessableEntity )
2019-05-30 20:57:55 +03:00
} )
}
func TestAPIAdminOrgCreateNotAdmin ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2019-05-30 20:57:55 +03:00
nonAdminUsername := "user2"
session := loginUser ( t , nonAdminUsername )
token := getTokenForLoggedInUser ( t , session )
2022-01-20 20:46:10 +03:00
org := api . CreateOrgOption {
2019-05-30 20:57:55 +03:00
UserName : "user2_org" ,
FullName : "User2's organization" ,
Description : "This organization created by admin for user2" ,
Website : "https://try.gitea.io" ,
Location : "Shanghai" ,
Visibility : "public" ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/admin/users/user2/orgs?token=" + token , & org )
2022-12-02 06:39:42 +03:00
MakeRequest ( t , req , http . StatusForbidden )
2019-05-30 20:57:55 +03:00
}