def test_load(event_loop):
    cache = stub(get=lambda url: None, add=lambda url, content: None)
    transport = asyncio.AsyncTransport(loop=event_loop, cache=cache)

    with aioresponses() as m:
        m.get('http://tests.python-zeep.org/test.xml', body='x')
        result = transport.load('http://tests.python-zeep.org/test.xml')
        assert result == b'x'
def test_http_error(event_loop):
    transport = asyncio.AsyncTransport(loop=event_loop)

    with aioresponses() as m:
        m.get("http://tests.python-zeep.org/test.xml", body="x", status=500)
        with pytest.raises(exceptions.TransportError) as exc:
            transport.load("http://tests.python-zeep.org/test.xml")
            assert exc.value.status_code == 500
            assert exc.value.message is None
def test_load_cache(event_loop):
    cache = InMemoryCache()
    transport = asyncio.AsyncTransport(loop=event_loop, cache=cache)

    with aioresponses() as m:
        m.get("http://tests.python-zeep.org/test.xml", body="x")
        result = transport.load("http://tests.python-zeep.org/test.xml")
        assert result == b"x"

    assert cache.get("http://tests.python-zeep.org/test.xml") == b"x"
async def test_post(event_loop):
    cache = stub(get=lambda url: None, add=lambda url, content: None)
    transport = asyncio.AsyncTransport(loop=event_loop, cache=cache)

    envelope = etree.Element('Envelope')

    with aioresponses() as m:
        m.post('http://tests.python-zeep.org/test.xml', body='x')
        result = await transport.post_xml(
            'http://tests.python-zeep.org/test.xml',
            envelope=envelope,
            headers={})

        assert result.content == b'x'
async def test_session_no_close(event_loop):
    session = aiohttp.ClientSession(loop=event_loop)
    transport = asyncio.AsyncTransport(loop=event_loop, session=session)
    del transport
    assert not session.closed
async def test_session_close(event_loop):
    transport = asyncio.AsyncTransport(loop=event_loop)
    session = transport.session  # copy session object from transport
    del transport
    assert session.closed
def test_no_cache(event_loop):
    transport = asyncio.AsyncTransport(loop=event_loop)
    assert transport.cache is None