add failing test, error

This commit is contained in:
Chris Wolfe 2016-06-02 14:07:27 -07:00
parent dd1e227d5d
commit d4d3320277
2 changed files with 22 additions and 2 deletions

View File

@ -36,6 +36,12 @@ class WrongPasswordError(Exception):
# or the data blob was corrupted, and that's why decrypt failed # or the data blob was corrupted, and that's why decrypt failed
pass pass
class KeyFormatError(Exception):
"""
The key you entered contains spaces. Magic-wormhole expects keys to be
separated by dashes.
"""
class ReflectionAttack(Exception): class ReflectionAttack(Exception):
"""An attacker (or bug) reflected our outgoing message back to us.""" """An attacker (or bug) reflected our outgoing message back to us."""

View File

@ -7,7 +7,8 @@ from twisted.internet import reactor
from twisted.internet.defer import Deferred, gatherResults, inlineCallbacks from twisted.internet.defer import Deferred, gatherResults, inlineCallbacks
from .common import ServerBase from .common import ServerBase
from .. import wormhole from .. import wormhole
from ..errors import WrongPasswordError, WelcomeError, UsageError from ..errors import (WrongPasswordError, WelcomeError, UsageError,
KeyFormatError)
from spake2 import SPAKE2_Symmetric from spake2 import SPAKE2_Symmetric
from ..timing import DebugTiming from ..timing import DebugTiming
from ..util import (bytes_to_dict, dict_to_bytes, from ..util import (bytes_to_dict, dict_to_bytes,
@ -818,6 +819,20 @@ class Wormholes(ServerBase, unittest.TestCase):
yield w2.close() yield w2.close()
self.flushLoggedErrors(WrongPasswordError) self.flushLoggedErrors(WrongPasswordError)
@inlineCallbacks
def test_wrong_password_with_spaces(self):
w1 = wormhole.wormhole(APPID, self.relayurl, reactor)
w2 = wormhole.wormhole(APPID, self.relayurl, reactor)
code = yield w1.get_code()
code_no_dashes = code.replace('-', ' ')
with self.assertRaises(KeyFormatError):
w2.set_code(code_no_dashes)
yield w1.close()
yield w2.close()
self.flushLoggedErrors(ValueError)
@inlineCallbacks @inlineCallbacks
def test_verifier(self): def test_verifier(self):
w1 = wormhole.wormhole(APPID, self.relayurl, reactor) w1 = wormhole.wormhole(APPID, self.relayurl, reactor)
@ -875,4 +890,3 @@ class Errors(ServerBase, unittest.TestCase):
yield self.assertFailure(w.get_code(), UsageError) yield self.assertFailure(w.get_code(), UsageError)
yield self.assertFailure(w.input_code(), UsageError) yield self.assertFailure(w.input_code(), UsageError)
yield w.close() yield w.close()