* 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.21.12.1
| @@ -20,3 +20,14 @@ | |||||
| repo_name: repo3 # TODO old or new name? | repo_name: repo3 # TODO old or new name? | ||||
| is_private: false | is_private: false | ||||
| content: oldRepoName | 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_pulls: 0 | ||||
| num_closed_pulls: 0 | num_closed_pulls: 0 | ||||
| is_mirror: false | 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 | avatar_email: user10@example.com | ||||
| num_repos: 3 | num_repos: 3 | ||||
| is_active: true | 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... | // Create/Remove git-daemon-export-ok for git-daemon... | ||||
| daemonExportFile := path.Join(repo.RepoPath(), `git-daemon-export-ok`) | daemonExportFile := path.Join(repo.RepoPath(), `git-daemon-export-ok`) | ||||
| if repo.IsPrivate && com.IsExist(daemonExportFile) { | if repo.IsPrivate && com.IsExist(daemonExportFile) { | ||||
| @@ -73,3 +73,22 @@ func TestGetPrivateRepositoryCount(t *testing.T) { | |||||
| assert.NoError(t, err) | assert.NoError(t, err) | ||||
| assert.Equal(t, int64(2), count) | 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) | |||||
| } | |||||