code.gitea.io/gitea@v1.22.3/tests/integration/api_admin_org_test.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package integration 5 6 import ( 7 "net/http" 8 "net/url" 9 "strings" 10 "testing" 11 12 auth_model "code.gitea.io/gitea/models/auth" 13 "code.gitea.io/gitea/models/unittest" 14 user_model "code.gitea.io/gitea/models/user" 15 api "code.gitea.io/gitea/modules/structs" 16 "code.gitea.io/gitea/tests" 17 18 "github.com/stretchr/testify/assert" 19 ) 20 21 func TestAPIAdminOrgCreate(t *testing.T) { 22 onGiteaRun(t, func(*testing.T, *url.URL) { 23 session := loginUser(t, "user1") 24 token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin) 25 26 org := api.CreateOrgOption{ 27 UserName: "user2_org", 28 FullName: "User2's organization", 29 Description: "This organization created by admin for user2", 30 Website: "https://try.gitea.io", 31 Location: "Shanghai", 32 Visibility: "private", 33 } 34 req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org). 35 AddTokenAuth(token) 36 resp := MakeRequest(t, req, http.StatusCreated) 37 38 var apiOrg api.Organization 39 DecodeJSON(t, resp, &apiOrg) 40 41 assert.Equal(t, org.UserName, apiOrg.Name) 42 assert.Equal(t, org.FullName, apiOrg.FullName) 43 assert.Equal(t, org.Description, apiOrg.Description) 44 assert.Equal(t, org.Website, apiOrg.Website) 45 assert.Equal(t, org.Location, apiOrg.Location) 46 assert.Equal(t, org.Visibility, apiOrg.Visibility) 47 48 unittest.AssertExistsAndLoadBean(t, &user_model.User{ 49 Name: org.UserName, 50 LowerName: strings.ToLower(org.UserName), 51 FullName: org.FullName, 52 }) 53 }) 54 } 55 56 func TestAPIAdminOrgCreateBadVisibility(t *testing.T) { 57 onGiteaRun(t, func(*testing.T, *url.URL) { 58 session := loginUser(t, "user1") 59 token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin) 60 61 org := api.CreateOrgOption{ 62 UserName: "user2_org", 63 FullName: "User2's organization", 64 Description: "This organization created by admin for user2", 65 Website: "https://try.gitea.io", 66 Location: "Shanghai", 67 Visibility: "notvalid", 68 } 69 req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org). 70 AddTokenAuth(token) 71 MakeRequest(t, req, http.StatusUnprocessableEntity) 72 }) 73 } 74 75 func TestAPIAdminOrgCreateNotAdmin(t *testing.T) { 76 defer tests.PrepareTestEnv(t)() 77 nonAdminUsername := "user2" 78 session := loginUser(t, nonAdminUsername) 79 token := getTokenForLoggedInUser(t, session) 80 org := api.CreateOrgOption{ 81 UserName: "user2_org", 82 FullName: "User2's organization", 83 Description: "This organization created by admin for user2", 84 Website: "https://try.gitea.io", 85 Location: "Shanghai", 86 Visibility: "public", 87 } 88 req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org). 89 AddTokenAuth(token) 90 MakeRequest(t, req, http.StatusForbidden) 91 }