-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_cleanallwebdav.py
107 lines (88 loc) · 3.58 KB
/
test_cleanallwebdav.py
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
""" Testing WebDAV functions for Sunet Drive
Author: Richard Freitag <freitag@sunet.se>
"""
import unittest
import requests
from requests.auth import HTTPBasicAuth
import json
import os
from webdav3.client import Client
import logging
from datetime import datetime
import time
import threading
import sunetnextcloud
g_testtarget = os.environ.get('NextcloudTestTarget')
g_excludeList = ['selenium-system/', 'selenium-personal/', 'projectbucket/']
# os.environ.set()
ocsheaders = { "OCS-APIRequest" : "true" }
davThreadRunning = False
class CleanWebDAV(threading.Thread):
logger = logging.getLogger('ThreadLogger')
logging.basicConfig(format = '%(asctime)s - %(module)s.%(funcName)s - %(levelname)s: %(message)s',
datefmt = '%Y-%m-%d %H:%M:%S', level = logging.INFO)
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
global davThreadRunning
self.logger.info(f'DAV cleaning thread started: {self.name}')
drv = sunetnextcloud.TestTarget(g_testtarget)
davThreadRunning = True
fullnode = self.name
nodeuser = drv.get_seleniumuser(fullnode)
# nodepwd = drv.get_seleniumuserpassword(fullnode)
nodepwd = drv.get_seleniumuserapppassword(fullnode)
nodepwd
url = drv.get_webdav_url(fullnode, nodeuser)
self.logger.info(url)
options = {
'webdav_hostname': url,
'webdav_login' : nodeuser,
'webdav_password' : nodepwd
}
client = Client(options)
client.list()
davElements = client.list()
self.logger.info(f'1. DAV elements: {davElements}')
davElements.pop(0)
self.logger.info(f'2. Remove first element: {davElements}')
for rootElem in davElements:
if rootElem in g_excludeList:
self.logger.info(f'Cleaning subfolders in : {rootElem}')
subElements = client.list(rootElem)
subElements.pop(0)
for subElement in subElements:
self.logger.info(f'Removing {fullnode} - {drv.target} - {subElement}')
try:
client.clean(rootElem + subElement)
except:
self.logger.error(f'Could not delete sub element {rootElem}\\{subElement}')
else:
self.logger.info(f'Removing {fullnode} - {drv.target} - {rootElem}')
try:
client.clean(rootElem)
except:
self.logger.error(f'Could not delete {fullnode} - {drv.target} - {rootElem}')
self.logger.info(f'DAV cleaning thread done: {self.name}')
davThreadRunning = False
class TestCleanAllWebDAV(unittest.TestCase):
logger = logging.getLogger(__name__)
logging.basicConfig(format = '%(asctime)s - %(module)s.%(funcName)s - %(levelname)s: %(message)s',
datefmt = '%Y-%m-%d %H:%M:%S', level = logging.INFO)
def test_logger(self):
self.logger.info(f'self.logger.info test_logger')
pass
def test_cleanallwebdav(self):
self.logger.info(f'Target: {g_testtarget}')
drv = sunetnextcloud.TestTarget(g_testtarget)
for fullnode in drv.fullnodes:
with self.subTest(mynode=fullnode):
davCleanThread = CleanWebDAV(fullnode)
davCleanThread.start()
while (davThreadRunning == True):
time.sleep(1)
if __name__ == '__main__':
import xmlrunner
# unittest.main()
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))