Test current-user-principal prop authentication workaround
This commit is contained in:
		| @@ -56,7 +56,7 @@ def xml_propfind(base_prefix, path, xml_request, allowed_items, user, | |||||||
|     if xmlutils.make_clark("D:current-user-principal") in props and not user: |     if xmlutils.make_clark("D:current-user-principal") in props and not user: | ||||||
|         # Ask for authentication |         # Ask for authentication | ||||||
|         # Returning the DAV:unauthenticated pseudo-principal as specified in |         # Returning the DAV:unauthenticated pseudo-principal as specified in | ||||||
|         # RFC 5397 doesn't seem to work with DAVdroid. |         # RFC 5397 doesn't seem to work with DAVx5. | ||||||
|         return client.FORBIDDEN, None |         return client.FORBIDDEN, None | ||||||
|  |  | ||||||
|     # Writing answer |     # Writing answer | ||||||
| @@ -372,6 +372,6 @@ class ApplicationPropfindMixin: | |||||||
|             status, xml_answer = xml_propfind( |             status, xml_answer = xml_propfind( | ||||||
|                 base_prefix, path, xml_content, allowed_items, user, |                 base_prefix, path, xml_content, allowed_items, user, | ||||||
|                 self._encoding) |                 self._encoding) | ||||||
|             if status == client.FORBIDDEN: |             if status == client.FORBIDDEN and xml_answer is None: | ||||||
|                 return httputils.NOT_ALLOWED |                 return httputils.NOT_ALLOWED | ||||||
|             return status, headers, self._write_xml_content(xml_answer) |             return status, headers, self._write_xml_content(xml_answer) | ||||||
|   | |||||||
| @@ -1303,6 +1303,19 @@ class BaseRequestsMixIn: | |||||||
|         """Verify existence of the principal collection.""" |         """Verify existence of the principal collection.""" | ||||||
|         self.propfind("/user/", login="user:") |         self.propfind("/user/", login="user:") | ||||||
|  |  | ||||||
|  |     def test_authentication_current_user_principal_workaround(self): | ||||||
|  |         """Test if server sends authentication request when accessing | ||||||
|  |            current-user-principal prop (workaround for DAVx5).""" | ||||||
|  |         status, headers, _ = self.request("PROPFIND", "/", """\ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <propfind xmlns="DAV:"> | ||||||
|  |     <prop> | ||||||
|  |         <current-user-principal /> | ||||||
|  |     </prop> | ||||||
|  | </propfind>""") | ||||||
|  |         assert status in (401, 403) | ||||||
|  |         assert headers.get("WWW-Authenticate") | ||||||
|  |  | ||||||
|     def test_existence_of_root_collections(self): |     def test_existence_of_root_collections(self): | ||||||
|         """Verify that the root collection always exists.""" |         """Verify that the root collection always exists.""" | ||||||
|         # Use PROPFIND because GET returns message |         # Use PROPFIND because GET returns message | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Unrud
					Unrud