From 442145dbd348a18915de80faea68f30a9d9309b3 Mon Sep 17 00:00:00 2001 From: Morgan Bazalgette Date: Sat, 11 Feb 2017 11:57:57 +0100 Subject: [PATCH] Fix public activity showing private repos (#892) * Fix public activity showing private repos (#811) Signed-off-by: Morgan Bazalgette * error check after setting is_private to true * Add test for UpdateRepository w/ visibility change --- models/fixtures/action.yml | 11 +++++++++++ models/fixtures/repository.yml | 12 ++++++++++++ models/fixtures/user.yml | 15 +++++++++++++++ models/repo.go | 10 ++++++++++ models/repo_test.go | 19 +++++++++++++++++++ 5 files changed, 67 insertions(+) diff --git a/models/fixtures/action.yml b/models/fixtures/action.yml index f4f10dde2b..bf44837a1c 100644 --- a/models/fixtures/action.yml +++ b/models/fixtures/action.yml @@ -20,3 +20,14 @@ repo_name: repo3 # TODO old or new name? is_private: false content: oldRepoName + +- + id: 3 + user_id: 11 + op_type: 1 # create repo + act_user_id: 11 + act_user_name: user11 + repo_id: 9 + repo_user_name: user11 + repo_name: repo9 + is_private: false diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml index 93463c0855..d50b88c301 100644 --- a/models/fixtures/repository.yml +++ b/models/fixtures/repository.yml @@ -93,3 +93,15 @@ num_pulls: 0 num_closed_pulls: 0 is_mirror: false + +- + id: 9 + owner_id: 11 + lower_name: repo9 + name: repo9 + is_private: false + num_issues: 0 + num_closed_issues: 0 + num_pulls: 0 + num_closed_pulls: 0 + is_mirror: false diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index 568f367290..337fb54590 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -149,3 +149,18 @@ avatar_email: user10@example.com num_repos: 3 is_active: true + +- + id: 11 + lower_name: user11 + name: user11 + full_name: User Eleven + email: user11@example.com + passwd: password + type: 0 # individual + salt: salt + is_admin: false + avatar: avatar11 + avatar_email: user11@example.com + num_repos: 1 + is_active: true diff --git a/models/repo.go b/models/repo.go index a7a36cc7d0..86961d68d7 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1408,6 +1408,16 @@ func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err e } } + // If repo has become private, we need to set its actions to private. + if repo.IsPrivate { + _, err = e.Where("repo_id = ?", repo.ID).Cols("is_private").Update(&Action{ + IsPrivate: true, + }) + if err != nil { + return err + } + } + // Create/Remove git-daemon-export-ok for git-daemon... daemonExportFile := path.Join(repo.RepoPath(), `git-daemon-export-ok`) if repo.IsPrivate && com.IsExist(daemonExportFile) { diff --git a/models/repo_test.go b/models/repo_test.go index db8bd1024e..18da682059 100644 --- a/models/repo_test.go +++ b/models/repo_test.go @@ -73,3 +73,22 @@ func TestGetPrivateRepositoryCount(t *testing.T) { assert.NoError(t, err) assert.Equal(t, int64(2), count) } + +func TestUpdateRepositoryVisibilityChanged(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + // Get sample repo and change visibility + repo, err := GetRepositoryByID(9) + repo.IsPrivate = true + + // Update it + err = UpdateRepository(repo, true) + assert.NoError(t, err) + + // Check visibility of action has become private + act := Action{} + _, err = x.ID(3).Get(&act) + + assert.NoError(t, err) + assert.Equal(t, true, act.IsPrivate) +}