authentik.admin.files.backends.tests.test_passthrough_backend

Test passthrough backend

 1"""Test passthrough backend"""
 2
 3from django.test import TestCase
 4
 5from authentik.admin.files.backends.passthrough import PassthroughBackend
 6from authentik.admin.files.usage import FileUsage
 7
 8
 9class TestPassthroughBackend(TestCase):
10    """Test PassthroughBackend class"""
11
12    def setUp(self):
13        """Set up test fixtures"""
14        self.backend = PassthroughBackend(FileUsage.MEDIA)
15
16    def test_allowed_usages(self):
17        """Test that PassthroughBackend only supports MEDIA usage"""
18        self.assertEqual(self.backend.allowed_usages, [FileUsage.MEDIA])
19
20    def test_supports_file_path_font_awesome(self):
21        """Test supports_file_path returns True for Font Awesome icons"""
22        self.assertTrue(self.backend.supports_file("fa://user"))
23        self.assertTrue(self.backend.supports_file("fa://home"))
24        self.assertTrue(self.backend.supports_file("fa://shield"))
25
26    def test_supports_file_path_http(self):
27        """Test supports_file_path returns True for HTTP URLs"""
28        self.assertTrue(self.backend.supports_file("http://example.com/icon.png"))
29        self.assertTrue(self.backend.supports_file("http://cdn.example.com/logo.svg"))
30
31    def test_supports_file_path_https(self):
32        """Test supports_file_path returns True for HTTPS URLs"""
33        self.assertTrue(self.backend.supports_file("https://example.com/icon.png"))
34        self.assertTrue(self.backend.supports_file("https://cdn.example.com/logo.svg"))
35
36    def test_supports_file_path_false(self):
37        """Test supports_file_path returns False for regular paths"""
38        self.assertFalse(self.backend.supports_file("icon.png"))
39        self.assertFalse(self.backend.supports_file("/static/icon.png"))
40        self.assertFalse(self.backend.supports_file("media/logo.svg"))
41        self.assertFalse(self.backend.supports_file(""))
42
43    def test_supports_file_path_invalid_scheme(self):
44        """Test supports_file_path returns False for invalid schemes"""
45        self.assertFalse(self.backend.supports_file("ftp://example.com/file.png"))
46        self.assertFalse(self.backend.supports_file("file:///path/to/file.png"))
47        self.assertFalse(self.backend.supports_file("data:image/png;base64,abc123"))
48
49    def test_list_files(self):
50        """Test list_files returns empty generator"""
51        files = list(self.backend.list_files())
52        self.assertEqual(files, [])
53
54    def test_file_url(self):
55        """Test file_url returns the URL as-is"""
56        url = "https://example.com/icon.png"
57        self.assertEqual(self.backend.file_url(url), url)
58
59    def test_file_url_font_awesome(self):
60        """Test file_url returns Font Awesome URL as-is"""
61        url = "fa://user"
62        self.assertEqual(self.backend.file_url(url), url)
63
64    def test_file_url_http(self):
65        """Test file_url returns HTTP URL as-is"""
66        url = "http://cdn.example.com/logo.svg"
67        self.assertEqual(self.backend.file_url(url), url)
class TestPassthroughBackend(django.test.testcases.TestCase):
10class TestPassthroughBackend(TestCase):
11    """Test PassthroughBackend class"""
12
13    def setUp(self):
14        """Set up test fixtures"""
15        self.backend = PassthroughBackend(FileUsage.MEDIA)
16
17    def test_allowed_usages(self):
18        """Test that PassthroughBackend only supports MEDIA usage"""
19        self.assertEqual(self.backend.allowed_usages, [FileUsage.MEDIA])
20
21    def test_supports_file_path_font_awesome(self):
22        """Test supports_file_path returns True for Font Awesome icons"""
23        self.assertTrue(self.backend.supports_file("fa://user"))
24        self.assertTrue(self.backend.supports_file("fa://home"))
25        self.assertTrue(self.backend.supports_file("fa://shield"))
26
27    def test_supports_file_path_http(self):
28        """Test supports_file_path returns True for HTTP URLs"""
29        self.assertTrue(self.backend.supports_file("http://example.com/icon.png"))
30        self.assertTrue(self.backend.supports_file("http://cdn.example.com/logo.svg"))
31
32    def test_supports_file_path_https(self):
33        """Test supports_file_path returns True for HTTPS URLs"""
34        self.assertTrue(self.backend.supports_file("https://example.com/icon.png"))
35        self.assertTrue(self.backend.supports_file("https://cdn.example.com/logo.svg"))
36
37    def test_supports_file_path_false(self):
38        """Test supports_file_path returns False for regular paths"""
39        self.assertFalse(self.backend.supports_file("icon.png"))
40        self.assertFalse(self.backend.supports_file("/static/icon.png"))
41        self.assertFalse(self.backend.supports_file("media/logo.svg"))
42        self.assertFalse(self.backend.supports_file(""))
43
44    def test_supports_file_path_invalid_scheme(self):
45        """Test supports_file_path returns False for invalid schemes"""
46        self.assertFalse(self.backend.supports_file("ftp://example.com/file.png"))
47        self.assertFalse(self.backend.supports_file("file:///path/to/file.png"))
48        self.assertFalse(self.backend.supports_file("data:image/png;base64,abc123"))
49
50    def test_list_files(self):
51        """Test list_files returns empty generator"""
52        files = list(self.backend.list_files())
53        self.assertEqual(files, [])
54
55    def test_file_url(self):
56        """Test file_url returns the URL as-is"""
57        url = "https://example.com/icon.png"
58        self.assertEqual(self.backend.file_url(url), url)
59
60    def test_file_url_font_awesome(self):
61        """Test file_url returns Font Awesome URL as-is"""
62        url = "fa://user"
63        self.assertEqual(self.backend.file_url(url), url)
64
65    def test_file_url_http(self):
66        """Test file_url returns HTTP URL as-is"""
67        url = "http://cdn.example.com/logo.svg"
68        self.assertEqual(self.backend.file_url(url), url)

Test PassthroughBackend class

def setUp(self):
13    def setUp(self):
14        """Set up test fixtures"""
15        self.backend = PassthroughBackend(FileUsage.MEDIA)

Set up test fixtures

def test_allowed_usages(self):
17    def test_allowed_usages(self):
18        """Test that PassthroughBackend only supports MEDIA usage"""
19        self.assertEqual(self.backend.allowed_usages, [FileUsage.MEDIA])

Test that PassthroughBackend only supports MEDIA usage

def test_supports_file_path_font_awesome(self):
21    def test_supports_file_path_font_awesome(self):
22        """Test supports_file_path returns True for Font Awesome icons"""
23        self.assertTrue(self.backend.supports_file("fa://user"))
24        self.assertTrue(self.backend.supports_file("fa://home"))
25        self.assertTrue(self.backend.supports_file("fa://shield"))

Test supports_file_path returns True for Font Awesome icons

def test_supports_file_path_http(self):
27    def test_supports_file_path_http(self):
28        """Test supports_file_path returns True for HTTP URLs"""
29        self.assertTrue(self.backend.supports_file("http://example.com/icon.png"))
30        self.assertTrue(self.backend.supports_file("http://cdn.example.com/logo.svg"))

Test supports_file_path returns True for HTTP URLs

def test_supports_file_path_https(self):
32    def test_supports_file_path_https(self):
33        """Test supports_file_path returns True for HTTPS URLs"""
34        self.assertTrue(self.backend.supports_file("https://example.com/icon.png"))
35        self.assertTrue(self.backend.supports_file("https://cdn.example.com/logo.svg"))

Test supports_file_path returns True for HTTPS URLs

def test_supports_file_path_false(self):
37    def test_supports_file_path_false(self):
38        """Test supports_file_path returns False for regular paths"""
39        self.assertFalse(self.backend.supports_file("icon.png"))
40        self.assertFalse(self.backend.supports_file("/static/icon.png"))
41        self.assertFalse(self.backend.supports_file("media/logo.svg"))
42        self.assertFalse(self.backend.supports_file(""))

Test supports_file_path returns False for regular paths

def test_supports_file_path_invalid_scheme(self):
44    def test_supports_file_path_invalid_scheme(self):
45        """Test supports_file_path returns False for invalid schemes"""
46        self.assertFalse(self.backend.supports_file("ftp://example.com/file.png"))
47        self.assertFalse(self.backend.supports_file("file:///path/to/file.png"))
48        self.assertFalse(self.backend.supports_file("data:image/png;base64,abc123"))

Test supports_file_path returns False for invalid schemes

def test_list_files(self):
50    def test_list_files(self):
51        """Test list_files returns empty generator"""
52        files = list(self.backend.list_files())
53        self.assertEqual(files, [])

Test list_files returns empty generator

def test_file_url(self):
55    def test_file_url(self):
56        """Test file_url returns the URL as-is"""
57        url = "https://example.com/icon.png"
58        self.assertEqual(self.backend.file_url(url), url)

Test file_url returns the URL as-is

def test_file_url_font_awesome(self):
60    def test_file_url_font_awesome(self):
61        """Test file_url returns Font Awesome URL as-is"""
62        url = "fa://user"
63        self.assertEqual(self.backend.file_url(url), url)

Test file_url returns Font Awesome URL as-is

def test_file_url_http(self):
65    def test_file_url_http(self):
66        """Test file_url returns HTTP URL as-is"""
67        url = "http://cdn.example.com/logo.svg"
68        self.assertEqual(self.backend.file_url(url), url)

Test file_url returns HTTP URL as-is