Merge pull request #614 from Unrud/small

Small improvements
This commit is contained in:
Unrud 2017-05-31 12:23:21 +02:00 committed by GitHub
commit 0dd2ecdb0b
6 changed files with 26 additions and 28 deletions

6
config
View File

@ -66,8 +66,8 @@
[auth] [auth]
# Authentication method # Authentication method
# Value: None | htpasswd | remote_user | http_x_remote_user # Value: none | htpasswd | remote_user | http_x_remote_user
#type = None #type = none
# Htpasswd filename # Htpasswd filename
#htpasswd_filename = /etc/radicale/users #htpasswd_filename = /etc/radicale/users
@ -85,7 +85,7 @@
[rights] [rights]
# Rights backend # Rights backend
# Value: None | authenticated | owner_only | owner_write | from_file # Value: none | authenticated | owner_only | owner_write | from_file
#type = owner_only #type = owner_only
# File for rights management from_file # File for rights management from_file

View File

@ -334,8 +334,8 @@ class Application:
status, client.responses.get(status, "Unknown")) status, client.responses.get(status, "Unknown"))
self.logger.info( self.logger.info(
"%s answer status for %r%s in %.3f seconds: %s", "%s answer status for %r%s in %.3f seconds: %s",
environ["REQUEST_METHOD"], environ["PATH_INFO"], depthinfo, environ["REQUEST_METHOD"], environ.get("PATH_INFO", ""),
(time_end - time_begin).total_seconds(), status) depthinfo, (time_end - time_begin).total_seconds(), status)
# Return response content # Return response content
return status, list(headers.items()), [answer] if answer else [] return status, list(headers.items()), [answer] if answer else []
@ -372,15 +372,15 @@ class Application:
environ.get("SCRIPT_NAME", "")).rstrip("/") environ.get("SCRIPT_NAME", "")).rstrip("/")
self.logger.debug("Sanitized script name: %r", environ["SCRIPT_NAME"]) self.logger.debug("Sanitized script name: %r", environ["SCRIPT_NAME"])
base_prefix = environ["SCRIPT_NAME"] base_prefix = environ["SCRIPT_NAME"]
environ["PATH_INFO"] = environ.get("PATH_INFO", "")
# Sanitize request URI (a WSGI server indicates with an empty path, # Sanitize request URI (a WSGI server indicates with an empty path,
# that the URL targets the application root without a trailing slash) # that the URL targets the application root without a trailing slash)
if environ["PATH_INFO"]: if environ["PATH_INFO"]:
environ["PATH_INFO"] = storage.sanitize_path(environ["PATH_INFO"]) environ["PATH_INFO"] = storage.sanitize_path(environ["PATH_INFO"])
self.logger.debug("Sanitized path: %r", environ["PATH_INFO"]) self.logger.debug("Sanitized path: %r", environ["PATH_INFO"])
# SCRIPT_NAME is already removed from PATH_INFO, according to the
# WSGI specification.
path = environ["PATH_INFO"] path = environ["PATH_INFO"]
if base_prefix and path.startswith(base_prefix):
path = path[len(base_prefix):]
self.logger.debug("Stripped script name from path: %s", path)
# Get function corresponding to method # Get function corresponding to method
function = getattr(self, "do_%s" % environ["REQUEST_METHOD"].upper()) function = getattr(self, "do_%s" % environ["REQUEST_METHOD"].upper())

View File

@ -64,7 +64,7 @@ from importlib import import_module
def load(configuration, logger): def load(configuration, logger):
"""Load the authentication manager chosen in configuration.""" """Load the authentication manager chosen in configuration."""
auth_type = configuration.get("auth", "type") auth_type = configuration.get("auth", "type")
if auth_type == "None": if auth_type in ("None", "none"): # DEPRECATED: use "none"
class_ = NoneAuth class_ = NoneAuth
elif auth_type == "remote_user": elif auth_type == "remote_user":
class_ = RemoteUserAuth class_ = RemoteUserAuth

View File

@ -48,9 +48,9 @@ from . import storage
def load(configuration, logger): def load(configuration, logger):
"""Load the rights manager chosen in configuration.""" """Load the rights manager chosen in configuration."""
rights_type = configuration.get("rights", "type") rights_type = configuration.get("rights", "type")
if configuration.get("auth", "type") == "None": if configuration.get("auth", "type") in ("None", "none"): # DEPRECATED
rights_type = "None" rights_type = "None"
if rights_type == "None": if rights_type in ("None", "none"): # DEPRECATED: use "none"
rights_class = NoneRights rights_class = NoneRights
elif rights_type == "authenticated": elif rights_type == "authenticated":
rights_class = AuthenticatedRights rights_class = AuthenticatedRights

View File

@ -21,7 +21,6 @@ Radicale tests with simple requests and authentication.
""" """
import base64 import base64
import logging
import os import os
import shutil import shutil
import tempfile import tempfile
@ -40,7 +39,6 @@ class TestBaseAuthRequests(BaseTest):
""" """
def setup(self): def setup(self):
self.configuration = config.load() self.configuration = config.load()
self.logger = logging.getLogger("radicale_test")
self.colpath = tempfile.mkdtemp() self.colpath = tempfile.mkdtemp()
self.configuration.set("storage", "filesystem_folder", self.colpath) self.configuration.set("storage", "filesystem_folder", self.colpath)
# Disable syncing to disk for better performance # Disable syncing to disk for better performance
@ -63,14 +61,14 @@ class TestBaseAuthRequests(BaseTest):
self.configuration.set("auth", "htpasswd_encryption", self.configuration.set("auth", "htpasswd_encryption",
htpasswd_encryption) htpasswd_encryption)
self.application = Application(self.configuration, self.logger) self.application = Application(self.configuration, self.logger)
for user, password, expeced_status in ( for user, password, expected_status in (
("tmp", "bepo", 207), ("tmp", "tmp", 401), ("tmp", "", 401), ("tmp", "bepo", 207), ("tmp", "tmp", 401), ("tmp", "", 401),
("unk", "unk", 401), ("unk", "", 401), ("", "", 401)): ("unk", "unk", 401), ("unk", "", 401), ("", "", 401)):
status, headers, answer = self.request( status, headers, answer = self.request(
"PROPFIND", "/", "PROPFIND", "/",
HTTP_AUTHORIZATION="Basic %s" % base64.b64encode( HTTP_AUTHORIZATION="Basic %s" % base64.b64encode(
("%s:%s" % (user, password)).encode()).decode()) ("%s:%s" % (user, password)).encode()).decode())
assert status == expeced_status assert status == expected_status
def test_htpasswd_plain(self): def test_htpasswd_plain(self):
self._test_htpasswd("plain", "tmp:bepo") self._test_htpasswd("plain", "tmp:bepo")
@ -142,6 +140,6 @@ class TestBaseAuthRequests(BaseTest):
self.configuration.set("auth", "type", "tests.custom.auth") self.configuration.set("auth", "type", "tests.custom.auth")
self.application = Application(self.configuration, self.logger) self.application = Application(self.configuration, self.logger)
status, headers, answer = self.request( status, headers, answer = self.request(
"GET", "/", HTTP_AUTHORIZATION="dG1wOmJlcG8=") "PROPFIND", "/tmp", HTTP_AUTHORIZATION="Basic %s" %
assert status == 200 base64.b64encode(("tmp:").encode()).decode())
assert "Radicale works!" in answer assert status == 207

View File

@ -102,16 +102,16 @@ class TestBaseAuthRequests(BaseTest):
self._test_rights("authenticated", "tmp", "/other", "w", 207) self._test_rights("authenticated", "tmp", "/other", "w", 207)
def test_none(self): def test_none(self):
self._test_rights("None", "", "/", "r", 207) self._test_rights("none", "", "/", "r", 207)
self._test_rights("None", "", "/", "w", 207) self._test_rights("none", "", "/", "w", 207)
self._test_rights("None", "", "/tmp", "r", 207) self._test_rights("none", "", "/tmp", "r", 207)
self._test_rights("None", "", "/tmp", "w", 207) self._test_rights("none", "", "/tmp", "w", 207)
self._test_rights("None", "tmp", "/", "r", 207) self._test_rights("none", "tmp", "/", "r", 207)
self._test_rights("None", "tmp", "/", "w", 207) self._test_rights("none", "tmp", "/", "w", 207)
self._test_rights("None", "tmp", "/tmp", "r", 207) self._test_rights("none", "tmp", "/tmp", "r", 207)
self._test_rights("None", "tmp", "/tmp", "w", 207) self._test_rights("none", "tmp", "/tmp", "w", 207)
self._test_rights("None", "tmp", "/other", "r", 207) self._test_rights("none", "tmp", "/other", "r", 207)
self._test_rights("None", "tmp", "/other", "w", 207) self._test_rights("none", "tmp", "/other", "w", 207)
def test_from_file(self): def test_from_file(self):
rights_file_path = os.path.join(self.colpath, "rights") rights_file_path = os.path.join(self.colpath, "rights")