def test_udpsession_handle_response_wrong_len(self): session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5) session.on_ip_address_resolved("127.0.0.1", start_scraper=False) self.assertFalse(session.is_failed) session.handle_connection_response("too short") self.assertTrue(session.is_failed)
def test_udpsession_handle_wrong_action_transaction(self): session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr) session.on_ip_address_resolved("127.0.0.1", start_scraper=None) self.assertFalse(session.is_failed) packet = struct.pack("!qq4s", 123, 123, "test") session.handle_connection_response(packet) self.assertTrue(session.is_failed)
def test_udpsession_correct_handle(self): session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5, self.socket_mgr) session.on_ip_address_resolved("127.0.0.1", start_scraper=False) session.result_deferred = Deferred() self.assertFalse(session.is_failed) session._infohash_list = ["test"] packet = struct.pack("!iiiii", session.action, session.transaction_id, 0, 1, 2) session.handle_scrape_response(packet) return session.result_deferred.addCallback(lambda *_: session.cleanup())
def test_big_correct_run(self): session = UdpTrackerSession("localhost", ("192.168.1.1", 1234), "/announce", 0, self.socket_mgr) session.on_ip_address_resolved("192.168.1.1") session.transport = self.mock_transport session.result_deferred = Deferred() self.assertFalse(session.is_failed) packet = struct.pack("!iiq", session.action, session.transaction_id, 126) session.handle_response(packet) session._infohash_list = ["test"] packet = struct.pack("!iiiii", session.action, session.transaction_id, 0, 1, 2) session.handle_response(packet) self.assertTrue(session.is_finished) return session.result_deferred
def test_udpsession_handle_response_wrong_len(self): session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr) session.on_ip_address_resolved("127.0.0.1") self.assertFalse(session.is_failed) session.handle_connection_response("too short") self.assertTrue(session.is_failed) # After receiving a correct packet, it session should still be in a failed state session.action = 123 session.transaction_id = 124 packet = struct.pack("!iiq", 123, 124, 126) session.handle_response(packet) self.assertTrue(session.expect_connection_response) self.assertTrue(session.is_failed)
def test_big_correct_run(self): session = UdpTrackerSession("localhost", ("192.168.1.1", 1234), "/announce", 1) session.on_ip_address_resolved("192.168.1.1", start_scraper=False) session.scraper.transport = self.mock_transport session.result_deferred = Deferred() self.assertFalse(session.is_failed) packet = struct.pack("!iiq", session._action, session._transaction_id, 126) session.scraper.datagramReceived(packet, (None, None)) session._infohash_list = ["test"] packet = struct.pack("!iiiii", session._action, session._transaction_id, 0, 1, 2) session.scraper.datagramReceived(packet, (None, None)) self.assertTrue(session.is_finished) return session.result_deferred