diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2022-03-29 14:29:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-29 14:29:02 +0800 |
commit | b06b9a056c0af751e576978f6ef3c914ee959b9c (patch) | |
tree | aa0d11413038baa5d47af65fd435665c698fe456 /models/org_test.go | |
parent | d4c789dfc1c341413b77a2f21fe7339982102bed (diff) | |
download | gitea-b06b9a056c0af751e576978f6ef3c914ee959b9c.tar.gz gitea-b06b9a056c0af751e576978f6ef3c914ee959b9c.zip |
Move organization related structs into sub package (#18518)
* Move organization related structs into sub package
* Fix test
* Fix lint
* Move more functions into sub packages
* Fix bug
* Fix test
* Update models/organization/team_repo.go
Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
* Apply suggestions from code review
Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
* Fix fmt
* Follow suggestion from @Gusted
* Fix test
* Fix test
* Fix bug
* Use ctx but db.DefaultContext on routers
* Fix bug
* Fix bug
* fix bug
* Update models/organization/team_user.go
* Fix bug
Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'models/org_test.go')
-rw-r--r-- | models/org_test.go | 610 |
1 files changed, 63 insertions, 547 deletions
diff --git a/models/org_test.go b/models/org_test.go index ec324cb71a..4d8831858c 100644 --- a/models/org_test.go +++ b/models/org_test.go @@ -8,176 +8,81 @@ import ( "testing" "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/models/organization" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/structs" "github.com/stretchr/testify/assert" ) -func TestUser_IsOwnedBy(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - for _, testCase := range []struct { - OrgID int64 - UserID int64 - ExpectedOwner bool - }{ - {3, 2, true}, - {3, 1, false}, - {3, 3, false}, - {3, 4, false}, - {2, 2, false}, // user2 is not an organization - {2, 3, false}, - } { - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: testCase.OrgID}).(*Organization) - isOwner, err := org.IsOwnedBy(testCase.UserID) - assert.NoError(t, err) - assert.Equal(t, testCase.ExpectedOwner, isOwner) - } -} - -func TestUser_IsOrgMember(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - for _, testCase := range []struct { - OrgID int64 - UserID int64 - ExpectedMember bool - }{ - {3, 2, true}, - {3, 4, true}, - {3, 1, false}, - {3, 3, false}, - {2, 2, false}, // user2 is not an organization - {2, 3, false}, - } { - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: testCase.OrgID}).(*Organization) - isMember, err := org.IsOrgMember(testCase.UserID) - assert.NoError(t, err) - assert.Equal(t, testCase.ExpectedMember, isMember) - } -} - -func TestUser_GetTeam(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - team, err := org.GetTeam("team1") - assert.NoError(t, err) - assert.Equal(t, org.ID, team.OrgID) - assert.Equal(t, "team1", team.LowerName) - - _, err = org.GetTeam("does not exist") - assert.True(t, IsErrTeamNotExist(err)) - - nonOrg := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 2}).(*Organization) - _, err = nonOrg.GetTeam("team") - assert.True(t, IsErrTeamNotExist(err)) -} - -func TestUser_GetOwnerTeam(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - team, err := org.GetOwnerTeam() - assert.NoError(t, err) - assert.Equal(t, org.ID, team.OrgID) - - nonOrg := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 2}).(*Organization) - _, err = nonOrg.GetOwnerTeam() - assert.True(t, IsErrTeamNotExist(err)) -} - -func TestUser_GetTeams(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - teams, err := org.LoadTeams() - assert.NoError(t, err) - if assert.Len(t, teams, 4) { - assert.Equal(t, int64(1), teams[0].ID) - assert.Equal(t, int64(2), teams[1].ID) - assert.Equal(t, int64(12), teams[2].ID) - assert.Equal(t, int64(7), teams[3].ID) - } -} - -func TestUser_GetMembers(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - members, _, err := org.GetMembers() - assert.NoError(t, err) - if assert.Len(t, members, 3) { - assert.Equal(t, int64(2), members[0].ID) - assert.Equal(t, int64(28), members[1].ID) - assert.Equal(t, int64(4), members[2].ID) - } -} - -func TestUser_AddMember(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - - // add a user that is not a member - unittest.AssertNotExistsBean(t, &OrgUser{UID: 5, OrgID: 3}) - prevNumMembers := org.NumMembers - assert.NoError(t, org.AddMember(5)) - unittest.AssertExistsAndLoadBean(t, &OrgUser{UID: 5, OrgID: 3}) - org = unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - assert.Equal(t, prevNumMembers+1, org.NumMembers) - - // add a user that is already a member - unittest.AssertExistsAndLoadBean(t, &OrgUser{UID: 4, OrgID: 3}) - prevNumMembers = org.NumMembers - assert.NoError(t, org.AddMember(4)) - unittest.AssertExistsAndLoadBean(t, &OrgUser{UID: 4, OrgID: 3}) - org = unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - assert.Equal(t, prevNumMembers, org.NumMembers) - - unittest.CheckConsistencyFor(t, &user_model.User{}) -} - func TestUser_RemoveMember(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) + org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}).(*organization.Organization) // remove a user that is a member - unittest.AssertExistsAndLoadBean(t, &OrgUser{UID: 4, OrgID: 3}) + unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{UID: 4, OrgID: 3}) prevNumMembers := org.NumMembers - assert.NoError(t, org.RemoveMember(4)) - unittest.AssertNotExistsBean(t, &OrgUser{UID: 4, OrgID: 3}) - org = unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) + assert.NoError(t, RemoveOrgUser(org.ID, 4)) + unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 4, OrgID: 3}) + org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}).(*organization.Organization) assert.Equal(t, prevNumMembers-1, org.NumMembers) // remove a user that is not a member - unittest.AssertNotExistsBean(t, &OrgUser{UID: 5, OrgID: 3}) + unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 5, OrgID: 3}) prevNumMembers = org.NumMembers - assert.NoError(t, org.RemoveMember(5)) - unittest.AssertNotExistsBean(t, &OrgUser{UID: 5, OrgID: 3}) - org = unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) + assert.NoError(t, RemoveOrgUser(org.ID, 5)) + unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 5, OrgID: 3}) + org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}).(*organization.Organization) assert.Equal(t, prevNumMembers, org.NumMembers) - unittest.CheckConsistencyFor(t, &user_model.User{}, &Team{}) + unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) +} + +func TestRemoveOrgUser(t *testing.T) { + assert.NoError(t, unittest.PrepareTestDatabase()) + testSuccess := func(orgID, userID int64) { + org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) + expectedNumMembers := org.NumMembers + if unittest.BeanExists(t, &organization.OrgUser{OrgID: orgID, UID: userID}) { + expectedNumMembers-- + } + assert.NoError(t, RemoveOrgUser(orgID, userID)) + unittest.AssertNotExistsBean(t, &organization.OrgUser{OrgID: orgID, UID: userID}) + org = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) + assert.EqualValues(t, expectedNumMembers, org.NumMembers) + } + testSuccess(3, 4) + testSuccess(3, 4) + + err := RemoveOrgUser(7, 5) + assert.Error(t, err) + assert.True(t, organization.IsErrLastOrgOwner(err)) + unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{OrgID: 7, UID: 5}) + unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) } func TestUser_RemoveOrgRepo(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) + org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3}).(*organization.Organization) repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerID: org.ID}).(*repo_model.Repository) // remove a repo that does belong to org - unittest.AssertExistsAndLoadBean(t, &TeamRepo{RepoID: repo.ID, OrgID: org.ID}) - assert.NoError(t, org.RemoveOrgRepo(repo.ID)) - unittest.AssertNotExistsBean(t, &TeamRepo{RepoID: repo.ID, OrgID: org.ID}) + unittest.AssertExistsAndLoadBean(t, &organization.TeamRepo{RepoID: repo.ID, OrgID: org.ID}) + assert.NoError(t, organization.RemoveOrgRepo(db.DefaultContext, org.ID, repo.ID)) + unittest.AssertNotExistsBean(t, &organization.TeamRepo{RepoID: repo.ID, OrgID: org.ID}) unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repo.ID}) // repo should still exist // remove a repo that does not belong to org - assert.NoError(t, org.RemoveOrgRepo(repo.ID)) - unittest.AssertNotExistsBean(t, &TeamRepo{RepoID: repo.ID, OrgID: org.ID}) + assert.NoError(t, organization.RemoveOrgRepo(db.DefaultContext, org.ID, repo.ID)) + unittest.AssertNotExistsBean(t, &organization.TeamRepo{RepoID: repo.ID, OrgID: org.ID}) - assert.NoError(t, org.RemoveOrgRepo(unittest.NonexistentID)) + assert.NoError(t, organization.RemoveOrgRepo(db.DefaultContext, org.ID, unittest.NonexistentID)) unittest.CheckConsistencyFor(t, &user_model.User{ID: org.ID}, - &Team{OrgID: org.ID}, + &organization.Team{OrgID: org.ID}, &repo_model.Repository{ID: repo.ID}) } @@ -187,18 +92,18 @@ func TestCreateOrganization(t *testing.T) { owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) const newOrgName = "neworg" - org := &Organization{ + org := &organization.Organization{ Name: newOrgName, } unittest.AssertNotExistsBean(t, &user_model.User{Name: newOrgName, Type: user_model.UserTypeOrganization}) - assert.NoError(t, CreateOrganization(org, owner)) + assert.NoError(t, organization.CreateOrganization(org, owner)) org = unittest.AssertExistsAndLoadBean(t, - &Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}).(*Organization) + &organization.Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}).(*organization.Organization) ownerTeam := unittest.AssertExistsAndLoadBean(t, - &Team{Name: ownerTeamName, OrgID: org.ID}).(*Team) - unittest.AssertExistsAndLoadBean(t, &TeamUser{UID: owner.ID, TeamID: ownerTeam.ID}) - unittest.CheckConsistencyFor(t, &user_model.User{}, &Team{}) + &organization.Team{Name: organization.OwnerTeamName, OrgID: org.ID}).(*organization.Team) + unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{UID: owner.ID, TeamID: ownerTeam.ID}) + unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) } func TestCreateOrganization2(t *testing.T) { @@ -207,16 +112,16 @@ func TestCreateOrganization2(t *testing.T) { owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5}).(*user_model.User) const newOrgName = "neworg" - org := &Organization{ + org := &organization.Organization{ Name: newOrgName, } - unittest.AssertNotExistsBean(t, &Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}) - err := CreateOrganization(org, owner) + unittest.AssertNotExistsBean(t, &organization.Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}) + err := organization.CreateOrganization(org, owner) assert.Error(t, err) - assert.True(t, IsErrUserNotAllowedCreateOrg(err)) - unittest.AssertNotExistsBean(t, &Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}) - unittest.CheckConsistencyFor(t, &Organization{}, &Team{}) + assert.True(t, organization.IsErrUserNotAllowedCreateOrg(err)) + unittest.AssertNotExistsBean(t, &organization.Organization{Name: newOrgName, Type: user_model.UserTypeOrganization}) + unittest.CheckConsistencyFor(t, &organization.Organization{}, &organization.Team{}) } func TestCreateOrganization3(t *testing.T) { @@ -224,12 +129,12 @@ func TestCreateOrganization3(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - org := &Organization{Name: "user3"} // should already exist + org := &organization.Organization{Name: "user3"} // should already exist unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: org.Name}) // sanity check - err := CreateOrganization(org, owner) + err := organization.CreateOrganization(org, owner) assert.Error(t, err) assert.True(t, user_model.IsErrUserAlreadyExist(err)) - unittest.CheckConsistencyFor(t, &user_model.User{}, &Team{}) + unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) } func TestCreateOrganization4(t *testing.T) { @@ -237,210 +142,10 @@ func TestCreateOrganization4(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - err := CreateOrganization(&Organization{Name: "assets"}, owner) + err := organization.CreateOrganization(&organization.Organization{Name: "assets"}, owner) assert.Error(t, err) assert.True(t, db.IsErrNameReserved(err)) - unittest.CheckConsistencyFor(t, &Organization{}, &Team{}) -} - -func TestGetOrgByName(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - org, err := GetOrgByName("user3") - assert.NoError(t, err) - assert.EqualValues(t, 3, org.ID) - assert.Equal(t, "user3", org.Name) - - _, err = GetOrgByName("user2") // user2 is an individual - assert.True(t, IsErrOrgNotExist(err)) - - _, err = GetOrgByName("") // corner case - assert.True(t, IsErrOrgNotExist(err)) -} - -func TestCountOrganizations(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - expected, err := db.GetEngine(db.DefaultContext).Where("type=?", user_model.UserTypeOrganization).Count(&user_model.User{}) - assert.NoError(t, err) - assert.Equal(t, expected, CountOrganizations()) -} - -func TestIsOrganizationOwner(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - test := func(orgID, userID int64, expected bool) { - isOwner, err := IsOrganizationOwner(orgID, userID) - assert.NoError(t, err) - assert.EqualValues(t, expected, isOwner) - } - test(3, 2, true) - test(3, 3, false) - test(6, 5, true) - test(6, 4, false) - test(unittest.NonexistentID, unittest.NonexistentID, false) -} - -func TestIsOrganizationMember(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - test := func(orgID, userID int64, expected bool) { - isMember, err := IsOrganizationMember(orgID, userID) - assert.NoError(t, err) - assert.EqualValues(t, expected, isMember) - } - test(3, 2, true) - test(3, 3, false) - test(3, 4, true) - test(6, 5, true) - test(6, 4, false) - test(unittest.NonexistentID, unittest.NonexistentID, false) -} - -func TestIsPublicMembership(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - test := func(orgID, userID int64, expected bool) { - isMember, err := IsPublicMembership(orgID, userID) - assert.NoError(t, err) - assert.EqualValues(t, expected, isMember) - } - test(3, 2, true) - test(3, 3, false) - test(3, 4, false) - test(6, 5, true) - test(6, 4, false) - test(unittest.NonexistentID, unittest.NonexistentID, false) -} - -func TestFindOrgs(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - orgs, err := FindOrgs(FindOrgOptions{ - UserID: 4, - IncludePrivate: true, - }) - assert.NoError(t, err) - if assert.Len(t, orgs, 1) { - assert.EqualValues(t, 3, orgs[0].ID) - } - - orgs, err = FindOrgs(FindOrgOptions{ - UserID: 4, - IncludePrivate: false, - }) - assert.NoError(t, err) - assert.Len(t, orgs, 0) - - total, err := CountOrgs(FindOrgOptions{ - UserID: 4, - IncludePrivate: true, - }) - assert.NoError(t, err) - assert.EqualValues(t, 1, total) -} - -func TestGetOwnedOrgsByUserID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - orgs, err := GetOwnedOrgsByUserID(2) - assert.NoError(t, err) - if assert.Len(t, orgs, 1) { - assert.EqualValues(t, 3, orgs[0].ID) - } - - orgs, err = GetOwnedOrgsByUserID(4) - assert.NoError(t, err) - assert.Len(t, orgs, 0) -} - -func TestGetOwnedOrgsByUserIDDesc(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - orgs, err := GetOwnedOrgsByUserIDDesc(5, "id") - assert.NoError(t, err) - if assert.Len(t, orgs, 2) { - assert.EqualValues(t, 7, orgs[0].ID) - assert.EqualValues(t, 6, orgs[1].ID) - } - - orgs, err = GetOwnedOrgsByUserIDDesc(4, "id") - assert.NoError(t, err) - assert.Len(t, orgs, 0) -} - -func TestGetOrgUsersByUserID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - orgUsers, err := GetOrgUsersByUserID(5, &SearchOrganizationsOptions{All: true}) - assert.NoError(t, err) - if assert.Len(t, orgUsers, 2) { - assert.Equal(t, OrgUser{ - ID: orgUsers[0].ID, - OrgID: 6, - UID: 5, - IsPublic: true, - }, *orgUsers[0]) - assert.Equal(t, OrgUser{ - ID: orgUsers[1].ID, - OrgID: 7, - UID: 5, - IsPublic: false, - }, *orgUsers[1]) - } - - publicOrgUsers, err := GetOrgUsersByUserID(5, &SearchOrganizationsOptions{All: false}) - assert.NoError(t, err) - assert.Len(t, publicOrgUsers, 1) - assert.Equal(t, *orgUsers[0], *publicOrgUsers[0]) - - orgUsers, err = GetOrgUsersByUserID(1, &SearchOrganizationsOptions{All: true}) - assert.NoError(t, err) - assert.Len(t, orgUsers, 0) -} - -func TestGetOrgUsersByOrgID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - orgUsers, err := GetOrgUsersByOrgID(&FindOrgMembersOpts{ - ListOptions: db.ListOptions{}, - OrgID: 3, - PublicOnly: false, - }) - assert.NoError(t, err) - if assert.Len(t, orgUsers, 3) { - assert.Equal(t, OrgUser{ - ID: orgUsers[0].ID, - OrgID: 3, - UID: 2, - IsPublic: true, - }, *orgUsers[0]) - assert.Equal(t, OrgUser{ - ID: orgUsers[1].ID, - OrgID: 3, - UID: 4, - IsPublic: false, - }, *orgUsers[1]) - } - - orgUsers, err = GetOrgUsersByOrgID(&FindOrgMembersOpts{ - ListOptions: db.ListOptions{}, - OrgID: unittest.NonexistentID, - PublicOnly: false, - }) - assert.NoError(t, err) - assert.Len(t, orgUsers, 0) -} - -func TestChangeOrgUserStatus(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - testSuccess := func(orgID, userID int64, public bool) { - assert.NoError(t, ChangeOrgUserStatus(orgID, userID, public)) - orgUser := unittest.AssertExistsAndLoadBean(t, &OrgUser{OrgID: orgID, UID: userID}).(*OrgUser) - assert.Equal(t, public, orgUser.IsPublic) - } - - testSuccess(3, 2, false) - testSuccess(3, 2, false) - testSuccess(3, 4, true) - assert.NoError(t, ChangeOrgUserStatus(unittest.NonexistentID, unittest.NonexistentID, true)) + unittest.CheckConsistencyFor(t, &organization.Organization{}, &organization.Team{}) } func TestAddOrgUser(t *testing.T) { @@ -448,11 +153,11 @@ func TestAddOrgUser(t *testing.T) { testSuccess := func(orgID, userID int64, isPublic bool) { org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) expectedNumMembers := org.NumMembers - if !unittest.BeanExists(t, &OrgUser{OrgID: orgID, UID: userID}) { + if !unittest.BeanExists(t, &organization.OrgUser{OrgID: orgID, UID: userID}) { expectedNumMembers++ } - assert.NoError(t, AddOrgUser(orgID, userID)) - ou := &OrgUser{OrgID: orgID, UID: userID} + assert.NoError(t, organization.AddOrgUser(orgID, userID)) + ou := &organization.OrgUser{OrgID: orgID, UID: userID} unittest.AssertExistsAndLoadBean(t, ou) assert.Equal(t, isPublic, ou.IsPublic) org = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) @@ -467,194 +172,5 @@ func TestAddOrgUser(t *testing.T) { setting.Service.DefaultOrgMemberVisible = true testSuccess(6, 3, true) - unittest.CheckConsistencyFor(t, &user_model.User{}, &Team{}) -} - -func TestRemoveOrgUser(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - testSuccess := func(orgID, userID int64) { - org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) - expectedNumMembers := org.NumMembers - if unittest.BeanExists(t, &OrgUser{OrgID: orgID, UID: userID}) { - expectedNumMembers-- - } - assert.NoError(t, RemoveOrgUser(orgID, userID)) - unittest.AssertNotExistsBean(t, &OrgUser{OrgID: orgID, UID: userID}) - org = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID}).(*user_model.User) - assert.EqualValues(t, expectedNumMembers, org.NumMembers) - } - testSuccess(3, 4) - testSuccess(3, 4) - - err := RemoveOrgUser(7, 5) - assert.Error(t, err) - assert.True(t, IsErrLastOrgOwner(err)) - unittest.AssertExistsAndLoadBean(t, &OrgUser{OrgID: 7, UID: 5}) - unittest.CheckConsistencyFor(t, &user_model.User{}, &Team{}) -} - -func TestUser_GetUserTeamIDs(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - testSuccess := func(userID int64, expected []int64) { - teamIDs, err := org.GetUserTeamIDs(userID) - assert.NoError(t, err) - assert.Equal(t, expected, teamIDs) - } - testSuccess(2, []int64{1, 2}) - testSuccess(4, []int64{2}) - testSuccess(unittest.NonexistentID, []int64{}) -} - -func TestAccessibleReposEnv_CountRepos(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - testSuccess := func(userID, expectedCount int64) { - env, err := org.AccessibleReposEnv(userID) - assert.NoError(t, err) - count, err := env.CountRepos() - assert.NoError(t, err) - assert.EqualValues(t, expectedCount, count) - } - testSuccess(2, 3) - testSuccess(4, 2) -} - -func TestAccessibleReposEnv_RepoIDs(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - testSuccess := func(userID, _, pageSize int64, expectedRepoIDs []int64) { - env, err := org.AccessibleReposEnv(userID) - assert.NoError(t, err) - repoIDs, err := env.RepoIDs(1, 100) - assert.NoError(t, err) - assert.Equal(t, expectedRepoIDs, repoIDs) - } - testSuccess(2, 1, 100, []int64{3, 5, 32}) - testSuccess(4, 0, 100, []int64{3, 32}) -} - -func TestAccessibleReposEnv_Repos(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - testSuccess := func(userID int64, expectedRepoIDs []int64) { - env, err := org.AccessibleReposEnv(userID) - assert.NoError(t, err) - repos, err := env.Repos(1, 100) - assert.NoError(t, err) - expectedRepos := make([]*repo_model.Repository, len(expectedRepoIDs)) - for i, repoID := range expectedRepoIDs { - expectedRepos[i] = unittest.AssertExistsAndLoadBean(t, - &repo_model.Repository{ID: repoID}).(*repo_model.Repository) - } - assert.Equal(t, expectedRepos, repos) - } - testSuccess(2, []int64{3, 5, 32}) - testSuccess(4, []int64{3, 32}) -} - -func TestAccessibleReposEnv_MirrorRepos(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - org := unittest.AssertExistsAndLoadBean(t, &Organization{ID: 3}).(*Organization) - testSuccess := func(userID int64, expectedRepoIDs []int64) { - env, err := org.AccessibleReposEnv(userID) - assert.NoError(t, err) - repos, err := env.MirrorRepos() - assert.NoError(t, err) - expectedRepos := make([]*repo_model.Repository, len(expectedRepoIDs)) - for i, repoID := range expectedRepoIDs { - expectedRepos[i] = unittest.AssertExistsAndLoadBean(t, - &repo_model.Repository{ID: repoID}).(*repo_model.Repository) - } - assert.Equal(t, expectedRepos, repos) - } - testSuccess(2, []int64{5}) - testSuccess(4, []int64{}) -} - -func TestHasOrgVisibleTypePublic(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - user3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}).(*user_model.User) - - const newOrgName = "test-org-public" - org := &Organization{ - Name: newOrgName, - Visibility: structs.VisibleTypePublic, - } - - unittest.AssertNotExistsBean(t, &user_model.User{Name: org.Name, Type: user_model.UserTypeOrganization}) - assert.NoError(t, CreateOrganization(org, owner)) - org = unittest.AssertExistsAndLoadBean(t, - &Organization{Name: org.Name, Type: user_model.UserTypeOrganization}).(*Organization) - test1 := HasOrgOrUserVisible(org.AsUser(), owner) - test2 := HasOrgOrUserVisible(org.AsUser(), user3) - test3 := HasOrgOrUserVisible(org.AsUser(), nil) - assert.True(t, test1) // owner of org - assert.True(t, test2) // user not a part of org - assert.True(t, test3) // logged out user -} - -func TestHasOrgVisibleTypeLimited(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - user3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}).(*user_model.User) - - const newOrgName = "test-org-limited" - org := &Organization{ - Name: newOrgName, - Visibility: structs.VisibleTypeLimited, - } - - unittest.AssertNotExistsBean(t, &user_model.User{Name: org.Name, Type: user_model.UserTypeOrganization}) - assert.NoError(t, CreateOrganization(org, owner)) - org = unittest.AssertExistsAndLoadBean(t, - &Organization{Name: org.Name, Type: user_model.UserTypeOrganization}).(*Organization) - test1 := HasOrgOrUserVisible(org.AsUser(), owner) - test2 := HasOrgOrUserVisible(org.AsUser(), user3) - test3 := HasOrgOrUserVisible(org.AsUser(), nil) - assert.True(t, test1) // owner of org - assert.True(t, test2) // user not a part of org - assert.False(t, test3) // logged out user -} - -func TestHasOrgVisibleTypePrivate(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - user3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}).(*user_model.User) - - const newOrgName = "test-org-private" - org := &Organization{ - Name: newOrgName, - Visibility: structs.VisibleTypePrivate, - } - - unittest.AssertNotExistsBean(t, &user_model.User{Name: org.Name, Type: user_model.UserTypeOrganization}) - assert.NoError(t, CreateOrganization(org, owner)) - org = unittest.AssertExistsAndLoadBean(t, - &Organization{Name: org.Name, Type: user_model.UserTypeOrganization}).(*Organization) - test1 := HasOrgOrUserVisible(org.AsUser(), owner) - test2 := HasOrgOrUserVisible(org.AsUser(), user3) - test3 := HasOrgOrUserVisible(org.AsUser(), nil) - assert.True(t, test1) // owner of org - assert.False(t, test2) // user not a part of org - assert.False(t, test3) // logged out user -} - -func TestGetUsersWhoCanCreateOrgRepo(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - users, err := GetUsersWhoCanCreateOrgRepo(3) - assert.NoError(t, err) - assert.Len(t, users, 2) - var ids []int64 - for i := range users { - ids = append(ids, users[i].ID) - } - assert.ElementsMatch(t, ids, []int64{2, 28}) - - users, err = GetUsersWhoCanCreateOrgRepo(7) - assert.NoError(t, err) - assert.Len(t, users, 1) - assert.EqualValues(t, 5, users[0].ID) + unittest.CheckConsistencyFor(t, &user_model.User{}, &organization.Team{}) } |