Skip to content

Unit tests and bug fix for models/org #776

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 28, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion models/access_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func TestRepository_RecalculateAccesses(t *testing.T) {
has, err := x.Get(access)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, AccessModeWrite, access.Mode)
assert.Equal(t, AccessModeOwner, access.Mode)
}

func TestRepository_RecalculateAccesses2(t *testing.T) {
Expand Down
24 changes: 24 additions & 0 deletions models/fixtures/org_user.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,27 @@
is_public: true
is_owner: true
num_teams: 1

-
id: 2
uid: 4
org_id: 3
is_public: false
is_owner: false
num_teams: 0

-
id: 3
uid: 5
org_id: 6
is_public: true
is_owner: true
num_teams: 1

-
id: 4
uid: 5
org_id: 7
is_public: false
is_owner: true
num_teams: 1
12 changes: 12 additions & 0 deletions models/fixtures/repository.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,15 @@
num_closed_issues: 0
num_pulls: 0
num_closed_pulls: 0

-
id: 5
owner_id: 3
lower_name: repo5
name: repo5
is_private: true
num_issues: 0
num_closed_issues: 0
num_pulls: 0
num_closed_pulls: 0
is_mirror: true
28 changes: 28 additions & 0 deletions models/fixtures/team.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,35 @@
-
id: 1
org_id: 3
lower_name: owners
name: owners
authorize: 4 # owner
num_repos: 1
num_members: 1

-
id: 2
org_id: 3
lower_name: team1
name: team1
authorize: 2 # write
num_repos: 1
num_members: 2

-
id: 3
org_id: 6
lower_name: owners
name: owners
authorize: 4 # owner
num_repos: 0
num_members: 1

-
id: 4
org_id: 7
lower_name: owners
name: owners
authorize: 4 # owner
num_repos: 0
num_members: 1
12 changes: 12 additions & 0 deletions models/fixtures/team_repo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,15 @@
org_id: 3
team_id: 1
repo_id: 3

-
id: 2
org_id: 3
team_id: 2
repo_id: 3

-
id: 3
org_id: 3
team_id: 1
repo_id: 5
24 changes: 24 additions & 0 deletions models/fixtures/team_user.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,27 @@
org_id: 3
team_id: 1
uid: 2

-
id: 2
org_id: 3
team_id: 2
uid: 2

-
id: 3
org_id: 3
team_id: 2
uid: 4

-
id: 4
org_id: 6
team_id: 3
uid: 5

-
id: 5
org_id: 7
team_id: 4
uid: 5
38 changes: 35 additions & 3 deletions models/fixtures/user.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@
is_admin: false
avatar: avatar3
avatar_email: [email protected]
num_repos: 1
num_repos: 2
num_members: 2

-
id: 4
Expand All @@ -47,7 +48,7 @@
full_name: User Four
email: [email protected]
passwd: password
type: 1 # individual
type: 0 # individual
salt: salt
is_admin: false
avatar: avatar4
Expand All @@ -61,9 +62,40 @@
full_name: User Five
email: [email protected]
passwd: password
type: 1 # individual
type: 0 # individual
salt: salt
is_admin: false
avatar: avatar5
avatar_email: [email protected]
num_repos: 1
allow_create_organization: false

-
id: 6
lower_name: user6
name: user6
full_name: User Six
email: [email protected]
passwd: password
type: 1 # organization
salt: salt
is_admin: false
avatar: avatar6
avatar_email: [email protected]
num_repos: 0
num_members: 1

-
id: 7
lower_name: user7
name: user7
full_name: User Seven
email: [email protected]
passwd: password
type: 1 # organization
salt: salt
is_admin: false
avatar: avatar7
avatar_email: [email protected]
num_repos: 0
num_members: 1
30 changes: 8 additions & 22 deletions models/org.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ func CreateOrganization(org, owner *User) (err error) {
org.MaxRepoCreation = -1
org.NumTeams = 1
org.NumMembers = 1
org.Type = UserTypeOrganization

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

// GetOrgsByUserIDDesc returns a list of organizations that the given user ID
// has joined, ordered descending by the given condition.
func GetOrgsByUserIDDesc(userID int64, desc string, showAll bool) ([]*User, error) {
return getOrgsByUserID(x.Desc(desc), userID, showAll)
}

func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) {
orgs := make([]*User, 0, 10)
return orgs, sess.
Expand Down Expand Up @@ -464,10 +459,6 @@ func RemoveOrgUser(orgID, userID int64) error {
return nil
}

user, err := GetUserByID(userID)
if err != nil {
return fmt.Errorf("GetUserByID [%d]: %v", userID, err)
}
org, err := GetUserByID(orgID)
if err != nil {
return fmt.Errorf("GetUserByID [%d]: %v", orgID, err)
Expand Down Expand Up @@ -497,36 +488,36 @@ func RemoveOrgUser(orgID, userID int64) error {
}

// Delete all repository accesses and unwatch them.
env, err := org.AccessibleReposEnv(user.ID)
env, err := org.AccessibleReposEnv(userID)
if err != nil {
return fmt.Errorf("AccessibleReposEnv: %v", err)
}
repoIDs, err := env.RepoIDs(1, org.NumRepos)
if err != nil {
return fmt.Errorf("GetUserRepositories [%d]: %v", user.ID, err)
return fmt.Errorf("GetUserRepositories [%d]: %v", userID, err)
}
for _, repoID := range repoIDs {
if err = watchRepo(sess, user.ID, repoID, false); err != nil {
if err = watchRepo(sess, userID, repoID, false); err != nil {
return err
}
}

if len(repoIDs) > 0 {
if _, err = sess.
Where("user_id = ?", user.ID).
Where("user_id = ?", userID).
In("repo_id", repoIDs).
Delete(new(Access)); err != nil {
return err
}
}

// Delete member in his/her teams.
teams, err := getUserTeams(sess, org.ID, user.ID)
teams, err := getUserTeams(sess, org.ID, userID)
if err != nil {
return err
}
for _, t := range teams {
if err = removeTeamMember(sess, org.ID, t.ID, user.ID); err != nil {
if err = removeTeamMember(sess, org.ID, t.ID, userID); err != nil {
return err
}
}
Expand All @@ -542,11 +533,6 @@ func removeOrgRepo(e Engine, orgID, repoID int64) error {
return err
}

// RemoveOrgRepo removes all team-repository relations of given organization.
func RemoveOrgRepo(orgID, repoID int64) error {
return removeOrgRepo(x, orgID, repoID)
}

func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team, error) {
teams := make([]*Team, 0, org.NumTeams)
return teams, e.
Expand Down Expand Up @@ -619,7 +605,7 @@ func (env *accessibleReposEnv) CountRepos() (int64, error) {
repoCount, err := x.
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
Where(env.cond()).
GroupBy("`repository`.id").
Distinct("`repository`.id").
Count(&Repository{})
if err != nil {
return 0, fmt.Errorf("count user repositories in organization: %v", err)
Expand Down
Loading