* Fix public activity showing private repos (#811) Signed-off-by: Morgan Bazalgette <the@howl.moe> * error check after setting is_private to true * Add test for UpdateRepository w/ visibility changetags/v1.1.0
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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) { |
@@ -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) | |||
} |