User: Fix error handling when hostmasks overlap.

This commit is contained in:
Valentin Lorentz 2016-09-14 19:10:26 +02:00
parent 08c6238e14
commit b3bed0d6f9
2 changed files with 18 additions and 2 deletions

View File

@ -356,6 +356,7 @@ class User(callbacks.Plugin):
try:
ircdb.users.setUser(user)
except ircdb.DuplicateHostmask:
user.removeHostmask(hostmask)
irc.error(_('That hostmask is already registered.'),
Raise=True)
except ValueError as e:

View File

@ -38,8 +38,8 @@ import supybot.utils as utils
class UserTestCase(PluginTestCase):
plugins = ('User', 'Admin', 'Config')
prefix1 = 'somethingElse!user@host.tld'
prefix2 = 'EvensomethingElse!user@host.tld'
prefix1 = 'somethingElse!user@host1.tld'
prefix2 = 'EvensomethingElse!user@host2.tld'
def testHostmaskList(self):
self.assertError('hostmask list')
@ -60,6 +60,21 @@ class UserTestCase(PluginTestCase):
self.assertNotError('identify foo bar')
self.assertRegexp('hostmask list', 'no registered hostmasks')
def testHostmaskOverlap(self):
self.assertNotError('register foo passwd', frm=self.prefix1)
self.assertNotError('register bar passwd', frm=self.prefix2)
self.assertResponse('whoami', 'foo', frm=self.prefix1)
self.assertResponse('whoami', 'bar', frm=self.prefix2)
self.assertNotError('hostmask add foo *!*@foobar/b',
frm=self.prefix1)
self.assertResponse('hostmask add bar *!*@foobar/*',
'Error: That hostmask is already registered.',
frm=self.prefix2)
self.assertRegexp('hostmask list foo', '\*!\*@foobar/b',
frm=self.prefix1)
self.assertNotRegexp('hostmask list bar', 'foobar',
frm=self.prefix2)
def testHostmask(self):
self.assertResponse('hostmask', self.prefix)