from evanescere.services.webdav import WebDavFile, has_stable_size, parse_propfind_response class DummyVideo: def __init__(self, samples): self.size_samples = samples def test_has_stable_size_requires_two_equal_positive_samples(): assert not has_stable_size(DummyVideo([])) assert not has_stable_size(DummyVideo([{"size_bytes": 100}])) assert not has_stable_size(DummyVideo([{"size_bytes": 100}, {"size_bytes": 101}])) assert has_stable_size(DummyVideo([{"size_bytes": 100}, {"size_bytes": 100}])) def test_parse_propfind_response_filters_video_files(): xml = """ /webdav/recordings/ /webdav/recordings/stream.flv 123 /webdav/recordings/readme.txt 12 """ assert parse_propfind_response(xml, "https://host/webdav/recordings") == [ WebDavFile("https://host/webdav/recordings/stream.flv", "stream.flv", 123, None) ] def test_parse_propfind_response_preserves_encoded_chinese_filename(): xml = """ /Hirumi/hirumi-2-06%E6%9C%8801%E6%97%A501%E6%97%B602%E5%88%8641%E7%A7%92.flv 123 """ assert parse_propfind_response(xml, "http://recording.home.arpa/Hirumi") == [ WebDavFile( "http://recording.home.arpa/Hirumi/hirumi-2-06%E6%9C%8801%E6%97%A501%E6%97%B602%E5%88%8641%E7%A7%92.flv", "hirumi-2-06月01日01时02分41秒.flv", 123, None, ) ]