Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
at main 79 lines 3.3 kB view raw
1import socket 2import struct 3import os 4 5import pytest 6from util import helper 7from Config import config 8 9 10@pytest.mark.usefixtures("resetSettings") 11class TestHelper: 12 def testShellquote(self): 13 assert helper.shellquote("hel'lo") == "\"hel'lo\"" # Allow ' 14 assert helper.shellquote('hel"lo') == '"hello"' # Remove " 15 assert helper.shellquote("hel'lo", 'hel"lo') == ('"hel\'lo"', '"hello"') 16 17 def testPackAddress(self): 18 for port in [1, 1000, 65535]: 19 for ip in ["1.1.1.1", "127.0.0.1", "0.0.0.0", "255.255.255.255", "192.168.1.1"]: 20 assert len(helper.packAddress(ip, port)) == 6 21 assert helper.unpackAddress(helper.packAddress(ip, port)) == (ip, port) 22 23 for ip in ["1:2:3:4:5:6:7:8", "::1", "2001:19f0:6c01:e76:5400:1ff:fed6:3eca", "2001:4860:4860::8888"]: 24 assert len(helper.packAddress(ip, port)) == 18 25 assert helper.unpackAddress(helper.packAddress(ip, port)) == (ip, port) 26 27 assert len(helper.packOnionAddress("boot3rdez4rzn36x.onion", port)) == 12 28 assert helper.unpackOnionAddress(helper.packOnionAddress("boot3rdez4rzn36x.onion", port)) == ("boot3rdez4rzn36x.onion", port) 29 30 with pytest.raises(struct.error): 31 helper.packAddress("1.1.1.1", 100000) 32 33 with pytest.raises(socket.error): 34 helper.packAddress("999.1.1.1", 1) 35 36 with pytest.raises(Exception): 37 helper.unpackAddress("X") 38 39 def testGetDirname(self): 40 assert helper.getDirname("data/users/content.json") == "data/users/" 41 assert helper.getDirname("data/users") == "data/" 42 assert helper.getDirname("") == "" 43 assert helper.getDirname("content.json") == "" 44 assert helper.getDirname("data/users/") == "data/users/" 45 assert helper.getDirname("/data/users/content.json") == "data/users/" 46 47 def testGetFilename(self): 48 assert helper.getFilename("data/users/content.json") == "content.json" 49 assert helper.getFilename("data/users") == "users" 50 assert helper.getFilename("") == "" 51 assert helper.getFilename("content.json") == "content.json" 52 assert helper.getFilename("data/users/") == "" 53 assert helper.getFilename("/data/users/content.json") == "content.json" 54 55 def testIsIp(self): 56 assert helper.isIp("1.2.3.4") 57 assert helper.isIp("255.255.255.255") 58 assert not helper.isIp("any.host") 59 assert not helper.isIp("1.2.3.4.com") 60 assert not helper.isIp("1.2.3.4.any.host") 61 62 def testIsPrivateIp(self): 63 assert helper.isPrivateIp("192.168.1.1") 64 assert not helper.isPrivateIp("1.1.1.1") 65 assert helper.isPrivateIp("fe80::44f0:3d0:4e6:637c") 66 assert not helper.isPrivateIp("fca5:95d6:bfde:d902:8951:276e:1111:a22c") # cjdns 67 68 def testOpenLocked(self): 69 locked_f = helper.openLocked(config.data_dir + "/locked.file") 70 assert locked_f 71 with pytest.raises(BlockingIOError): 72 locked_f_again = helper.openLocked(config.data_dir + "/locked.file") 73 locked_f_different = helper.openLocked(config.data_dir + "/locked_different.file") 74 75 locked_f.close() 76 locked_f_different.close() 77 78 os.unlink(locked_f.name) 79 os.unlink(locked_f_different.name)