Review: Needs Fixing code

Looking very good, Steve. I have many comments, as always, including a couple 
of bugs.

152     -The upstream maintainer will be subscribed to security-related private
153     -bugs, because upstream has no security contact, in this case.

This branch is a prerequisite for the work that will make this test obsolete, 
but I believe it's still relevant. It's talking about an actual BugSubscription 
here.

170     === modified file 'lib/lp/bugs/doc/security-teams.txt'

Likewise with both changes here. This branch only enables implicit 
subscriptions -- we still need to test that explicit subscriptions work until 
we remove them.

201     - def getBugNotificationRecipients(duplicateof=None, old_bug=None,
202     - include_master_dupe_subscribers=False):
203     + def getBugNotificationRecipients(duplicateof=None, old_bug=None):

Nice cleanup of a dead codepath.

278     + def forbidden_recipients_filter(self, column=None):

This actually filters to the allowed recipients, not the forbidden ones. I also 
wonder if it would be better to return a single expression, which is the Or or 
True, letting callsites just include it inline without extend()ing. And is it 
really worth having column= be optional?

337     + all = Select(BugTask.assigneeID, BugTask.bug == self.bug)
338     + assignees = load_people(Person.id.is_in(all))

Why have you split the subquery out into a separate local? Might as well inline 
it, or at least not shadow a builtin. Also, did you consider inlining the 
subsequent filter into load_people's where argument?

368     + return subscribers.difference(
369     + self.direct_subscribers_at_all_levels,

Direct subscribers will usually have a grant, but not always (eg. after their 
project access has been revoked, but the sub removal job hasn't run yet). This 
needs to be filtered too. 

392     + if bug.private:
393     + filters.extend([
394     + Or(*get_bug_privacy_filter_terms(
395     + StructuralSubscription.subscriberID)),
396     + BugTaskFlat.bug == bug])

I'm a little concerned about this. The function didn't previously return 
nothing for private bugs, so this may be the wrong level to filter at. Did you 
consider other locations?

424     - def test_structural_bug_supervisor_becomes_direct_on_private(self):
425     - # If a bug supervisor has a structural subscription to the bug, and
426     - # the bug is marked as private, the supervisor should get a direct
427     - # subscription. Otherwise they should be removed, per other tests.

Why is this test no longer valid? Yes, the behaviour should be removed later, 
but this branch doesn't do it.

448     - def test_information_type_does_not_leak(self):
449     - # Make sure that bug notifications for private bugs do not leak to
450     - # people with a subscription on the product.

This seems like a reasonable integration test to retain. You've added a test 
that sharing => notification in 
test_private_bug_with_structural_subscriber_with_access, but unless I've missed 
one this is the only one that tests !sharing => !notification.

797     - def test_private_bug_target_change_doesnt_add_everyone(self):

Again, I don't see that this test's value is gone.


-- 
https://code.launchpad.net/~stevenk/launchpad/structsub-private-bugs-redux/+merge/116798
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.

_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to