Esempio n. 1
0
 async def test_httpsession_scrape_no_body(self):
     session = HttpTrackerSession("localhost", ("localhost", 8475),
                                  "/announce", 5)
     session._infohash_list = []
     self.assertRaises(ValueError, session._process_scrape_response, None)
     self.assertTrue(session.is_failed)
     await session.cleanup()
Esempio n. 2
0
async def test_httpsession_failure_reason_in_dict():
    session = HttpTrackerSession("localhost", ("localhost", 8475), "/announce",
                                 5, None)
    session._infohash_list = []
    with pytest.raises(ValueError):
        session._process_scrape_response(bencode({'failure reason': 'test'}))
    assert session.is_failed
    await session.cleanup()
Esempio n. 3
0
async def test_httpsession_scrape_no_body():
    session = HttpTrackerSession("localhost", ("localhost", 8475), "/announce",
                                 5, None)
    session._infohash_list = []
    with pytest.raises(ValueError):
        session._process_scrape_response(None)
    assert session.is_failed
    await session.cleanup()
Esempio n. 4
0
async def test_httpsession_cancel_operation():
    session = HttpTrackerSession("127.0.0.1", ("localhost", 8475), "/announce",
                                 5, None)
    task = ensure_future(session.connect_to_tracker())
    with pytest.raises(CancelledError):
        task.cancel()
        await task
    await session.cleanup()
Esempio n. 5
0
 async def test_httpsession_failure_reason_in_dict(self):
     session = HttpTrackerSession("localhost", ("localhost", 8475),
                                  "/announce", 5)
     session._infohash_list = []
     self.assertRaises(ValueError, session._process_scrape_response,
                       bencode({'failure reason': 'test'}))
     self.assertTrue(session.is_failed)
     await session.cleanup()
Esempio n. 6
0
async def test_http_unprocessed_infohashes():
    session = HttpTrackerSession("localhost", ("localhost", 8475), "/announce",
                                 5, None)
    session.infohash_list.append(b"test")
    response = bencode(
        {"files": {
            b"a" * 20: {
                "complete": 10,
                "incomplete": 10
            }
        }})
    session._process_scrape_response(response)
    assert session.is_finished
    await session.cleanup()
Esempio n. 7
0
async def test_task_select_tracker(enable_chant, torrent_checker, session):
    with db_session:
        tracker = session.mds.TrackerState(url="http://localhost/tracker")
        session.mds.TorrentState(infohash=b'a' * 20,
                                 seeders=5,
                                 leechers=10,
                                 trackers={tracker})

    controlled_session = HttpTrackerSession("127.0.0.1", ("localhost", 8475),
                                            "/announce", 5, None)
    controlled_session.connect_to_tracker = lambda: succeed(None)

    torrent_checker._create_session_for_request = lambda *args, **kwargs: controlled_session
    result = await torrent_checker.check_random_tracker()
    assert not result

    assert len(controlled_session.infohash_list) == 1
Esempio n. 8
0
async def test_httpsession_unicode_err():
    session = HttpTrackerSession(
        "retracker.local", ("retracker.local", 80),
        "/announce?comment=%26%23%3B%28%2C%29%5B%5D%E3%5B%D4%E8%EB%FC%EC%EE%E2",
        5, None)

    with pytest.raises(UnicodeEncodeError):
        await session.connect_to_tracker()
    await session.cleanup()
Esempio n. 9
0
    async def test_task_select_tracker(self):
        with db_session:
            tracker = self.session.mds.TrackerState(
                url="http://localhost/tracker")
            self.session.mds.TorrentState(infohash=b'a' * 20,
                                          seeders=5,
                                          leechers=10,
                                          trackers={tracker})

        controlled_session = HttpTrackerSession("127.0.0.1",
                                                ("localhost", 8475),
                                                "/announce", 5)
        controlled_session.connect_to_tracker = lambda: succeed(None)

        self.torrent_checker._create_session_for_request = lambda *args, **kwargs: controlled_session
        result = await self.torrent_checker.check_random_tracker()
        self.assertFalse(result)

        self.assertEqual(len(controlled_session.infohash_list), 1)
Esempio n. 10
0
async def test_httpsession_code_not_200():
    session = HttpTrackerSession("localhost", ("localhost", 8475), "/announce",
                                 5, None)

    def fake_request(_):
        raise HTTPBadRequest()

    session._session.get = fake_request

    with pytest.raises(Exception):
        await session.connect_to_tracker()
    await session.cleanup()
Esempio n. 11
0
async def test_httpsession_timeout():
    sleep_task = Future()

    async def _client_connected(_, writer):
        await sleep_task
        writer.close()

    server = await start_server(_client_connected,
                                host='localhost',
                                port=0,
                                family=socket.AF_INET)
    _, port = server.sockets[0].getsockname()
    session = HttpTrackerSession("localhost", ("localhost", port), "/announce",
                                 .1, None)
    with pytest.raises(ValueError):
        await session.connect_to_tracker()
    sleep_task.set_result(None)
    await session.cleanup()
    server.close()
Esempio n. 12
0
async def test_failed_unicode():
    session = HttpTrackerSession("localhost", ("localhost", 8475), "/announce",
                                 5, None)
    with pytest.raises(ValueError):
        session._process_scrape_response(bencode({'failure reason': '\xe9'}))
    await session.cleanup()
Esempio n. 13
0
 async def test_failed_unicode(self):
     session = HttpTrackerSession(u"localhost", ("localhost", 8475),
                                  "/announce", 5)
     self.assertRaises(ValueError, session._process_scrape_response,
                       bencode({'failure reason': '\xe9'}))
     await session.cleanup()