URI: 
       ttests:  test with all AES implementations - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit d03da4d1a22a5f77e5700a89ab3bd78f3eedd9c9
   DIR parent 770f438249078b598964d44b72242fc64e4ece75
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Fri, 25 May 2018 22:06:45 +0200
       
       ttests:  test with all AES implementations
       
       Diffstat:
         M lib/tests/test_bitcoin.py           |      34 +++++++++++++++++++++++++++++++
       
       1 file changed, 34 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/lib/tests/test_bitcoin.py b/lib/tests/test_bitcoin.py
       t@@ -53,12 +53,40 @@ def needs_test_with_all_ecc_implementations(func):
            return run_test
        
        
       +def needs_test_with_all_aes_implementations(func):
       +    """Function decorator to run a unit test twice:
       +    once when pycryptodomex is not available, once when it is.
       +
       +    NOTE: this is inherently sequential;
       +    tests running in parallel would break things
       +    """
       +    def run_test(*args, **kwargs):
       +        _aes = crypto.AES
       +        crypto.AES = None
       +        try:
       +            # first test without pycryptodomex
       +            func(*args, **kwargs)
       +        finally:
       +            # if pycryptodomex is not available, we are done
       +            if not _aes:
       +                return
       +            crypto.AES = _aes
       +        # if pycryptodomex is available, test again now
       +        func(*args, **kwargs)
       +    return run_test
       +
       +
        class Test_bitcoin(SequentialTestCase):
        
            def test_libsecp256k1_is_available(self):
                # we want the unit testing framework to test with libsecp256k1 available.
                self.assertTrue(bool(ecc_fast._libsecp256k1))
        
       +    def test_pycryptodomex_is_available(self):
       +        # we want the unit testing framework to test with pycryptodomex available.
       +        self.assertTrue(bool(crypto.AES))
       +
       +    @needs_test_with_all_aes_implementations
            @needs_test_with_all_ecc_implementations
            def test_crypto(self):
                for message in [b"Chancellor on brink of second bailout for banks", b'\xff'*512]:
       t@@ -120,6 +148,7 @@ class Test_bitcoin(SequentialTestCase):
                self.assertFalse(ecc.verify_message_with_address(addr1, b'wrong', msg1))
                self.assertFalse(ecc.verify_message_with_address(addr1, sig2, msg1))
        
       +    @needs_test_with_all_aes_implementations
            @needs_test_with_all_ecc_implementations
            def test_decrypt_message(self):
                key = WalletStorage.get_eckey_from_password('pw123')
       t@@ -127,6 +156,7 @@ class Test_bitcoin(SequentialTestCase):
                self.assertEqual(b'me<(s_s)>age', key.decrypt_message(b'QklFMQKXOXbylOQTSMGfo4MFRwivAxeEEkewWQrpdYTzjPhqjHcGBJwdIhB7DyRfRQihuXx1y0ZLLv7XxLzrILzkl/H4YUtZB4uWjuOAcmxQH4i/Og=='))
parazyd.org:70 /git/electrum/commit/d03da4d1a22a5f77e5700a89ab3bd78f3eedd9c9.gph:72: line too long