From e197fc770233207570d2e37144d0c3dddcb01ef3 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Thu, 13 Apr 2023 05:25:39 +0000 Subject: [PATCH 1/3] add test --- tests/integration/api_org_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/integration/api_org_test.go b/tests/integration/api_org_test.go index 84166861a727e..e81650d0a85b5 100644 --- a/tests/integration/api_org_test.go +++ b/tests/integration/api_org_test.go @@ -11,6 +11,10 @@ import ( "testing" auth_model "code.gitea.io/gitea/models/auth" + "code.gitea.io/gitea/models/db" + org_model "code.gitea.io/gitea/models/organization" + "code.gitea.io/gitea/models/perm" + unit_model "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unittest" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/setting" @@ -51,6 +55,22 @@ func TestAPIOrgCreate(t *testing.T) { FullName: org.FullName, }) + // Check owner team permission + ownerTeam, _ := org_model.GetOwnerTeam(db.DefaultContext, apiOrg.ID) + + for _, ut := range unit_model.AllRepoUnitTypes { + // WIP: need to confirm + if ut == unit_model.TypeExternalTracker || ut == unit_model.TypeExternalWiki { + continue + } + unittest.AssertExistsAndLoadBean(t, &org_model.TeamUnit{ + OrgID: apiOrg.ID, + TeamID: ownerTeam.ID, + Type: ut, + AccessMode: perm.AccessModeOwner, + }) + } + req = NewRequestf(t, "GET", "/api/v1/orgs/%s?token=%s", org.UserName, token) resp = MakeRequest(t, req, http.StatusOK) DecodeJSON(t, resp, &apiOrg) From 78fd2c2422ef2d1b9696fbf38418b630b2e9440c Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Thu, 13 Apr 2023 06:16:17 +0000 Subject: [PATCH 2/3] fix owner team permission --- models/organization/org.go | 6 +++++- tests/integration/api_org_test.go | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/models/organization/org.go b/models/organization/org.go index 53b020d7048d1..30b76fb1a0633 100644 --- a/models/organization/org.go +++ b/models/organization/org.go @@ -342,11 +342,15 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) { // insert units for team units := make([]TeamUnit, 0, len(unit.AllRepoUnitTypes)) for _, tp := range unit.AllRepoUnitTypes { + up := perm.AccessModeOwner + if tp == unit.TypeExternalTracker || tp == unit.TypeExternalWiki { + up = perm.AccessModeRead + } units = append(units, TeamUnit{ OrgID: org.ID, TeamID: t.ID, Type: tp, - AccessMode: perm.AccessModeOwner, + AccessMode: up, }) } diff --git a/tests/integration/api_org_test.go b/tests/integration/api_org_test.go index e81650d0a85b5..65c1132c843e6 100644 --- a/tests/integration/api_org_test.go +++ b/tests/integration/api_org_test.go @@ -60,14 +60,15 @@ func TestAPIOrgCreate(t *testing.T) { for _, ut := range unit_model.AllRepoUnitTypes { // WIP: need to confirm + up := perm.AccessModeOwner if ut == unit_model.TypeExternalTracker || ut == unit_model.TypeExternalWiki { - continue + up = perm.AccessModeRead } unittest.AssertExistsAndLoadBean(t, &org_model.TeamUnit{ OrgID: apiOrg.ID, TeamID: ownerTeam.ID, Type: ut, - AccessMode: perm.AccessModeOwner, + AccessMode: up, }) } From ab0759490ec48b1af20715344c629acb184a2f6d Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 14 Apr 2023 00:38:14 +0000 Subject: [PATCH 3/3] remove wip --- tests/integration/api_org_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration/api_org_test.go b/tests/integration/api_org_test.go index 65c1132c843e6..3d1c3b2494ca8 100644 --- a/tests/integration/api_org_test.go +++ b/tests/integration/api_org_test.go @@ -59,7 +59,6 @@ func TestAPIOrgCreate(t *testing.T) { ownerTeam, _ := org_model.GetOwnerTeam(db.DefaultContext, apiOrg.ID) for _, ut := range unit_model.AllRepoUnitTypes { - // WIP: need to confirm up := perm.AccessModeOwner if ut == unit_model.TypeExternalTracker || ut == unit_model.TypeExternalWiki { up = perm.AccessModeRead