Skip to content

Commit b49d7ed

Browse files
committed
test(AlistPath): 添加单元测试以验证 AlistPath 的初始化
1 parent 17cdc87 commit b49d7ed

2 files changed

Lines changed: 318 additions & 36 deletions

File tree

app/modules/alist/v3/path.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -87,39 +87,3 @@ def created_timestamp(self) -> float:
8787
获得创建时间的时间戳
8888
"""
8989
return self.__parse_timestamp(self.created)
90-
91-
92-
if __name__ == "__main__":
93-
result = {
94-
"code": 200,
95-
"message": "success",
96-
"data": {
97-
"content": [
98-
{
99-
"name": "Alist V3.md",
100-
"size": 1592,
101-
"is_dir": False,
102-
"modified": "2024-05-17T13:47:55.4174917+08:00",
103-
"created": "2024-05-17T13:47:47.5725906+08:00",
104-
"sign": "",
105-
"thumb": "",
106-
"type": 4,
107-
"hashinfo": "null",
108-
"hash_info": None,
109-
}
110-
],
111-
"total": 1,
112-
"readme": "",
113-
"header": "",
114-
"write": True,
115-
"provider": "Local",
116-
},
117-
}
118-
for item in result["data"]["content"]:
119-
path = AlistPath(
120-
_server="https://alist.nn.ci",
121-
_base_path="/",
122-
_path="/",
123-
**item,
124-
)
125-
print(path)

tests/test_alist.py

Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
from sys import path
2+
from os.path import dirname
3+
4+
path.append(dirname(dirname(__file__)))
5+
6+
import unittest
7+
import json
8+
from app.modules.alist import AlistPath
9+
10+
11+
class TestAlistPath(unittest.TestCase):
12+
"""
13+
AlistPath 测试类
14+
"""
15+
16+
@classmethod
17+
def setUpClass(cls) -> None:
18+
"""
19+
测试类初始化
20+
"""
21+
print("开始进行 AlistPath 测试")
22+
23+
@classmethod
24+
def tearDownClass(cls) -> None:
25+
"""
26+
测试类清理
27+
"""
28+
print("\nAlistPath 测试完成")
29+
30+
def test_alist_path_initialization_old(self) -> None:
31+
"""
32+
测试 Alist V3.44 及以下版本响应的 AlistPath 的初始化
33+
"""
34+
35+
resp = json.loads(r"""
36+
{
37+
"code": 200,
38+
"message": "success",
39+
"data": {
40+
"content": [
41+
{
42+
"name": "[ANi] 學姊是男孩 - 12 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
43+
"size": 419322796,
44+
"is_dir": false,
45+
"modified": "2024-09-27T04:01:20.652Z",
46+
"created": "2024-09-27T04:01:20.652Z",
47+
"sign": "EseTgrOaCW_77IEnPzA5iSvbrrR3ig5sMLMJDS18dcs=:0",
48+
"thumb": "",
49+
"type": 2,
50+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 12 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41XFn6Ln22kSCj6KvMt1_9jFMqFLC_pg3S\"}",
51+
"hash_info": {
52+
"sha1": "[ANi] 學姊是男孩 - 12 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41XFn6Ln22kSCj6KvMt1_9jFMqFLC_pg3S"
53+
}
54+
},
55+
{
56+
"name": "[ANi] 學姊是男孩 - 11 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
57+
"size": 352354732,
58+
"is_dir": false,
59+
"modified": "2024-09-20T04:01:30.637Z",
60+
"created": "2024-09-20T04:01:30.637Z",
61+
"sign": "QPQXGJzSiLRhf4k1pwiTeEZegwB2HoUIbxICxeENU6A=:0",
62+
"thumb": "",
63+
"type": 2,
64+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 11 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41vPqksJwzCHzGdx2Iku9FuJKudr7h5d0j\"}",
65+
"hash_info": {
66+
"sha1": "[ANi] 學姊是男孩 - 11 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41vPqksJwzCHzGdx2Iku9FuJKudr7h5d0j"
67+
}
68+
},
69+
{
70+
"name": "[ANi] 學姊是男孩 - 10 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
71+
"size": 308002060,
72+
"is_dir": false,
73+
"modified": "2024-09-13T04:01:07.67Z",
74+
"created": "2024-09-13T04:01:07.67Z",
75+
"sign": "vKn6tucYavg4qEbJK_51u4X-h3yCKw2--34fiGAgOcA=:0",
76+
"thumb": "",
77+
"type": 2,
78+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 10 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41k2ZCi6KZW1JFiFc9NEMa1470d4-Pj2YD\"}",
79+
"hash_info": {
80+
"sha1": "[ANi] 學姊是男孩 - 10 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41k2ZCi6KZW1JFiFc9NEMa1470d4-Pj2YD"
81+
}
82+
},
83+
{
84+
"name": "[ANi] 學姊是男孩 - 09 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
85+
"size": 332720105,
86+
"is_dir": false,
87+
"modified": "2024-09-06T04:01:09.724Z",
88+
"created": "2024-09-06T04:01:09.724Z",
89+
"sign": "l_yDbrUSrCHV_gxPEJmPUFtCSBPr8bIcX_10zb1oDb0=:0",
90+
"thumb": "",
91+
"type": 2,
92+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 09 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41bHb7WoR8QCEpecaNwY7ISVoYnNSt_tq5\"}",
93+
"hash_info": {
94+
"sha1": "[ANi] 學姊是男孩 - 09 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41bHb7WoR8QCEpecaNwY7ISVoYnNSt_tq5"
95+
}
96+
},
97+
{
98+
"name": "[ANi] 學姊是男孩 - 08 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
99+
"size": 328344485,
100+
"is_dir": false,
101+
"modified": "2024-08-30T04:01:11.995Z",
102+
"created": "2024-08-30T04:01:11.995Z",
103+
"sign": "-RDlJnC--xTMWR7xsESdvJV6URRzdMI7q1P0mufiZhY=:0",
104+
"thumb": "",
105+
"type": 2,
106+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 08 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41IFeOlMYE65DDUW1A36SRo9TouWTPsoLo\"}",
107+
"hash_info": {
108+
"sha1": "[ANi] 學姊是男孩 - 08 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41IFeOlMYE65DDUW1A36SRo9TouWTPsoLo"
109+
}
110+
},
111+
{
112+
"name": "[ANi] 學姊是男孩 - 07 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
113+
"size": 291486512,
114+
"is_dir": false,
115+
"modified": "2024-08-23T10:31:01.545Z",
116+
"created": "2024-08-23T10:31:01.545Z",
117+
"sign": "W8qSCmwzUuS6-021jyBxXOqFDen1d0-WBMyg6fVU0Io=:0",
118+
"thumb": "",
119+
"type": 2,
120+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 07 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp417pRBsM4sCxY4p1mXOKkHllHAjg-E5OSw\"}",
121+
"hash_info": {
122+
"sha1": "[ANi] 學姊是男孩 - 07 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp417pRBsM4sCxY4p1mXOKkHllHAjg-E5OSw"
123+
}
124+
},
125+
{
126+
"name": "[ANi] 學姊是男孩 - 06 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
127+
"size": 328188852,
128+
"is_dir": false,
129+
"modified": "2024-08-16T04:01:11.149Z",
130+
"created": "2024-08-16T04:01:11.149Z",
131+
"sign": "4GrJx4ma36oXGc5iAhoWzpb2R4EtcttRhSlM4Q1Ka7M=:0",
132+
"thumb": "",
133+
"type": 2,
134+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 06 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41cGR3xBkSFGrAiT87_93NVb1ueSYyd8oF\"}",
135+
"hash_info": {
136+
"sha1": "[ANi] 學姊是男孩 - 06 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41cGR3xBkSFGrAiT87_93NVb1ueSYyd8oF"
137+
}
138+
},
139+
{
140+
"name": "[ANi] 學姊是男孩 - 05 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
141+
"size": 423854342,
142+
"is_dir": false,
143+
"modified": "2024-08-02T04:02:23.632Z",
144+
"created": "2024-08-02T04:02:23.632Z",
145+
"sign": "AANDCG5m6LhkQZyLAXbqEsola2pVOrwlnhDh-HKL_a0=:0",
146+
"thumb": "",
147+
"type": 2,
148+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 05 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41WiqLJC_3ItnDMgjbAjwjmMM-lJk1QacM\"}",
149+
"hash_info": {
150+
"sha1": "[ANi] 學姊是男孩 - 05 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41WiqLJC_3ItnDMgjbAjwjmMM-lJk1QacM"
151+
}
152+
},
153+
{
154+
"name": "[ANi] 學姊是男孩 - 04 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
155+
"size": 305057639,
156+
"is_dir": false,
157+
"modified": "2024-07-26T04:01:32.036Z",
158+
"created": "2024-07-26T04:01:32.036Z",
159+
"sign": "ICTRXWMoPFM_CztUmkA8YohqUwmhspe_bw8wdDXAmPM=:0",
160+
"thumb": "",
161+
"type": 2,
162+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 04 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41TbUPlMlaYs5VonmC5hpGnCH-5HOg2gAc\"}",
163+
"hash_info": {
164+
"sha1": "[ANi] 學姊是男孩 - 04 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41TbUPlMlaYs5VonmC5hpGnCH-5HOg2gAc"
165+
}
166+
},
167+
{
168+
"name": "[ANi] 學姊是男孩 - 03 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
169+
"size": 316813817,
170+
"is_dir": false,
171+
"modified": "2024-07-19T04:01:34.103Z",
172+
"created": "2024-07-19T04:01:34.103Z",
173+
"sign": "isf7nNVnrZ6DjWLGjVyXG4_Qk-UoahwyOGLTH8ZTeCY=:0",
174+
"thumb": "",
175+
"type": 2,
176+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 03 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41PveJ_pJAQI-LlZjHBz8odSAWjS3AeyUz\"}",
177+
"hash_info": {
178+
"sha1": "[ANi] 學姊是男孩 - 03 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41PveJ_pJAQI-LlZjHBz8odSAWjS3AeyUz"
179+
}
180+
},
181+
{
182+
"name": "[ANi] 學姊是男孩 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
183+
"size": 352701560,
184+
"is_dir": false,
185+
"modified": "2024-07-12T04:01:47.892Z",
186+
"created": "2024-07-12T04:01:47.892Z",
187+
"sign": "ythyoG8XkAR9HhwNYvgCzC7oL6sayaXTjB4YJE82a5M=:0",
188+
"thumb": "",
189+
"type": 2,
190+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41MW6qbtrxmnxSXYBja4Cdgric_QSZMOQy\"}",
191+
"hash_info": {
192+
"sha1": "[ANi] 學姊是男孩 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41MW6qbtrxmnxSXYBja4Cdgric_QSZMOQy"
193+
}
194+
},
195+
{
196+
"name": "[ANi] 學姊是男孩 - 01 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
197+
"size": 331223033,
198+
"is_dir": false,
199+
"modified": "2024-07-05T04:06:02.649Z",
200+
"created": "2024-07-05T04:06:02.649Z",
201+
"sign": "V-u0gqUZ9J8flRZK5dNzbj5fIIJwL1VyAUmSFWskw-E=:0",
202+
"thumb": "",
203+
"type": 2,
204+
"hashinfo": "{\"sha1\":\"[ANi] 學姊是男孩 - 01 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41JrtN_xJzpiI02bOKsT44QnEvYLLMO8sz\"}",
205+
"hash_info": {
206+
"sha1": "[ANi] 學姊是男孩 - 01 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp41JrtN_xJzpiI02bOKsT44QnEvYLLMO8sz"
207+
}
208+
}
209+
],
210+
"total": 12,
211+
"readme": "",
212+
"header": "",
213+
"write": true,
214+
"provider": "ANiOpen"
215+
}
216+
}
217+
""")
218+
for item in resp["data"]["content"]:
219+
path = AlistPath(
220+
_server="https://alist.nn.ci",
221+
_base_path="/",
222+
_path="/",
223+
**item,
224+
)
225+
self.assertIsInstance(path, AlistPath)
226+
self.assertEqual(path.name, item["name"])
227+
self.assertEqual(path.size, item["size"])
228+
self.assertEqual(path.is_dir, item["is_dir"])
229+
self.assertEqual(path.modified, item["modified"])
230+
self.assertEqual(path.created, item["created"])
231+
self.assertEqual(path.sign, item["sign"])
232+
self.assertEqual(path.thumb, item["thumb"])
233+
self.assertEqual(path.type, item["type"])
234+
self.assertEqual(path.hashinfo, item["hashinfo"])
235+
236+
def test_alist_path_initialization_new(self) -> None:
237+
"""
238+
测试 Alist V3.45 及以上版本响应的 AlistPath 的初始化
239+
"""
240+
241+
resp = json.loads(r"""
242+
{
243+
"code": 200,
244+
"message": "success",
245+
"data": {
246+
"content": [
247+
{
248+
"id": "",
249+
"path": "/2024-10/[ANi] 凍牌~地下麻將鬥牌錄~ - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
250+
"name": "[ANi] 凍牌~地下麻將鬥牌錄~ - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
251+
"size": 293496422,
252+
"is_dir": false,
253+
"modified": "2025-04-04T18:25:43+02:00",
254+
"created": "2025-04-04T18:25:43+02:00",
255+
"sign": "4zZglYvgsJp2fE_L-w5HFwtbosHzYBlTgLiWXc8n4Q0=:0",
256+
"thumb": "",
257+
"type": 2,
258+
"hashinfo": "null",
259+
"hash_info": null
260+
},
261+
{
262+
"id": "",
263+
"path": "/2024-10/[ANi] 轉生成貓咪的大叔 - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
264+
"name": "[ANi] 轉生成貓咪的大叔 - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
265+
"size": 21076377,
266+
"is_dir": false,
267+
"modified": "2025-04-02T13:48:24+02:00",
268+
"created": "2025-04-02T13:48:24+02:00",
269+
"sign": "ek9IvP5kjUnxZRZf6E155S8ZJ1OzN2nlSeovx65xjQs=:0",
270+
"thumb": "",
271+
"type": 2,
272+
"hashinfo": "null",
273+
"hash_info": null
274+
},
275+
{
276+
"id": "",
277+
"path": "/2024-10/[ANi] 香格里拉・開拓異境~糞作獵手挑戰神作~ 第二季 - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
278+
"name": "[ANi] 香格里拉・開拓異境~糞作獵手挑戰神作~ 第二季 - 25 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4",
279+
"size": 342674636,
280+
"is_dir": false,
281+
"modified": "2025-04-02T13:48:24+02:00",
282+
"created": "2025-04-02T13:48:24+02:00",
283+
"sign": "AThUy0dY-RE2sGc8Zh0lqLQw3C4cPM4WOXyVIcSHnt4=:0",
284+
"thumb": "",
285+
"type": 2,
286+
"hashinfo": "null",
287+
"hash_info": null
288+
}
289+
],
290+
"total": 3,
291+
"readme": "",
292+
"header": "",
293+
"write": true,
294+
"provider": "UrlTree"
295+
}
296+
}
297+
""")
298+
for item in resp["data"]["content"]:
299+
path = AlistPath(
300+
_server="https://alist.nn.ci",
301+
_base_path="/",
302+
_path="/",
303+
**item,
304+
)
305+
self.assertIsInstance(path, AlistPath)
306+
self.assertEqual(path.name, item["name"])
307+
self.assertEqual(path.size, item["size"])
308+
self.assertEqual(path.is_dir, item["is_dir"])
309+
self.assertEqual(path.modified, item["modified"])
310+
self.assertEqual(path.created, item["created"])
311+
self.assertEqual(path.sign, item["sign"])
312+
self.assertEqual(path.thumb, item["thumb"])
313+
self.assertEqual(path.type, item["type"])
314+
self.assertEqual(path.hashinfo, item["hashinfo"])
315+
316+
317+
if __name__ == "__main__":
318+
unittest.main()

0 commit comments

Comments
 (0)