Coverage for tests/test_decorators.py: 93%
43 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-27 22:07 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-27 22:07 +0000
1import unittest
2from unittest.mock import Mock, patch
4from webapp.decorators import redirect_uppercase_to_lowercase
7class TestDecorators(unittest.TestCase):
8 def setUp(self):
9 self.mock_get_env = patch("webapp.decorators.os.getenv").start()
10 self.mock_flask = patch("webapp.decorators.flask").start()
12 def tearDown(self):
13 patch.stopall()
15 def test_redirect_uppercase_to_lowercase_random_url(self):
16 """
17 Test that the decorator redirects the path to lowercase
18 """
19 self.mock_flask.request.url.lower.return_value = (
20 "http://example.com/test"
21 )
22 self.mock_flask.abort.return_value = Mock()
23 self.mock_get_env.return_value = "devel"
25 @redirect_uppercase_to_lowercase
26 def test_func(entity_name):
27 pass
29 test_func(entity_name="Test")
31 self.assertEqual(self.mock_flask.redirect.called, False)
32 self.assertEqual(self.mock_flask.abort.called, True)
34 def test_redirect_uppercase_to_lowercase_localhost(self):
35 """
36 Test that the decorator redirects the path to lowercase
37 """
38 self.mock_flask.request.url.lower.return_value = (
39 "http://localhost:1234/test"
40 )
41 self.mock_get_env.return_value = "devel"
43 @redirect_uppercase_to_lowercase
44 def test_func(entity_name):
45 pass
47 test_func(entity_name="Test")
48 self.mock_flask.redirect.assert_called_once_with(
49 "http://localhost:1234/test"
50 )
52 def test_redirect_uppercase_to_lowercase_staging(self):
53 """
54 Test that the decorator redirects the path to lowercase
55 """
56 self.mock_flask.request.url.lower.return_value = (
57 "https://staging.charmhub.io/test"
58 )
59 self.mock_get_env.return_value = "staging"
61 @redirect_uppercase_to_lowercase
62 def test_func(entity_name):
63 pass
65 test_func(entity_name="Test")
66 self.mock_flask.redirect.assert_called_once_with(
67 "https://staging.charmhub.io/test"
68 )
70 def test_redirect_uppercase_to_lowercase_production(self):
71 """
72 Test that the decorator redirects the path to lowercase
73 """
74 self.mock_flask.request.url.lower.return_value = (
75 "https://charmhub.io/test"
76 )
77 self.mock_get_env.return_value = "production"
79 @redirect_uppercase_to_lowercase
80 def test_func(entity_name):
81 pass
83 test_func(entity_name="Test")
84 self.mock_flask.redirect.assert_called_once_with(
85 "https://charmhub.io/test"
86 )