Re: [Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/delete-ssh-key-text-type into lp:launchpad

2018-08-02 Thread Maximiliano Bertacchini
Review: Approve

LGTM, thanks.
-- 
https://code.launchpad.net/~cjwatson/launchpad/delete-ssh-key-text-type/+merge/352210
Your team Launchpad code reviewers is requested to review the proposed merge of 
lp:~cjwatson/launchpad/delete-ssh-key-text-type into lp:launchpad.

___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp


[Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/delete-ssh-key-text-type into lp:launchpad

2018-08-02 Thread Colin Watson
Colin Watson has proposed merging 
lp:~cjwatson/launchpad/delete-ssh-key-text-type into lp:launchpad.

Commit message:
Weaken type of key_text in person.deleteSSHKeysFromSSO so that more existing 
keys can be deleted.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/delete-ssh-key-text-type/+merge/352210
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of 
lp:~cjwatson/launchpad/delete-ssh-key-text-type into lp:launchpad.
=== modified file 'lib/lp/registry/browser/tests/test_person_webservice.py'
--- lib/lp/registry/browser/tests/test_person_webservice.py	2018-02-24 09:11:39 +
+++ lib/lp/registry/browser/tests/test_person_webservice.py	2018-08-02 16:35:09 +
@@ -3,6 +3,8 @@
 
 __metaclass__ = type
 
+import textwrap
+
 from storm.store import Store
 from zope.component import getUtility
 from zope.security.management import endInteraction
@@ -12,7 +14,10 @@
 IPersonSet,
 TeamMembershipStatus,
 )
-from lp.registry.interfaces.ssh import SSHKeyType
+from lp.registry.interfaces.ssh import (
+ISSHKeySet,
+SSHKeyType,
+)
 from lp.registry.interfaces.teammembership import ITeamMembershipSet
 from lp.services.identity.interfaces.account import (
 AccountStatus,
@@ -668,6 +673,34 @@
 self.assertEqual(200, response.status)
 self.assertEqual(1, person.sshkeys.count())
 
+def test_deleteSSHKeyFromSSO_allows_newlines(self):
+# Adding these should normally be forbidden, but we want users to be
+# able to delete existing rows.
+with admin_logged_in():
+person = removeSecurityProxy(self.factory.makePerson())
+kind, data, comment = self.factory.makeSSHKeyText().split(" ", 2)
+key_text = "%s %s %s\n" % (kind, textwrap.fill(data), comment)
+key = getUtility(ISSHKeySet).new(person, key_text, check_key=False)
+openid_id = person.account.openid_identifiers.any().identifier
+response = self.deleteSSHKeyFromSSO(
+openid_id, key.getFullKeyText())
+
+self.assertEqual(200, response.status)
+self.assertEqual(0, person.sshkeys.count())
+
+def test_deleteSSHKeyFromSSO_allows_newlines_dry_run(self):
+with admin_logged_in():
+person = removeSecurityProxy(self.factory.makePerson())
+kind, data, comment = self.factory.makeSSHKeyText().split(" ", 2)
+key_text = "%s %s %s\n" % (kind, textwrap.fill(data), comment)
+key = getUtility(ISSHKeySet).new(person, key_text, check_key=False)
+openid_id = person.account.openid_identifiers.any().identifier
+response = self.deleteSSHKeyFromSSO(
+openid_id, key.getFullKeyText(), dry_run=True)
+
+self.assertEqual(200, response.status)
+self.assertEqual(1, person.sshkeys.count())
+
 def test_deleteSSHKeyFromSSO_is_restricted(self, dry_run=False):
 with admin_logged_in():
 target = self.factory.makePerson()

=== modified file 'lib/lp/registry/interfaces/person.py'
--- lib/lp/registry/interfaces/person.py	2018-05-14 10:59:35 +
+++ lib/lp/registry/interfaces/person.py	2018-08-02 16:35:09 +
@@ -2352,8 +2352,9 @@
 @operation_parameters(
 openid_identifier=TextLine(
 title=_("OpenID identifier suffix"), required=True),
-key_text=TextLine(
-title=_("SSH key text"), required=True),
+# This is more liberal than the type for adding keys, in order to
+# avoid existing keys being undeleteable.
+key_text=Text(title=_("SSH key text"), required=True),
 dry_run=Bool(_("Don't save changes")))
 @export_write_operation()
 @operation_for_version("devel")

___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp