* 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
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 |
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 |
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 |
} | } | ||||
} | } | ||||
// 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) { |
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) | |||||
} |