Skip to content

Commit abf3fbf

Browse files
authored
Merge pull request #776 from ethantkoenig/tests/org
Unit tests and bug fix for models/org
2 parents bb5a6b7 + a241249 commit abf3fbf

File tree

10 files changed

+671
-26
lines changed

10 files changed

+671
-26
lines changed

models/access_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func TestRepository_RecalculateAccesses(t *testing.T) {
106106
has, err := x.Get(access)
107107
assert.NoError(t, err)
108108
assert.True(t, has)
109-
assert.Equal(t, AccessModeWrite, access.Mode)
109+
assert.Equal(t, AccessModeOwner, access.Mode)
110110
}
111111

112112
func TestRepository_RecalculateAccesses2(t *testing.T) {

models/fixtures/org_user.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,27 @@
55
is_public: true
66
is_owner: true
77
num_teams: 1
8+
9+
-
10+
id: 2
11+
uid: 4
12+
org_id: 3
13+
is_public: false
14+
is_owner: false
15+
num_teams: 0
16+
17+
-
18+
id: 3
19+
uid: 5
20+
org_id: 6
21+
is_public: true
22+
is_owner: true
23+
num_teams: 1
24+
25+
-
26+
id: 4
27+
uid: 5
28+
org_id: 7
29+
is_public: false
30+
is_owner: true
31+
num_teams: 1

models/fixtures/repository.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,15 @@
4141
num_closed_issues: 0
4242
num_pulls: 0
4343
num_closed_pulls: 0
44+
45+
-
46+
id: 5
47+
owner_id: 3
48+
lower_name: repo5
49+
name: repo5
50+
is_private: true
51+
num_issues: 0
52+
num_closed_issues: 0
53+
num_pulls: 0
54+
num_closed_pulls: 0
55+
is_mirror: true

models/fixtures/team.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,35 @@
11
-
22
id: 1
33
org_id: 3
4+
lower_name: owners
5+
name: owners
6+
authorize: 4 # owner
7+
num_repos: 1
8+
num_members: 1
9+
10+
-
11+
id: 2
12+
org_id: 3
413
lower_name: team1
514
name: team1
615
authorize: 2 # write
716
num_repos: 1
17+
num_members: 2
18+
19+
-
20+
id: 3
21+
org_id: 6
22+
lower_name: owners
23+
name: owners
24+
authorize: 4 # owner
25+
num_repos: 0
26+
num_members: 1
27+
28+
-
29+
id: 4
30+
org_id: 7
31+
lower_name: owners
32+
name: owners
33+
authorize: 4 # owner
34+
num_repos: 0
35+
num_members: 1

models/fixtures/team_repo.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,15 @@
33
org_id: 3
44
team_id: 1
55
repo_id: 3
6+
7+
-
8+
id: 2
9+
org_id: 3
10+
team_id: 2
11+
repo_id: 3
12+
13+
-
14+
id: 3
15+
org_id: 3
16+
team_id: 1
17+
repo_id: 5

models/fixtures/team_user.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,27 @@
33
org_id: 3
44
team_id: 1
55
uid: 2
6+
7+
-
8+
id: 2
9+
org_id: 3
10+
team_id: 2
11+
uid: 2
12+
13+
-
14+
id: 3
15+
org_id: 3
16+
team_id: 2
17+
uid: 4
18+
19+
-
20+
id: 4
21+
org_id: 6
22+
team_id: 3
23+
uid: 5
24+
25+
-
26+
id: 5
27+
org_id: 7
28+
team_id: 4
29+
uid: 5

models/fixtures/user.yml

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
is_admin: false
3939
avatar: avatar3
4040
avatar_email: [email protected]
41-
num_repos: 1
41+
num_repos: 2
42+
num_members: 2
4243

4344
-
4445
id: 4
@@ -47,7 +48,7 @@
4748
full_name: User Four
4849
4950
passwd: password
50-
type: 1 # individual
51+
type: 0 # individual
5152
salt: salt
5253
is_admin: false
5354
avatar: avatar4
@@ -61,9 +62,40 @@
6162
full_name: User Five
6263
6364
passwd: password
64-
type: 1 # individual
65+
type: 0 # individual
6566
salt: salt
6667
is_admin: false
6768
avatar: avatar5
6869
avatar_email: [email protected]
6970
num_repos: 1
71+
allow_create_organization: false
72+
73+
-
74+
id: 6
75+
lower_name: user6
76+
name: user6
77+
full_name: User Six
78+
79+
passwd: password
80+
type: 1 # organization
81+
salt: salt
82+
is_admin: false
83+
avatar: avatar6
84+
avatar_email: [email protected]
85+
num_repos: 0
86+
num_members: 1
87+
88+
-
89+
id: 7
90+
lower_name: user7
91+
name: user7
92+
full_name: User Seven
93+
94+
passwd: password
95+
type: 1 # organization
96+
salt: salt
97+
is_admin: false
98+
avatar: avatar7
99+
avatar_email: [email protected]
100+
num_repos: 0
101+
num_members: 1

models/org.go

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func CreateOrganization(org, owner *User) (err error) {
124124
org.MaxRepoCreation = -1
125125
org.NumTeams = 1
126126
org.NumMembers = 1
127+
org.Type = UserTypeOrganization
127128

128129
sess := x.NewSession()
129130
defer sessionRelease(sess)
@@ -350,12 +351,6 @@ func GetOrgsByUserID(userID int64, showAll bool) ([]*User, error) {
350351
return getOrgsByUserID(sess, userID, showAll)
351352
}
352353

353-
// GetOrgsByUserIDDesc returns a list of organizations that the given user ID
354-
// has joined, ordered descending by the given condition.
355-
func GetOrgsByUserIDDesc(userID int64, desc string, showAll bool) ([]*User, error) {
356-
return getOrgsByUserID(x.Desc(desc), userID, showAll)
357-
}
358-
359354
func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) {
360355
orgs := make([]*User, 0, 10)
361356
return orgs, sess.
@@ -464,10 +459,6 @@ func RemoveOrgUser(orgID, userID int64) error {
464459
return nil
465460
}
466461

467-
user, err := GetUserByID(userID)
468-
if err != nil {
469-
return fmt.Errorf("GetUserByID [%d]: %v", userID, err)
470-
}
471462
org, err := GetUserByID(orgID)
472463
if err != nil {
473464
return fmt.Errorf("GetUserByID [%d]: %v", orgID, err)
@@ -497,36 +488,36 @@ func RemoveOrgUser(orgID, userID int64) error {
497488
}
498489

499490
// Delete all repository accesses and unwatch them.
500-
env, err := org.AccessibleReposEnv(user.ID)
491+
env, err := org.AccessibleReposEnv(userID)
501492
if err != nil {
502493
return fmt.Errorf("AccessibleReposEnv: %v", err)
503494
}
504495
repoIDs, err := env.RepoIDs(1, org.NumRepos)
505496
if err != nil {
506-
return fmt.Errorf("GetUserRepositories [%d]: %v", user.ID, err)
497+
return fmt.Errorf("GetUserRepositories [%d]: %v", userID, err)
507498
}
508499
for _, repoID := range repoIDs {
509-
if err = watchRepo(sess, user.ID, repoID, false); err != nil {
500+
if err = watchRepo(sess, userID, repoID, false); err != nil {
510501
return err
511502
}
512503
}
513504

514505
if len(repoIDs) > 0 {
515506
if _, err = sess.
516-
Where("user_id = ?", user.ID).
507+
Where("user_id = ?", userID).
517508
In("repo_id", repoIDs).
518509
Delete(new(Access)); err != nil {
519510
return err
520511
}
521512
}
522513

523514
// Delete member in his/her teams.
524-
teams, err := getUserTeams(sess, org.ID, user.ID)
515+
teams, err := getUserTeams(sess, org.ID, userID)
525516
if err != nil {
526517
return err
527518
}
528519
for _, t := range teams {
529-
if err = removeTeamMember(sess, org.ID, t.ID, user.ID); err != nil {
520+
if err = removeTeamMember(sess, org.ID, t.ID, userID); err != nil {
530521
return err
531522
}
532523
}
@@ -542,11 +533,6 @@ func removeOrgRepo(e Engine, orgID, repoID int64) error {
542533
return err
543534
}
544535

545-
// RemoveOrgRepo removes all team-repository relations of given organization.
546-
func RemoveOrgRepo(orgID, repoID int64) error {
547-
return removeOrgRepo(x, orgID, repoID)
548-
}
549-
550536
func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team, error) {
551537
teams := make([]*Team, 0, org.NumTeams)
552538
return teams, e.
@@ -619,7 +605,7 @@ func (env *accessibleReposEnv) CountRepos() (int64, error) {
619605
repoCount, err := x.
620606
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
621607
Where(env.cond()).
622-
GroupBy("`repository`.id").
608+
Distinct("`repository`.id").
623609
Count(&Repository{})
624610
if err != nil {
625611
return 0, fmt.Errorf("count user repositories in organization: %v", err)

0 commit comments

Comments
 (0)