mirror of
https://github.com/Kozea/Radicale.git
synced 2025-09-15 20:36:55 +00:00
add test cases
This commit is contained in:
parent
5a591b6471
commit
5d48ba5d1e
1 changed files with 47 additions and 1 deletions
|
@ -2,7 +2,7 @@
|
||||||
# Copyright © 2012-2016 Jean-Marc Martins
|
# Copyright © 2012-2016 Jean-Marc Martins
|
||||||
# Copyright © 2012-2017 Guillaume Ayoub
|
# Copyright © 2012-2017 Guillaume Ayoub
|
||||||
# Copyright © 2017-2022 Unrud <unrud@outlook.com>
|
# Copyright © 2017-2022 Unrud <unrud@outlook.com>
|
||||||
# Copyright © 2024-2024 Peter Bieringer <pb@bieringer.de>
|
# Copyright © 2024-2025 Peter Bieringer <pb@bieringer.de>
|
||||||
#
|
#
|
||||||
# This library is free software: you can redistribute it and/or modify
|
# This library is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -28,6 +28,7 @@ import sys
|
||||||
from typing import Iterable, Tuple, Union
|
from typing import Iterable, Tuple, Union
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
import logging
|
||||||
|
|
||||||
from radicale import xmlutils
|
from radicale import xmlutils
|
||||||
from radicale.tests import BaseTest
|
from radicale.tests import BaseTest
|
||||||
|
@ -101,6 +102,51 @@ class TestBaseAuthRequests(BaseTest):
|
||||||
def test_htpasswd_multi(self) -> None:
|
def test_htpasswd_multi(self) -> None:
|
||||||
self._test_htpasswd("plain", "ign:ign\ntmp:bepo")
|
self._test_htpasswd("plain", "ign:ign\ntmp:bepo")
|
||||||
|
|
||||||
|
# login cache successful
|
||||||
|
def test_htpasswd_login_cache_successful_plain(self, caplog) -> None:
|
||||||
|
caplog.set_level(logging.INFO)
|
||||||
|
self.configure({"auth": {"cache_logins": "True"}})
|
||||||
|
self._test_htpasswd("plain", "tmp:bepo", (("tmp", "bepo", True), ("tmp", "bepo", True)))
|
||||||
|
htpasswd_found = False
|
||||||
|
htpasswd_cached_found = False
|
||||||
|
for line in caplog.messages:
|
||||||
|
if line == "Successful login: 'tmp' (htpasswd)":
|
||||||
|
htpasswd_found = True
|
||||||
|
elif line == "Successful login: 'tmp' (htpasswd / cached)":
|
||||||
|
htpasswd_cached_found = True
|
||||||
|
if (htpasswd_found is False) or (htpasswd_cached_found is False):
|
||||||
|
raise ValueError("Logging misses expected log lines")
|
||||||
|
|
||||||
|
# login cache failed
|
||||||
|
def test_htpasswd_login_cache_failed_plain(self, caplog) -> None:
|
||||||
|
caplog.set_level(logging.INFO)
|
||||||
|
self.configure({"auth": {"cache_logins": "True"}})
|
||||||
|
self._test_htpasswd("plain", "tmp:bepo", (("tmp", "bepo1", False), ("tmp", "bepo1", False)))
|
||||||
|
htpasswd_found = False
|
||||||
|
htpasswd_cached_found = False
|
||||||
|
for line in caplog.messages:
|
||||||
|
if line == "Failed login attempt from unknown: 'tmp' (htpasswd)":
|
||||||
|
htpasswd_found = True
|
||||||
|
elif line == "Failed login attempt from unknown: 'tmp' (htpasswd / cached)":
|
||||||
|
htpasswd_cached_found = True
|
||||||
|
if (htpasswd_found is False) or (htpasswd_cached_found is False):
|
||||||
|
raise ValueError("Logging misses expected log lines")
|
||||||
|
|
||||||
|
# htpasswd file cache
|
||||||
|
def test_htpasswd_file_cache(self, caplog) -> None:
|
||||||
|
self.configure({"auth": {"htpasswd_cache": "True"}})
|
||||||
|
self._test_htpasswd("plain", "tmp:bepo")
|
||||||
|
|
||||||
|
# detection of broken htpasswd file entries
|
||||||
|
def test_htpasswd_broken(self) -> None:
|
||||||
|
for userpass in ["tmp:", ":tmp" ]:
|
||||||
|
try:
|
||||||
|
self._test_htpasswd("plain", userpass)
|
||||||
|
except RuntimeError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
@pytest.mark.skipif(sys.platform == "win32", reason="leading and trailing "
|
@pytest.mark.skipif(sys.platform == "win32", reason="leading and trailing "
|
||||||
"whitespaces not allowed in file names")
|
"whitespaces not allowed in file names")
|
||||||
def test_htpasswd_whitespace_user(self) -> None:
|
def test_htpasswd_whitespace_user(self) -> None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue