2 changed files with 80 additions and 8 deletions
@ -0,0 +1,72 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
import asyncio |
||||||
|
import io |
||||||
|
|
||||||
|
from electrum.plugins.joinmarket.jmdaemon import ( |
||||||
|
OnionMessageChannel, MessageChannelCollection) |
||||||
|
from electrum.plugins.joinmarket.jmdaemon.onionmc import OnionPeer |
||||||
|
from electrum.plugins.joinmarket.jmdaemon.onionmc_support import ( |
||||||
|
TorClientService) |
||||||
|
|
||||||
|
from electrum.plugins.joinmarket.tests import JMTestCase |
||||||
|
|
||||||
|
|
||||||
|
class DummyTransport(asyncio.Transport): |
||||||
|
|
||||||
|
def __init__(self, logger): |
||||||
|
super().__init__() |
||||||
|
self._t = io.BytesIO(b'') |
||||||
|
self.logger = logger |
||||||
|
|
||||||
|
def write(self, data): |
||||||
|
self.logger.debug(f'DummyTransport.write: {data}') |
||||||
|
self._t.write(data) |
||||||
|
|
||||||
|
def close(self): |
||||||
|
self._t.close() |
||||||
|
|
||||||
|
|
||||||
|
class DummyTorClientService(TorClientService): |
||||||
|
|
||||||
|
async def _proxy_create_conn(self): |
||||||
|
self.logger.debug(f'_proxy_create_conn: {self.factory.buildProtocol}, ' |
||||||
|
f'{self.host}:{self.port}') |
||||||
|
self.transport = DummyTransport(self.logger) |
||||||
|
self.protocol = self.factory.buildProtocol() |
||||||
|
self.protocol.connection_made(self.transport) |
||||||
|
|
||||||
|
|
||||||
|
class DummyMC(OnionMessageChannel): |
||||||
|
|
||||||
|
def __init__(self, jmman, configdata, nick): |
||||||
|
super().__init__(jmman, configdata, |
||||||
|
client_service_cls=DummyTorClientService) |
||||||
|
self.set_nick(nick) |
||||||
|
|
||||||
|
|
||||||
|
class OnionBaseTestCase(JMTestCase): |
||||||
|
|
||||||
|
async def asyncSetUp(self): |
||||||
|
await super().asyncSetUp() |
||||||
|
jmman = self.jmman |
||||||
|
jmconf = jmman.jmconf |
||||||
|
jmconf.maker_timeout_sec = 1 |
||||||
|
configdata = list(jmconf.get_msg_channels().values())[2] |
||||||
|
directory_node = configdata['directory_nodes'].split(',')[0] |
||||||
|
configdata['directory_nodes'] = directory_node |
||||||
|
self.mc = DummyMC(jmman, configdata, 'onionnick') |
||||||
|
self.mcc = MessageChannelCollection([self.mc], jmman) |
||||||
|
await self.mcc.run() |
||||||
|
|
||||||
|
async def asyncTearDown(self): |
||||||
|
|
||||||
|
async def cb(m): |
||||||
|
# don't try to reconnect |
||||||
|
m.give_up = True |
||||||
|
await m.shutdown() |
||||||
|
|
||||||
|
await cb(self.mc) |
||||||
|
|
||||||
|
async def test_setup(self): |
||||||
|
assert 0 |
||||||
Loading…
Reference in new issue