"""Test camera user and password cleanup.""" import unittest from frigate.util import clean_camera_user_pass, escape_special_characters class TestUserPassCleanup(unittest.TestCase): def setUp(self) -> None: self.rtsp_with_pass = "rtsp://user:password@192.168.0.2:554/live" self.rtsp_with_special_pass = "rtsp://user:password#$@@192.168.0.2:554/live" self.rtsp_no_pass = "rtsp://192.168.0.3:554/live" def test_cleanup(self): """Test that user / pass are cleaned up.""" clean = clean_camera_user_pass(self.rtsp_with_pass) assert clean != self.rtsp_with_pass assert "user:password" not in clean def test_no_cleanup(self): """Test that nothing changes when no user / pass are defined.""" clean = clean_camera_user_pass(self.rtsp_no_pass) assert clean == self.rtsp_no_pass def test_special_char_password(self): """Test that special characters in pw are escaped, but not others.""" escaped = escape_special_characters(self.rtsp_with_special_pass) assert escaped == "rtsp://user:password%23%24%40@192.168.0.2:554/live" def test_no_special_char_password(self): """Test that no change is made to path with no special characters.""" escaped = escape_special_characters(self.rtsp_with_pass) assert escaped == self.rtsp_with_pass