1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#!/usr/bin/env python3
import sys
import tempfile
import filecmp
import easywebdav
host="localhost"
port=8008
def config():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--port", "-P",
type=int, default=port,
help="port the WebDAV-server listens on")
parser.add_argument(
"--user", "-u",
type=str, default=None,
help="user to authenticate as (if any)")
parser.add_argument(
"--password", "-p",
type=str, default=None,
help="password to authenticate with (if any)")
parser.add_argument(
"file",
nargs='?', default=__file__,
help="file to up/download")
return parser.parse_args()
def runtest(port, localfile, user=None, password=None):
c = easywebdav.connect(host, port, username=user, password=password)
print("easywebdav: connect to '%s:%s' as '%s'" % (host, port, user))
dirnum=0
dirname="tmp"
while c.exists(dirname):
dirnum += 1
dirname = "tmp.%s" % dirnum
print("easywebdav: exists '%s'" % (dirname,))
c.mkdir(dirname)
print("easywebdav: mkdir '%s'" % (dirname,))
filename = "file"
tmpfile = tempfile.NamedTemporaryFile()
# create a directory, upload <localfile> to it, download it
c.upload(localfile, dirname + "/" + filename)
print("easywebdav: upload '%s' to '%s'" % (localfile, dirname + "/" + filename))
c.cd(dirname)
print("easywebdav: cd '%s'" % (dirname))
c.download(filename, tmpfile)
print("easywebdav: download '%s' to '%s'" % (filename, tmpfile.name,))
# and remove all traces on the webserver
c.delete(filename)
print("easywebdav: delete '%s'" % (filename,))
c.cd("..")
print("easywebdav: cd ..")
c.rmdir(dirname)
print("easywebdav: rmdir '%s'" % (dirname,))
# then compare the two files
tmpfile.flush()
x = filecmp.cmp(localfile, tmpfile.name, shallow=False)
if not x:
raise Exception("'%s' and '%s' do not match" % (localfile, tmpfile.name))
if __name__ == "__main__":
cfg = config()
#print(cfg) or sys.exit()
runtest(cfg.port, cfg.file, cfg.user, cfg.password)
|