Merge pull request #2127 from pbiering/sharing-fix-propfind-owner
Sharing fix propfind owner
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 3.7.4.dev
|
## 3.7.4.dev
|
||||||
|
* Fix: sharing: PROPFIND returns now empty owner element in case of a mapped share as clients try PROPFIND on this not accessable href
|
||||||
|
|
||||||
## 3.7.3
|
## 3.7.3
|
||||||
* Extension: expose RADICALE:version for authenticated users via PROPFIND
|
* Extension: expose RADICALE:version for authenticated users via PROPFIND
|
||||||
|
|||||||
@@ -395,7 +395,8 @@ def xml_propfind_response(
|
|||||||
is404 = True
|
is404 = True
|
||||||
elif tag == xmlutils.make_clark("D:owner"):
|
elif tag == xmlutils.make_clark("D:owner"):
|
||||||
# return empty elment, if no owner available (rfc3744-5.1)
|
# return empty elment, if no owner available (rfc3744-5.1)
|
||||||
if collection.owner:
|
# return empty element in case of a mapped share / clients try PROPFIND on this not accessable href
|
||||||
|
if collection.owner and not share:
|
||||||
child_element = ET.Element(xmlutils.make_clark("D:href"))
|
child_element = ET.Element(xmlutils.make_clark("D:href"))
|
||||||
child_element.text = xmlutils.make_href(
|
child_element.text = xmlutils.make_href(
|
||||||
base_prefix, "/%s/" % collection.owner)
|
base_prefix, "/%s/" % collection.owner)
|
||||||
|
|||||||
@@ -2236,15 +2236,18 @@ class TestSharingApiSanity(BaseTest):
|
|||||||
<propfind xmlns="DAV:">
|
<propfind xmlns="DAV:">
|
||||||
<prop>
|
<prop>
|
||||||
<current-user-principal />
|
<current-user-principal />
|
||||||
|
<owner />
|
||||||
</prop>
|
</prop>
|
||||||
</propfind>""", login="user:userpw", check=207)
|
</propfind>""", login="user:userpw", check=207)
|
||||||
logging.info("response: %r", responses)
|
logging.info("response: %r", responses)
|
||||||
response = responses[path_shared]
|
response = responses[path_shared]
|
||||||
assert not isinstance(response, int) and len(response) == 1
|
assert not isinstance(response, int) and len(response) == 2
|
||||||
status, prop = response["D:current-user-principal"]
|
status, prop = response["D:current-user-principal"]
|
||||||
assert status == 200 and len(prop) == 1
|
assert status == 200 and len(prop) == 1
|
||||||
element = prop.find(xmlutils.make_clark("D:href"))
|
element = prop.find(xmlutils.make_clark("D:href"))
|
||||||
assert element is not None and element.text == "/user/"
|
assert element is not None and element.text == "/user/"
|
||||||
|
status, prop = response["D:owner"]
|
||||||
|
assert status == 200 and len(prop) == 0
|
||||||
|
|
||||||
def test_sharing_api_map_proppatch_acl(self) -> None:
|
def test_sharing_api_map_proppatch_acl(self) -> None:
|
||||||
"""share-by-map API usage tests related to report."""
|
"""share-by-map API usage tests related to report."""
|
||||||
|
|||||||
Reference in New Issue
Block a user