Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def testGetPut(self):
"""Read and write file contents."""
app = self.app
# Prepare file content
data1 = b"this is a file\nwith two lines"
data2 = b"this is another file\nwith three lines\nsee?"
# Big file with 10 MB
lines = []
line = "." * (1000 - 6 - len("\n"))
for i in compat.xrange(10 * 1000):
lines.append("%04i: %s\n" % (i, line))
data3 = "".join(lines)
data3 = compat.to_bytes(data3)
# Remove old test files
app.delete("/file1.txt", expect_errors=True)
app.delete("/file2.txt", expect_errors=True)
app.delete("/file3.txt", expect_errors=True)
# Access unmapped resource (expect '404 Not Found')
app.delete("/file1.txt", status=404)
app.get("/file1.txt", status=404)
# PUT a small file (expect '201 Created')
app.put("/file1.txt", params=data1, status=201)
res = app.get("/file1.txt", status=200)
assert res.body == data1, "GET file content different from PUT"
def testGetPut(self):
"""Read and write file contents."""
client = self.client
# Prepare file content
data1 = b"this is a file\nwith two lines"
data2 = b"this is another file\nwith three lines\nsee?"
# Big file with 10 MB
lines = []
line = "." * (1000 - 6 - len("\n"))
for i in compat.xrange(10 * 1000):
lines.append("%04i: %s\n" % (i, line))
data3 = "".join(lines)
data3 = compat.to_bytes(data3)
# Cleanup
client.delete("/test/")
client.mkcol("/test/")
client.check_response(201)
# PUT files
client.put("/test/file1.txt", data1)
client.check_response(201)
client.put("/test/file2.txt", data2)
client.check_response(201)
client.put("/test/bigfile.txt", data3)
client.check_response(201)
body = client.get("/test/file1.txt")
client.check_response(200)
def write_test_file(name, size):
path = os.path.join(gettempdir(), name)
with open(path, "wb") as f:
f.write(compat.to_bytes("*") * size)
return path
def send_basic_auth_response(self, environ, start_response):
realm = self.domain_controller.get_domain_realm(environ["PATH_INFO"], environ)
_logger.debug("401 Not Authorized for realm '{}' (basic)".format(realm))
wwwauthheaders = 'Basic realm="' + realm + '"'
body = compat.to_bytes(self.error_message_401)
start_response(
"401 Not Authorized",
[
("WWW-Authenticate", wwwauthheaders),
("Content-Type", "text/html"),
("Content-Length", str(len(body))),
("Date", util.get_rfc1123_time()),
],
)
return [body]
lines = [
self.data["title"],
"=" * len(self.data["title"]),
self.data["description"],
"",
"Status: %s" % self.data["status"],
"Orga: %8s" % self.data["orga"],
"Tags: '%s'" % "', '".join(self.data["tags"]),
"Key: %s" % self.data["key"],
]
html = "\n".join(lines)
elif self.name == ".Description.txt":
html = self.data["description"]
else:
raise DAVError(HTTP_INTERNAL_ERROR, "Invalid artifact '%s'" % self.name)
return compat.BytesIO(compat.to_bytes(html))
timekey = str(time.time())
nonce_source = timekey + calc_hexdigest(
timekey + ":" + etagkey + ":" + serverkey
)
nonce = calc_base64(nonce_source)
wwwauthheaders = 'Digest realm="{}", nonce="{}", algorithm=MD5, qop="auth"'.format(
realm, nonce
)
_logger.debug(
"401 Not Authorized for realm '{}' (digest): {}".format(
realm, wwwauthheaders
)
)
body = compat.to_bytes(self.error_message_401)
start_response(
"401 Not Authorized",
[
("WWW-Authenticate", wwwauthheaders),
("Content-Type", "text/html"),
("Content-Length", str(len(body))),
("Date", util.get_rfc1123_time()),
],
)
return [body]
[
("Content-Type", "application/xml"),
("Content-Length", str(len(xml))),
("Date", util.get_rfc1123_time()),
],
)
return [xml]
# --- Standard case: parse xml body -----------------------------------
if lockinfoEL.tag != "{DAV:}lockinfo":
self._fail(HTTP_BAD_REQUEST)
lock_type = None
lock_scope = None
lock_owner = compat.to_bytes("")
lock_depth = environ.setdefault("HTTP_DEPTH", "infinity")
for linode in lockinfoEL:
if linode.tag == "{DAV:}lockscope":
for lsnode in linode:
if lsnode.tag == "{DAV:}exclusive":
lock_scope = "exclusive"
elif lsnode.tag == "{DAV:}shared":
lock_scope = "shared"
break
elif linode.tag == "{DAV:}locktype":
for ltnode in linode:
if ltnode.tag == "{DAV:}write":
lock_type = "write" # only type accepted
break
def md5h(data):
return md5(compat.to_bytes(data)).hexdigest()