diff --git a/plugins/disabled-Bootstrapper/Test/TestBootstrapper.py b/plugins/disabled-Bootstrapper/Test/TestBootstrapper.py index 67669fbf..fabec8c3 100644 --- a/plugins/disabled-Bootstrapper/Test/TestBootstrapper.py +++ b/plugins/disabled-Bootstrapper/Test/TestBootstrapper.py @@ -27,8 +27,9 @@ def bootstrapper_db(request): @pytest.mark.usefixtures("resetSettings") class TestBootstrapper: - def testIp4(self, file_server, bootstrapper_db): - peer = Peer("127.0.0.1", 1544, connection_server=file_server) + def testBootstrapperDb(self, file_server, bootstrapper_db): + ip_type = helper.getIpType(file_server.ip) + peer = Peer(file_server.ip, 1544, connection_server=file_server) hash1 = hashlib.sha256("site1").digest() hash2 = hashlib.sha256("site2").digest() hash3 = hashlib.sha256("site3").digest() @@ -36,84 +37,85 @@ class TestBootstrapper: # Verify empty result res = peer.request("announce", { "hashes": [hash1, hash2], - "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": ["ip4"] + "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [ip_type] }) - assert len(res["peers"][0]["ip4"]) == 0 # Empty result + assert len(res["peers"][0][ip_type]) == 0 # Empty result # Verify added peer on previous request - bootstrapper_db.peerAnnounce(ip4="1.2.3.4", port=15441, hashes=[hash1, hash2], delete_missing_hashes=True) + bootstrapper_db.peerAnnounce(ip_type, file_server.ip_external, port=15441, hashes=[hash1, hash2], delete_missing_hashes=True) res = peer.request("announce", { "hashes": [hash1, hash2], - "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": ["ip4"] + "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [ip_type] }) - assert len(res["peers"][0]["ip4"]) == 1 - assert len(res["peers"][1]["ip4"]) == 1 + assert len(res["peers"][0][ip_type]) == 1 + assert len(res["peers"][1][ip_type]) == 1 # hash2 deleted from 1.2.3.4 - bootstrapper_db.peerAnnounce(ip4="1.2.3.4", port=15441, hashes=[hash1], delete_missing_hashes=True) + bootstrapper_db.peerAnnounce(ip_type, file_server.ip_external, port=15441, hashes=[hash1], delete_missing_hashes=True) res = peer.request("announce", { "hashes": [hash1, hash2], - "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": ["ip4"] + "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [ip_type] }) - assert len(res["peers"][0]["ip4"]) == 1 - assert len(res["peers"][1]["ip4"]) == 0 + assert len(res["peers"][0][ip_type]) == 1 + assert len(res["peers"][1][ip_type]) == 0 # Announce 3 hash again - bootstrapper_db.peerAnnounce(ip4="1.2.3.4", port=15441, hashes=[hash1, hash2, hash3], delete_missing_hashes=True) + bootstrapper_db.peerAnnounce(ip_type, file_server.ip_external, port=15441, hashes=[hash1, hash2, hash3], delete_missing_hashes=True) res = peer.request("announce", { "hashes": [hash1, hash2, hash3], - "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": ["ip4"] + "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [ip_type] }) - assert len(res["peers"][0]["ip4"]) == 1 - assert len(res["peers"][1]["ip4"]) == 1 - assert len(res["peers"][2]["ip4"]) == 1 + assert len(res["peers"][0][ip_type]) == 1 + assert len(res["peers"][1][ip_type]) == 1 + assert len(res["peers"][2][ip_type]) == 1 # Single hash announce res = peer.request("announce", { - "hashes": [hash1], "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": ["ip4"] + "hashes": [hash1], "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [ip_type] }) - assert len(res["peers"][0]["ip4"]) == 1 + assert len(res["peers"][0][ip_type]) == 1 # Test DB cleanup - assert bootstrapper_db.execute("SELECT COUNT(*) AS num FROM peer").fetchone()["num"] == 1 # 127.0.0.1 never get added to db + assert map(lambda row: row[0], bootstrapper_db.execute("SELECT address FROM peer").fetchall()) == [file_server.ip_external] # 127.0.0.1 never get added to db # Delete peers - bootstrapper_db.execute("DELETE FROM peer WHERE ip4 = '1.2.3.4'") + bootstrapper_db.execute("DELETE FROM peer WHERE address = ?", [file_server.ip_external]) assert bootstrapper_db.execute("SELECT COUNT(*) AS num FROM peer_to_hash").fetchone()["num"] == 0 assert bootstrapper_db.execute("SELECT COUNT(*) AS num FROM hash").fetchone()["num"] == 3 # 3 sites assert bootstrapper_db.execute("SELECT COUNT(*) AS num FROM peer").fetchone()["num"] == 0 # 0 peer def testPassive(self, file_server, bootstrapper_db): - peer = Peer("127.0.0.1", 1544, connection_server=file_server) + peer = Peer(file_server.ip, 1544, connection_server=file_server) + ip_type = helper.getIpType(file_server.ip) hash1 = hashlib.sha256("hash1").digest() - bootstrapper_db.peerAnnounce(ip4=None, port=15441, hashes=[hash1]) + bootstrapper_db.peerAnnounce(ip_type, address=None, port=15441, hashes=[hash1]) res = peer.request("announce", { - "hashes": [hash1], "port": 15441, "need_types": ["ip4"], "need_num": 10, "add": [] + "hashes": [hash1], "port": 15441, "need_types": [ip_type], "need_num": 10, "add": [] }) - assert len(res["peers"][0]["ip4"]) == 0 # Empty result + assert len(res["peers"][0]["ipv4"]) == 0 # Empty result def testAddOnion(self, file_server, site, bootstrapper_db, tor_manager): onion1 = tor_manager.addOnion() onion2 = tor_manager.addOnion() - peer = Peer("127.0.0.1", 1544, connection_server=file_server) + peer = Peer(file_server.ip, 1544, connection_server=file_server) hash1 = hashlib.sha256("site1").digest() hash2 = hashlib.sha256("site2").digest() hash3 = hashlib.sha256("site3").digest() - bootstrapper_db.peerAnnounce(ip4="1.2.3.4", port=1234, hashes=[hash1, hash2, hash3]) + bootstrapper_db.peerAnnounce(ip_type="ipv4", address="1.2.3.4", port=1234, hashes=[hash1, hash2, hash3]) res = peer.request("announce", { "onions": [onion1, onion1, onion2], - "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ip4", "onion"], "need_num": 10, "add": ["onion"] + "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ipv4", "onion"], "need_num": 10, "add": ["onion"] }) - assert len(res["peers"][0]["ip4"]) == 1 + assert len(res["peers"][0]["ipv4"]) == 1 # Onion address not added yet - site_peers = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash1) + site_peers = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash1) assert len(site_peers["onion"]) == 0 assert "onion_sign_this" in res @@ -125,62 +127,61 @@ class TestBootstrapper: res = peer.request("announce", { "onions": [onion1], "onion_sign_this": res["onion_sign_this"], "onion_signs": {tor_manager.getPublickey(onion2): sign2}, - "hashes": [hash1], "port": 15441, "need_types": ["ip4", "onion"], "need_num": 10, "add": ["onion"] + "hashes": [hash1], "port": 15441, "need_types": ["ipv4", "onion"], "need_num": 10, "add": ["onion"] }) assert "onion_sign_this" in res - site_peers1 = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash1) + site_peers1 = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash1) assert len(site_peers1["onion"]) == 0 # Not added # Bad sign (missing one) res = peer.request("announce", { "onions": [onion1, onion1, onion2], "onion_sign_this": res["onion_sign_this"], "onion_signs": {tor_manager.getPublickey(onion1): sign1}, - "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ip4", "onion"], "need_num": 10, "add": ["onion"] + "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ipv4", "onion"], "need_num": 10, "add": ["onion"] }) assert "onion_sign_this" in res - site_peers1 = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash1) + site_peers1 = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash1) assert len(site_peers1["onion"]) == 0 # Not added # Good sign res = peer.request("announce", { "onions": [onion1, onion1, onion2], "onion_sign_this": res["onion_sign_this"], "onion_signs": {tor_manager.getPublickey(onion1): sign1, tor_manager.getPublickey(onion2): sign2}, - "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ip4", "onion"], "need_num": 10, "add": ["onion"] + "hashes": [hash1, hash2, hash3], "port": 15441, "need_types": ["ipv4", "onion"], "need_num": 10, "add": ["onion"] }) assert "onion_sign_this" not in res # Onion addresses added - site_peers1 = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash1) + site_peers1 = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash1) assert len(site_peers1["onion"]) == 1 - site_peers2 = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash2) + site_peers2 = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash2) assert len(site_peers2["onion"]) == 1 - site_peers3 = bootstrapper_db.peerList(ip4="1.2.3.4", port=1234, hash=hash3) + site_peers3 = bootstrapper_db.peerList(address="1.2.3.4", port=1234, hash=hash3) assert len(site_peers3["onion"]) == 1 assert site_peers1["onion"][0] == site_peers2["onion"][0] assert site_peers2["onion"][0] != site_peers3["onion"][0] - assert helper.unpackOnionAddress(site_peers1["onion"][0])[0] == onion1+".onion" - assert helper.unpackOnionAddress(site_peers2["onion"][0])[0] == onion1+".onion" - assert helper.unpackOnionAddress(site_peers3["onion"][0])[0] == onion2+".onion" + assert helper.unpackOnionAddress(site_peers1["onion"][0])[0] == onion1 + ".onion" + assert helper.unpackOnionAddress(site_peers2["onion"][0])[0] == onion1 + ".onion" + assert helper.unpackOnionAddress(site_peers3["onion"][0])[0] == onion2 + ".onion" tor_manager.delOnion(onion1) tor_manager.delOnion(onion2) - def testRequestPeers(self, file_server, site, bootstrapper_db, tor_manager): site.connection_server = file_server - site.connection_server.tor_manager = tor_manager + file_server.tor_manager = tor_manager hash = hashlib.sha256(site.address).digest() # Request peers from tracker assert len(site.peers) == 0 - bootstrapper_db.peerAnnounce(ip4="1.2.3.4", port=1234, hashes=[hash]) - site.announceTracker("zero", "127.0.0.1:1544") + bootstrapper_db.peerAnnounce(ip_type="ipv4", address="1.2.3.4", port=1234, hashes=[hash]) + site.announcer.announceTracker("zero://%s:%s" % (file_server.ip, file_server.port)) assert len(site.peers) == 1 # Test onion address store - bootstrapper_db.peerAnnounce(onion="bka4ht2bzxchy44r", port=1234, hashes=[hash], onion_signed=True) - site.announceTracker("zero", "127.0.0.1:1544") + bootstrapper_db.peerAnnounce(ip_type="onion", address="bka4ht2bzxchy44r", port=1234, hashes=[hash], onion_signed=True) + site.announcer.announceTracker("zero://%s:%s" % (file_server.ip, file_server.port)) assert len(site.peers) == 2 assert "bka4ht2bzxchy44r.onion:1234" in site.peers