File: testclient.py

package info (click to toggle)
python-easywebdav 1.2.0-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152 kB
  • sloc: python: 251; sh: 43; makefile: 13
file content (73 lines) | stat: -rwxr-xr-x 2,185 bytes parent folder | download | duplicates (4)
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)