Merge lp:~cjwatson/launchpad/crvr-anonymous into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18784
Proposed branch: lp:~cjwatson/launchpad/crvr-anonymous
Merge into: lp:launchpad
Diff against target: 77 lines (+37/-1)
2 files modified
lib/lp/code/model/tests/test_codereviewvote.py (+28/-1)
lib/lp/security.py (+9/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/crvr-anonymous
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+354991@code.launchpad.net

Commit message

Allow anonymous launchpad.View on ICodeReviewVoteReference for public merge proposals.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/code/model/tests/test_codereviewvote.py'
--- lib/lp/code/model/tests/test_codereviewvote.py 2017-10-04 01:53:48 +0000
+++ lib/lp/code/model/tests/test_codereviewvote.py 2018-09-15 19:23:00 +0000
@@ -1,10 +1,11 @@
1# Copyright 2009-2017 Canonical Ltd. This software is licensed under the1# Copyright 2009-2018 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# GNU Affero General Public License version 3 (see the file LICENSE).
33
4from __future__ import absolute_import, print_function, unicode_literals4from __future__ import absolute_import, print_function, unicode_literals
55
6from zope.security.interfaces import Unauthorized6from zope.security.interfaces import Unauthorized
77
8from lp.app.enums import InformationType
8from lp.code.enums import CodeReviewVote9from lp.code.enums import CodeReviewVote
9from lp.code.errors import (10from lp.code.errors import (
10 ClaimReviewFailed,11 ClaimReviewFailed,
@@ -14,7 +15,10 @@
14from lp.code.interfaces.codereviewvote import ICodeReviewVoteReference15from lp.code.interfaces.codereviewvote import ICodeReviewVoteReference
15from lp.code.tests.helpers import make_merge_proposal_without_reviewers16from lp.code.tests.helpers import make_merge_proposal_without_reviewers
16from lp.services.database.constants import UTC_NOW17from lp.services.database.constants import UTC_NOW
18from lp.services.webapp.authorization import check_permission
17from lp.testing import (19from lp.testing import (
20 ANONYMOUS,
21 login,
18 login_person,22 login_person,
19 TestCaseWithFactory,23 TestCaseWithFactory,
20 )24 )
@@ -40,6 +44,29 @@
40 vote, 'date_created', UTC_NOW)44 vote, 'date_created', UTC_NOW)
41 self.assertProvides(vote, ICodeReviewVoteReference)45 self.assertProvides(vote, ICodeReviewVoteReference)
4246
47 def test_anonymous_public(self):
48 """Anonymous users can see votes on public merge proposals."""
49 merge_proposal = make_merge_proposal_without_reviewers(self.factory)
50 reviewer = self.factory.makePerson()
51 login_person(merge_proposal.registrant)
52 vote = merge_proposal.nominateReviewer(
53 reviewer, merge_proposal.registrant)
54 login(ANONYMOUS)
55 self.assertTrue(check_permission('launchpad.View', vote))
56
57 def test_anonymous_private(self):
58 """Anonymous users cannot see votes on private merge proposals."""
59 owner = self.factory.makePerson()
60 login_person(owner)
61 target_branch = self.factory.makeBranch(
62 owner=owner, information_type=InformationType.USERDATA)
63 merge_proposal = make_merge_proposal_without_reviewers(
64 self.factory, target_branch=target_branch, registrant=owner)
65 reviewer = self.factory.makePerson()
66 vote = merge_proposal.nominateReviewer(reviewer, owner)
67 login(ANONYMOUS)
68 self.assertFalse(check_permission('launchpad.View', vote))
69
4370
44class TestCodeReviewVoteReferenceClaimReview(TestCaseWithFactory):71class TestCodeReviewVoteReferenceClaimReview(TestCaseWithFactory):
45 """Tests for CodeReviewVoteReference.claimReview."""72 """Tests for CodeReviewVoteReference.claimReview."""
4673
=== modified file 'lib/lp/security.py'
--- lib/lp/security.py 2018-06-15 13:21:14 +0000
+++ lib/lp/security.py 2018-09-15 19:23:00 +0000
@@ -2436,6 +2436,15 @@
2436 super(PreviewDiffView, self).__init__(obj, obj.branch_merge_proposal)2436 super(PreviewDiffView, self).__init__(obj, obj.branch_merge_proposal)
24372437
24382438
2439class CodeReviewVoteReferenceView(DelegatedAuthorization):
2440 permission = 'launchpad.View'
2441 usedfor = ICodeReviewVoteReference
2442
2443 def __init__(self, obj):
2444 super(CodeReviewVoteReferenceView, self).__init__(
2445 obj, obj.branch_merge_proposal)
2446
2447
2439class CodeReviewVoteReferenceEdit(DelegatedAuthorization):2448class CodeReviewVoteReferenceEdit(DelegatedAuthorization):
2440 permission = 'launchpad.Edit'2449 permission = 'launchpad.Edit'
2441 usedfor = ICodeReviewVoteReference2450 usedfor = ICodeReviewVoteReference