Spaces:
Runtime error
Runtime error
Commit
·
7a0e77d
1
Parent(s):
fef30b3
<Test>: add test for video
Browse files- .coverage +0 -0
- app/routers/video.py +5 -4
- coverage.xml +195 -199
- tests/test_friend_request.py +2 -3
- tests/test_video.py +9 -29
.coverage
ADDED
Binary file (53.2 kB). View file
|
|
app/routers/video.py
CHANGED
@@ -153,10 +153,11 @@ async def inferenceVideo(artifactId: str, inputDir: str, threshold: float):
|
|
153 |
|
154 |
|
155 |
def updateArtifact(artifactId: str, body):
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
160 |
|
161 |
|
162 |
# This function cannot be automation test because the requirement of another device to receive notification
|
|
|
153 |
|
154 |
|
155 |
def updateArtifact(artifactId: str, body):
|
156 |
+
artifact_ref = db.collection("artifacts").document(artifactId)
|
157 |
+
artifact_snapshot = artifact_ref.get()
|
158 |
+
if artifact_snapshot.exists:
|
159 |
+
artifact_ref.update(body)
|
160 |
+
# sendMessage(artifactId)
|
161 |
|
162 |
|
163 |
# This function cannot be automation test because the requirement of another device to receive notification
|
coverage.xml
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?xml version="1.0" ?>
|
2 |
-
<coverage version="7.2.2" timestamp="
|
3 |
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.2.2 -->
|
4 |
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
|
5 |
<sources>
|
6 |
<source>D:\SE113.O12_KCPM\app</source>
|
7 |
</sources>
|
8 |
<packages>
|
9 |
-
<package name="." line-rate="0.
|
10 |
<classes>
|
11 |
<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="0.963" branch-rate="0">
|
12 |
<methods/>
|
@@ -48,7 +48,7 @@
|
|
48 |
<line number="170" hits="1"/>
|
49 |
</lines>
|
50 |
</class>
|
51 |
-
<class name="dependencies.py" filename="dependencies.py" complexity="0" line-rate="0.
|
52 |
<methods/>
|
53 |
<lines>
|
54 |
<line number="1" hits="1"/>
|
@@ -59,25 +59,24 @@
|
|
59 |
<line number="6" hits="1"/>
|
60 |
<line number="8" hits="1"/>
|
61 |
<line number="11" hits="1"/>
|
62 |
-
<line number="14" hits="
|
63 |
-
<line number="15" hits="
|
64 |
-
<line number="16" hits="
|
65 |
-
<line number="17" hits="
|
66 |
-
<line number="18" hits="
|
67 |
-
<line number="19" hits="
|
68 |
<line number="20" hits="0"/>
|
69 |
-
<line number="
|
70 |
-
<line number="26" hits="
|
71 |
-
<line number="
|
72 |
-
<line number="
|
73 |
-
<line number="
|
74 |
-
<line number="
|
75 |
-
<line number="
|
76 |
-
<line number="41" hits="
|
77 |
-
<line number="43" hits="0"/>
|
78 |
</lines>
|
79 |
</class>
|
80 |
-
<class name="main.py" filename="main.py" complexity="0" line-rate="0.
|
81 |
<methods/>
|
82 |
<lines>
|
83 |
<line number="1" hits="1"/>
|
@@ -86,27 +85,24 @@
|
|
86 |
<line number="5" hits="1"/>
|
87 |
<line number="7" hits="1"/>
|
88 |
<line number="9" hits="1"/>
|
|
|
89 |
<line number="11" hits="1"/>
|
90 |
<line number="12" hits="1"/>
|
91 |
-
<line number="
|
92 |
-
<line number="
|
93 |
-
<line number="17" hits="
|
94 |
-
<line number="18" hits="
|
95 |
-
<line number="
|
96 |
-
<line number="
|
97 |
-
<line number="23" hits="
|
98 |
-
<line number="24" hits="
|
99 |
-
<line number="25" hits="0"/>
|
100 |
-
<line number="26" hits="0"/>
|
101 |
-
<line number="29" hits="1"/>
|
102 |
-
<line number="30" hits="0"/>
|
103 |
</lines>
|
104 |
</class>
|
105 |
</classes>
|
106 |
</package>
|
107 |
-
<package name="custom_mmcv" line-rate="0.
|
108 |
<classes>
|
109 |
-
<class name="color.py" filename="custom_mmcv/color.py" complexity="0" line-rate="0.
|
110 |
<methods/>
|
111 |
<lines>
|
112 |
<line number="2" hits="1"/>
|
@@ -123,27 +119,27 @@
|
|
123 |
<line number="21" hits="1"/>
|
124 |
<line number="22" hits="1"/>
|
125 |
<line number="25" hits="1"/>
|
126 |
-
<line number="34" hits="
|
127 |
-
<line number="35" hits="
|
128 |
-
<line number="36" hits="
|
129 |
<line number="37" hits="0"/>
|
130 |
-
<line number="38" hits="
|
131 |
-
<line number="39" hits="
|
132 |
-
<line number="40" hits="
|
133 |
-
<line number="41" hits="
|
134 |
-
<line number="42" hits="
|
135 |
-
<line number="43" hits="
|
136 |
-
<line number="44" hits="
|
137 |
-
<line number="45" hits="
|
138 |
-
<line number="46" hits="
|
139 |
-
<line number="47" hits="
|
140 |
-
<line number="48" hits="
|
141 |
-
<line number="49" hits="
|
142 |
-
<line number="50" hits="
|
143 |
-
<line number="52" hits="
|
144 |
</lines>
|
145 |
</class>
|
146 |
-
<class name="main.py" filename="custom_mmcv/main.py" complexity="0" line-rate="0.
|
147 |
<methods/>
|
148 |
<lines>
|
149 |
<line number="4" hits="1"/>
|
@@ -153,33 +149,33 @@
|
|
153 |
<line number="10" hits="1"/>
|
154 |
<line number="13" hits="1"/>
|
155 |
<line number="16" hits="1"/>
|
156 |
-
<line number="50" hits="
|
157 |
-
<line number="51" hits="
|
158 |
-
<line number="52" hits="
|
159 |
-
<line number="53" hits="
|
160 |
-
<line number="54" hits="
|
161 |
-
<line number="56" hits="
|
162 |
-
<line number="57" hits="
|
163 |
-
<line number="58" hits="
|
164 |
-
<line number="59" hits="
|
165 |
-
<line number="60" hits="
|
166 |
-
<line number="61" hits="
|
167 |
-
<line number="63" hits="
|
168 |
-
<line number="64" hits="
|
169 |
-
<line number="66" hits="
|
170 |
-
<line number="67" hits="
|
171 |
-
<line number="68" hits="
|
172 |
-
<line number="69" hits="
|
173 |
-
<line number="70" hits="
|
174 |
-
<line number="71" hits="
|
175 |
-
<line number="72" hits="
|
176 |
-
<line number="73" hits="
|
177 |
-
<line number="74" hits="
|
178 |
-
<line number="75" hits="
|
179 |
-
<line number="76" hits="
|
180 |
-
<line number="86" hits="
|
181 |
<line number="87" hits="0"/>
|
182 |
-
<line number="88" hits="
|
183 |
</lines>
|
184 |
</class>
|
185 |
</classes>
|
@@ -204,9 +200,9 @@
|
|
204 |
</class>
|
205 |
</classes>
|
206 |
</package>
|
207 |
-
<package name="routers" line-rate="0.
|
208 |
<classes>
|
209 |
-
<class name="friend_request.py" filename="routers/friend_request.py" complexity="0" line-rate="0.
|
210 |
<methods/>
|
211 |
<lines>
|
212 |
<line number="1" hits="1"/>
|
@@ -233,44 +229,44 @@
|
|
233 |
<line number="35" hits="0"/>
|
234 |
<line number="42" hits="1"/>
|
235 |
<line number="43" hits="1"/>
|
236 |
-
<line number="44" hits="
|
237 |
<line number="45" hits="0"/>
|
238 |
-
<line number="46" hits="
|
239 |
-
<line number="55" hits="
|
240 |
-
<line number="56" hits="
|
241 |
-
<line number="57" hits="
|
242 |
-
<line number="58" hits="
|
243 |
-
<line number="59" hits="
|
244 |
-
<line number="60" hits="
|
245 |
<line number="61" hits="0"/>
|
246 |
<line number="62" hits="0"/>
|
247 |
<line number="63" hits="0"/>
|
248 |
<line number="64" hits="0"/>
|
249 |
<line number="67" hits="1"/>
|
250 |
<line number="68" hits="1"/>
|
251 |
-
<line number="69" hits="
|
252 |
<line number="70" hits="0"/>
|
253 |
-
<line number="72" hits="
|
254 |
-
<line number="73" hits="
|
255 |
-
<line number="75" hits="
|
256 |
<line number="76" hits="0"/>
|
257 |
-
<line number="78" hits="
|
258 |
-
<line number="80" hits="
|
259 |
<line number="81" hits="0"/>
|
260 |
-
<line number="83" hits="
|
261 |
<line number="84" hits="0"/>
|
262 |
-
<line number="86" hits="
|
263 |
<line number="87" hits="0"/>
|
264 |
<line number="88" hits="0"/>
|
265 |
<line number="89" hits="0"/>
|
266 |
<line number="90" hits="0"/>
|
267 |
<line number="91" hits="0"/>
|
268 |
-
<line number="93" hits="
|
269 |
-
<line number="94" hits="
|
270 |
-
<line number="97" hits="
|
271 |
-
<line number="98" hits="
|
272 |
<line number="101" hits="1"/>
|
273 |
-
<line number="102" hits="
|
274 |
<line number="105" hits="1"/>
|
275 |
<line number="106" hits="0"/>
|
276 |
<line number="109" hits="1"/>
|
@@ -286,16 +282,16 @@
|
|
286 |
<line number="122" hits="0"/>
|
287 |
<line number="124" hits="0"/>
|
288 |
<line number="127" hits="1"/>
|
289 |
-
<line number="128" hits="
|
290 |
<line number="131" hits="1"/>
|
291 |
-
<line number="132" hits="
|
292 |
<line number="135" hits="1"/>
|
293 |
-
<line number="136" hits="
|
294 |
<line number="139" hits="1"/>
|
295 |
-
<line number="140" hits="
|
296 |
</lines>
|
297 |
</class>
|
298 |
-
<class name="image.py" filename="routers/image.py" complexity="0" line-rate="0.
|
299 |
<methods/>
|
300 |
<lines>
|
301 |
<line number="1" hits="1"/>
|
@@ -309,31 +305,31 @@
|
|
309 |
<line number="11" hits="1"/>
|
310 |
<line number="14" hits="1"/>
|
311 |
<line number="15" hits="1"/>
|
312 |
-
<line number="20" hits="
|
313 |
-
<line number="21" hits="
|
314 |
-
<line number="22" hits="
|
315 |
-
<line number="23" hits="
|
316 |
-
<line number="24" hits="
|
317 |
-
<line number="26" hits="
|
318 |
-
<line number="27" hits="
|
319 |
-
<line number="28" hits="
|
320 |
-
<line number="29" hits="
|
321 |
-
<line number="31" hits="
|
322 |
-
<line number="33" hits="
|
323 |
<line number="34" hits="0"/>
|
324 |
-
<line number="35" hits="
|
325 |
-
<line number="37" hits="
|
326 |
<line number="40" hits="1"/>
|
327 |
-
<line number="41" hits="
|
328 |
-
<line number="42" hits="
|
329 |
-
<line number="43" hits="
|
330 |
-
<line number="44" hits="
|
331 |
-
<line number="45" hits="
|
332 |
-
<line number="46" hits="
|
333 |
-
<line number="48" hits="
|
334 |
-
<line number="49" hits="
|
335 |
-
<line number="51" hits="
|
336 |
-
<line number="52" hits="
|
337 |
</lines>
|
338 |
</class>
|
339 |
<class name="me.py" filename="routers/me.py" complexity="0" line-rate="0.7778" branch-rate="0">
|
@@ -350,7 +346,7 @@
|
|
350 |
<line number="16" hits="0"/>
|
351 |
</lines>
|
352 |
</class>
|
353 |
-
<class name="video.py" filename="routers/video.py" complexity="0" line-rate="0.
|
354 |
<methods/>
|
355 |
<lines>
|
356 |
<line number="1" hits="1"/>
|
@@ -360,7 +356,6 @@
|
|
360 |
<line number="5" hits="1"/>
|
361 |
<line number="6" hits="1"/>
|
362 |
<line number="7" hits="1"/>
|
363 |
-
<line number="8" hits="1"/>
|
364 |
<line number="9" hits="1"/>
|
365 |
<line number="10" hits="1"/>
|
366 |
<line number="18" hits="1"/>
|
@@ -372,82 +367,83 @@
|
|
372 |
<line number="25" hits="1"/>
|
373 |
<line number="28" hits="1"/>
|
374 |
<line number="29" hits="1"/>
|
375 |
-
<line number="35" hits="
|
376 |
-
<line number="36" hits="
|
377 |
-
<line number="41" hits="
|
378 |
-
<line number="42" hits="
|
379 |
<line number="43" hits="0"/>
|
380 |
-
<line number="
|
381 |
-
<line number="
|
382 |
-
<line number="
|
383 |
-
<line number="
|
384 |
-
<line number="
|
385 |
-
<line number="
|
386 |
-
<line number="
|
387 |
-
<line number="
|
388 |
-
<line number="
|
389 |
-
<line number="
|
390 |
-
<line number="
|
391 |
-
<line number="55" hits="0"/>
|
392 |
-
<line number="58" hits="1"/>
|
393 |
<line number="59" hits="0"/>
|
394 |
<line number="62" hits="1"/>
|
395 |
-
<line number="63" hits="
|
396 |
-
<line number="
|
397 |
-
<line number="
|
398 |
-
<line number="68" hits="
|
399 |
-
<line number="69" hits="
|
400 |
-
<line number="
|
401 |
-
<line number="
|
402 |
-
<line number="
|
403 |
-
<line number="
|
404 |
-
<line number="
|
405 |
-
<line number="
|
406 |
-
<line number="
|
407 |
-
<line number="
|
408 |
-
<line number="
|
409 |
-
<line number="
|
410 |
-
<line number="
|
411 |
-
<line number="
|
412 |
-
<line number="
|
413 |
-
<line number="
|
414 |
-
<line number="
|
415 |
-
<line number="
|
416 |
-
<line number="101" hits="
|
417 |
-
<line number="
|
418 |
-
<line number="105" hits="
|
419 |
-
<line number="
|
420 |
-
<line number="
|
421 |
-
<line number="
|
422 |
-
<line number="
|
423 |
-
<line number="115" hits="
|
424 |
-
<line number="
|
425 |
-
<line number="
|
426 |
-
<line number="
|
427 |
-
<line number="
|
428 |
-
<line number="
|
429 |
-
<line number="124" hits="0"/>
|
430 |
<line number="126" hits="0"/>
|
431 |
-
<line number="
|
432 |
-
<line number="
|
433 |
-
<line number="
|
434 |
-
<line number="
|
435 |
-
<line number="
|
436 |
-
<line number="
|
437 |
-
<line number="
|
|
|
438 |
<line number="157" hits="1"/>
|
439 |
-
<line number="158" hits="
|
440 |
-
<line number="159" hits="
|
441 |
-
<line number="
|
442 |
-
<line number="161" hits="0"/>
|
443 |
-
<line number="162" hits="0"/>
|
444 |
-
<line number="163" hits="0"/>
|
445 |
-
<line number="164" hits="0"/>
|
446 |
<line number="165" hits="0"/>
|
447 |
<line number="166" hits="0"/>
|
448 |
-
<line number="
|
449 |
-
<line number="
|
450 |
-
<line number="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
</lines>
|
452 |
</class>
|
453 |
</classes>
|
|
|
1 |
<?xml version="1.0" ?>
|
2 |
+
<coverage version="7.2.2" timestamp="1699431759592" lines-valid="371" lines-covered="301" line-rate="0.8113" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
3 |
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.2.2 -->
|
4 |
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
|
5 |
<sources>
|
6 |
<source>D:\SE113.O12_KCPM\app</source>
|
7 |
</sources>
|
8 |
<packages>
|
9 |
+
<package name="." line-rate="0.8714" branch-rate="0" complexity="0">
|
10 |
<classes>
|
11 |
<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="0.963" branch-rate="0">
|
12 |
<methods/>
|
|
|
48 |
<line number="170" hits="1"/>
|
49 |
</lines>
|
50 |
</class>
|
51 |
+
<class name="dependencies.py" filename="dependencies.py" complexity="0" line-rate="0.8261" branch-rate="0">
|
52 |
<methods/>
|
53 |
<lines>
|
54 |
<line number="1" hits="1"/>
|
|
|
59 |
<line number="6" hits="1"/>
|
60 |
<line number="8" hits="1"/>
|
61 |
<line number="11" hits="1"/>
|
62 |
+
<line number="14" hits="1"/>
|
63 |
+
<line number="15" hits="1"/>
|
64 |
+
<line number="16" hits="1"/>
|
65 |
+
<line number="17" hits="1"/>
|
66 |
+
<line number="18" hits="1"/>
|
67 |
+
<line number="19" hits="1"/>
|
68 |
<line number="20" hits="0"/>
|
69 |
+
<line number="21" hits="0"/>
|
70 |
+
<line number="26" hits="1"/>
|
71 |
+
<line number="27" hits="1"/>
|
72 |
+
<line number="28" hits="1"/>
|
73 |
+
<line number="33" hits="1"/>
|
74 |
+
<line number="34" hits="0"/>
|
75 |
+
<line number="35" hits="0"/>
|
76 |
+
<line number="41" hits="1"/>
|
|
|
77 |
</lines>
|
78 |
</class>
|
79 |
+
<class name="main.py" filename="main.py" complexity="0" line-rate="0.7647" branch-rate="0">
|
80 |
<methods/>
|
81 |
<lines>
|
82 |
<line number="1" hits="1"/>
|
|
|
85 |
<line number="5" hits="1"/>
|
86 |
<line number="7" hits="1"/>
|
87 |
<line number="9" hits="1"/>
|
88 |
+
<line number="10" hits="1"/>
|
89 |
<line number="11" hits="1"/>
|
90 |
<line number="12" hits="1"/>
|
91 |
+
<line number="15" hits="1"/>
|
92 |
+
<line number="16" hits="1"/>
|
93 |
+
<line number="17" hits="0"/>
|
94 |
+
<line number="18" hits="0"/>
|
95 |
+
<line number="21" hits="1"/>
|
96 |
+
<line number="22" hits="1"/>
|
97 |
+
<line number="23" hits="0"/>
|
98 |
+
<line number="24" hits="0"/>
|
|
|
|
|
|
|
|
|
99 |
</lines>
|
100 |
</class>
|
101 |
</classes>
|
102 |
</package>
|
103 |
+
<package name="custom_mmcv" line-rate="0.9697" branch-rate="0" complexity="0">
|
104 |
<classes>
|
105 |
+
<class name="color.py" filename="custom_mmcv/color.py" complexity="0" line-rate="0.9688" branch-rate="0">
|
106 |
<methods/>
|
107 |
<lines>
|
108 |
<line number="2" hits="1"/>
|
|
|
119 |
<line number="21" hits="1"/>
|
120 |
<line number="22" hits="1"/>
|
121 |
<line number="25" hits="1"/>
|
122 |
+
<line number="34" hits="1"/>
|
123 |
+
<line number="35" hits="1"/>
|
124 |
+
<line number="36" hits="1"/>
|
125 |
<line number="37" hits="0"/>
|
126 |
+
<line number="38" hits="1"/>
|
127 |
+
<line number="39" hits="1"/>
|
128 |
+
<line number="40" hits="1"/>
|
129 |
+
<line number="41" hits="1"/>
|
130 |
+
<line number="42" hits="1"/>
|
131 |
+
<line number="43" hits="1"/>
|
132 |
+
<line number="44" hits="1"/>
|
133 |
+
<line number="45" hits="1"/>
|
134 |
+
<line number="46" hits="1"/>
|
135 |
+
<line number="47" hits="1"/>
|
136 |
+
<line number="48" hits="1"/>
|
137 |
+
<line number="49" hits="1"/>
|
138 |
+
<line number="50" hits="1"/>
|
139 |
+
<line number="52" hits="1"/>
|
140 |
</lines>
|
141 |
</class>
|
142 |
+
<class name="main.py" filename="custom_mmcv/main.py" complexity="0" line-rate="0.9706" branch-rate="0">
|
143 |
<methods/>
|
144 |
<lines>
|
145 |
<line number="4" hits="1"/>
|
|
|
149 |
<line number="10" hits="1"/>
|
150 |
<line number="13" hits="1"/>
|
151 |
<line number="16" hits="1"/>
|
152 |
+
<line number="50" hits="1"/>
|
153 |
+
<line number="51" hits="1"/>
|
154 |
+
<line number="52" hits="1"/>
|
155 |
+
<line number="53" hits="1"/>
|
156 |
+
<line number="54" hits="1"/>
|
157 |
+
<line number="56" hits="1"/>
|
158 |
+
<line number="57" hits="1"/>
|
159 |
+
<line number="58" hits="1"/>
|
160 |
+
<line number="59" hits="1"/>
|
161 |
+
<line number="60" hits="1"/>
|
162 |
+
<line number="61" hits="1"/>
|
163 |
+
<line number="63" hits="1"/>
|
164 |
+
<line number="64" hits="1"/>
|
165 |
+
<line number="66" hits="1"/>
|
166 |
+
<line number="67" hits="1"/>
|
167 |
+
<line number="68" hits="1"/>
|
168 |
+
<line number="69" hits="1"/>
|
169 |
+
<line number="70" hits="1"/>
|
170 |
+
<line number="71" hits="1"/>
|
171 |
+
<line number="72" hits="1"/>
|
172 |
+
<line number="73" hits="1"/>
|
173 |
+
<line number="74" hits="1"/>
|
174 |
+
<line number="75" hits="1"/>
|
175 |
+
<line number="76" hits="1"/>
|
176 |
+
<line number="86" hits="1"/>
|
177 |
<line number="87" hits="0"/>
|
178 |
+
<line number="88" hits="1"/>
|
179 |
</lines>
|
180 |
</class>
|
181 |
</classes>
|
|
|
200 |
</class>
|
201 |
</classes>
|
202 |
</package>
|
203 |
+
<package name="routers" line-rate="0.7679" branch-rate="0" complexity="0">
|
204 |
<classes>
|
205 |
+
<class name="friend_request.py" filename="routers/friend_request.py" complexity="0" line-rate="0.6548" branch-rate="0">
|
206 |
<methods/>
|
207 |
<lines>
|
208 |
<line number="1" hits="1"/>
|
|
|
229 |
<line number="35" hits="0"/>
|
230 |
<line number="42" hits="1"/>
|
231 |
<line number="43" hits="1"/>
|
232 |
+
<line number="44" hits="1"/>
|
233 |
<line number="45" hits="0"/>
|
234 |
+
<line number="46" hits="1"/>
|
235 |
+
<line number="55" hits="1"/>
|
236 |
+
<line number="56" hits="1"/>
|
237 |
+
<line number="57" hits="1"/>
|
238 |
+
<line number="58" hits="1"/>
|
239 |
+
<line number="59" hits="1"/>
|
240 |
+
<line number="60" hits="1"/>
|
241 |
<line number="61" hits="0"/>
|
242 |
<line number="62" hits="0"/>
|
243 |
<line number="63" hits="0"/>
|
244 |
<line number="64" hits="0"/>
|
245 |
<line number="67" hits="1"/>
|
246 |
<line number="68" hits="1"/>
|
247 |
+
<line number="69" hits="1"/>
|
248 |
<line number="70" hits="0"/>
|
249 |
+
<line number="72" hits="1"/>
|
250 |
+
<line number="73" hits="1"/>
|
251 |
+
<line number="75" hits="1"/>
|
252 |
<line number="76" hits="0"/>
|
253 |
+
<line number="78" hits="1"/>
|
254 |
+
<line number="80" hits="1"/>
|
255 |
<line number="81" hits="0"/>
|
256 |
+
<line number="83" hits="1"/>
|
257 |
<line number="84" hits="0"/>
|
258 |
+
<line number="86" hits="1"/>
|
259 |
<line number="87" hits="0"/>
|
260 |
<line number="88" hits="0"/>
|
261 |
<line number="89" hits="0"/>
|
262 |
<line number="90" hits="0"/>
|
263 |
<line number="91" hits="0"/>
|
264 |
+
<line number="93" hits="1"/>
|
265 |
+
<line number="94" hits="1"/>
|
266 |
+
<line number="97" hits="1"/>
|
267 |
+
<line number="98" hits="1"/>
|
268 |
<line number="101" hits="1"/>
|
269 |
+
<line number="102" hits="1"/>
|
270 |
<line number="105" hits="1"/>
|
271 |
<line number="106" hits="0"/>
|
272 |
<line number="109" hits="1"/>
|
|
|
282 |
<line number="122" hits="0"/>
|
283 |
<line number="124" hits="0"/>
|
284 |
<line number="127" hits="1"/>
|
285 |
+
<line number="128" hits="1"/>
|
286 |
<line number="131" hits="1"/>
|
287 |
+
<line number="132" hits="1"/>
|
288 |
<line number="135" hits="1"/>
|
289 |
+
<line number="136" hits="1"/>
|
290 |
<line number="139" hits="1"/>
|
291 |
+
<line number="140" hits="1"/>
|
292 |
</lines>
|
293 |
</class>
|
294 |
+
<class name="image.py" filename="routers/image.py" complexity="0" line-rate="0.9722" branch-rate="0">
|
295 |
<methods/>
|
296 |
<lines>
|
297 |
<line number="1" hits="1"/>
|
|
|
305 |
<line number="11" hits="1"/>
|
306 |
<line number="14" hits="1"/>
|
307 |
<line number="15" hits="1"/>
|
308 |
+
<line number="20" hits="1"/>
|
309 |
+
<line number="21" hits="1"/>
|
310 |
+
<line number="22" hits="1"/>
|
311 |
+
<line number="23" hits="1"/>
|
312 |
+
<line number="24" hits="1"/>
|
313 |
+
<line number="26" hits="1"/>
|
314 |
+
<line number="27" hits="1"/>
|
315 |
+
<line number="28" hits="1"/>
|
316 |
+
<line number="29" hits="1"/>
|
317 |
+
<line number="31" hits="1"/>
|
318 |
+
<line number="33" hits="1"/>
|
319 |
<line number="34" hits="0"/>
|
320 |
+
<line number="35" hits="1"/>
|
321 |
+
<line number="37" hits="1"/>
|
322 |
<line number="40" hits="1"/>
|
323 |
+
<line number="41" hits="1"/>
|
324 |
+
<line number="42" hits="1"/>
|
325 |
+
<line number="43" hits="1"/>
|
326 |
+
<line number="44" hits="1"/>
|
327 |
+
<line number="45" hits="1"/>
|
328 |
+
<line number="46" hits="1"/>
|
329 |
+
<line number="48" hits="1"/>
|
330 |
+
<line number="49" hits="1"/>
|
331 |
+
<line number="51" hits="1"/>
|
332 |
+
<line number="52" hits="1"/>
|
333 |
</lines>
|
334 |
</class>
|
335 |
<class name="me.py" filename="routers/me.py" complexity="0" line-rate="0.7778" branch-rate="0">
|
|
|
346 |
<line number="16" hits="0"/>
|
347 |
</lines>
|
348 |
</class>
|
349 |
+
<class name="video.py" filename="routers/video.py" complexity="0" line-rate="0.7895" branch-rate="0">
|
350 |
<methods/>
|
351 |
<lines>
|
352 |
<line number="1" hits="1"/>
|
|
|
356 |
<line number="5" hits="1"/>
|
357 |
<line number="6" hits="1"/>
|
358 |
<line number="7" hits="1"/>
|
|
|
359 |
<line number="9" hits="1"/>
|
360 |
<line number="10" hits="1"/>
|
361 |
<line number="18" hits="1"/>
|
|
|
367 |
<line number="25" hits="1"/>
|
368 |
<line number="28" hits="1"/>
|
369 |
<line number="29" hits="1"/>
|
370 |
+
<line number="35" hits="1"/>
|
371 |
+
<line number="36" hits="1"/>
|
372 |
+
<line number="41" hits="1"/>
|
373 |
+
<line number="42" hits="1"/>
|
374 |
<line number="43" hits="0"/>
|
375 |
+
<line number="46" hits="1"/>
|
376 |
+
<line number="47" hits="1"/>
|
377 |
+
<line number="50" hits="1"/>
|
378 |
+
<line number="51" hits="1"/>
|
379 |
+
<line number="52" hits="1"/>
|
380 |
+
<line number="53" hits="1"/>
|
381 |
+
<line number="54" hits="1"/>
|
382 |
+
<line number="55" hits="1"/>
|
383 |
+
<line number="56" hits="0"/>
|
384 |
+
<line number="57" hits="0"/>
|
385 |
+
<line number="58" hits="0"/>
|
|
|
|
|
386 |
<line number="59" hits="0"/>
|
387 |
<line number="62" hits="1"/>
|
388 |
+
<line number="63" hits="1"/>
|
389 |
+
<line number="66" hits="1"/>
|
390 |
+
<line number="67" hits="1"/>
|
391 |
+
<line number="68" hits="1"/>
|
392 |
+
<line number="69" hits="1"/>
|
393 |
+
<line number="72" hits="1"/>
|
394 |
+
<line number="73" hits="1"/>
|
395 |
+
<line number="77" hits="1"/>
|
396 |
+
<line number="84" hits="1"/>
|
397 |
+
<line number="85" hits="1"/>
|
398 |
+
<line number="86" hits="1"/>
|
399 |
+
<line number="87" hits="1"/>
|
400 |
+
<line number="88" hits="1"/>
|
401 |
+
<line number="89" hits="1"/>
|
402 |
+
<line number="90" hits="1"/>
|
403 |
+
<line number="92" hits="1"/>
|
404 |
+
<line number="93" hits="1"/>
|
405 |
+
<line number="95" hits="1"/>
|
406 |
+
<line number="96" hits="1"/>
|
407 |
+
<line number="98" hits="1"/>
|
408 |
+
<line number="99" hits="1"/>
|
409 |
+
<line number="101" hits="1"/>
|
410 |
+
<line number="102" hits="1"/>
|
411 |
+
<line number="105" hits="1"/>
|
412 |
+
<line number="107" hits="1"/>
|
413 |
+
<line number="109" hits="1"/>
|
414 |
+
<line number="110" hits="1"/>
|
415 |
+
<line number="111" hits="1"/>
|
416 |
+
<line number="115" hits="1"/>
|
417 |
+
<line number="116" hits="1"/>
|
418 |
+
<line number="119" hits="1"/>
|
419 |
+
<line number="123" hits="1"/>
|
420 |
+
<line number="124" hits="1"/>
|
421 |
+
<line number="125" hits="1"/>
|
|
|
422 |
<line number="126" hits="0"/>
|
423 |
+
<line number="127" hits="1"/>
|
424 |
+
<line number="128" hits="1"/>
|
425 |
+
<line number="130" hits="1"/>
|
426 |
+
<line number="142" hits="0"/>
|
427 |
+
<line number="143" hits="0"/>
|
428 |
+
<line number="152" hits="1"/>
|
429 |
+
<line number="155" hits="1"/>
|
430 |
+
<line number="156" hits="1"/>
|
431 |
<line number="157" hits="1"/>
|
432 |
+
<line number="158" hits="1"/>
|
433 |
+
<line number="159" hits="1"/>
|
434 |
+
<line number="164" hits="1"/>
|
|
|
|
|
|
|
|
|
435 |
<line number="165" hits="0"/>
|
436 |
<line number="166" hits="0"/>
|
437 |
+
<line number="167" hits="0"/>
|
438 |
+
<line number="168" hits="0"/>
|
439 |
+
<line number="169" hits="0"/>
|
440 |
+
<line number="172" hits="0"/>
|
441 |
+
<line number="173" hits="0"/>
|
442 |
+
<line number="174" hits="0"/>
|
443 |
+
<line number="175" hits="0"/>
|
444 |
+
<line number="191" hits="0"/>
|
445 |
+
<line number="206" hits="0"/>
|
446 |
+
<line number="207" hits="0"/>
|
447 |
</lines>
|
448 |
</class>
|
449 |
</classes>
|
tests/test_friend_request.py
CHANGED
@@ -105,7 +105,7 @@ class TestFriendRequest():
|
|
105 |
'Authorization': 'Bearer ' + inviter['token']
|
106 |
}
|
107 |
response = client.request("POST", 'friend_request', headers=headers, data=payload)
|
108 |
-
assert response.status_code ==
|
109 |
# Create request and re-send
|
110 |
user_ref.document(inviter['id']).set({"deviceId": deviceId})
|
111 |
payload = ''
|
@@ -114,7 +114,6 @@ class TestFriendRequest():
|
|
114 |
'Authorization': 'Bearer ' + inviter['token']
|
115 |
}
|
116 |
response = client.request("POST", 'friend_request', headers=headers, data=payload)
|
117 |
-
# Check response status code
|
118 |
assert response.status_code == 200
|
119 |
result = mmcv.imfrombytes(response.read())
|
120 |
# Check returned QR image
|
@@ -132,7 +131,7 @@ class TestFriendRequest():
|
|
132 |
'Authorization': 'Bearer ' + invitee['token']
|
133 |
}
|
134 |
response = client.request("PATCH", 'friend_request/' + request_id, headers=headers, data=payload)
|
135 |
-
assert response.status_code ==
|
136 |
|
137 |
# Create invitee user
|
138 |
user_ref.document(invitee['id']).set({"deviceId": deviceId})
|
|
|
105 |
'Authorization': 'Bearer ' + inviter['token']
|
106 |
}
|
107 |
response = client.request("POST", 'friend_request', headers=headers, data=payload)
|
108 |
+
assert response.status_code == 400
|
109 |
# Create request and re-send
|
110 |
user_ref.document(inviter['id']).set({"deviceId": deviceId})
|
111 |
payload = ''
|
|
|
114 |
'Authorization': 'Bearer ' + inviter['token']
|
115 |
}
|
116 |
response = client.request("POST", 'friend_request', headers=headers, data=payload)
|
|
|
117 |
assert response.status_code == 200
|
118 |
result = mmcv.imfrombytes(response.read())
|
119 |
# Check returned QR image
|
|
|
131 |
'Authorization': 'Bearer ' + invitee['token']
|
132 |
}
|
133 |
response = client.request("PATCH", 'friend_request/' + request_id, headers=headers, data=payload)
|
134 |
+
assert response.status_code == 400
|
135 |
|
136 |
# Create invitee user
|
137 |
user_ref.document(invitee['id']).set({"deviceId": deviceId})
|
tests/test_video.py
CHANGED
@@ -43,20 +43,18 @@ class TestVideoAPI:
|
|
43 |
# Test when no token is pass to route
|
44 |
payload = {}
|
45 |
files=[
|
46 |
-
('file',('demo.mp4',open('demo.mp4','rb'),'
|
47 |
]
|
48 |
headers = {
|
49 |
-
'Content-Type': 'application/json',
|
50 |
}
|
51 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
52 |
assert response.status_code == 403
|
53 |
# Test when a dummy (not valid) token passed
|
54 |
payload = {}
|
55 |
files=[
|
56 |
-
('file',('demo.mp4',open('demo.mp4','rb'),'
|
57 |
]
|
58 |
headers = {
|
59 |
-
'Content-Type': 'application/json',
|
60 |
'Authorization': "Bearer saikoljncaskljnfckjnasckjna"
|
61 |
}
|
62 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
@@ -68,36 +66,22 @@ class TestVideoAPI:
|
|
68 |
('file',('demo.jpg',open('demo.jpg','rb'),'application/octet-stream'))
|
69 |
]
|
70 |
headers = {
|
71 |
-
'Content-Type': 'application/json',
|
72 |
'Authorization': "Bearer " + user['token']
|
73 |
}
|
74 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
75 |
assert response.status_code == 400
|
76 |
-
assert response.text == "File must be video"
|
77 |
-
# Test on valid token + user
|
78 |
-
payload = {}
|
79 |
-
files=[
|
80 |
-
('file',('demo.mp4',open('demo.mp4','rb'),'application/octet-stream'))
|
81 |
-
]
|
82 |
-
headers = {
|
83 |
-
'Content-Type': 'application/json',
|
84 |
-
'Authorization': "Bearer " + user['id']
|
85 |
-
}
|
86 |
-
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
87 |
-
assert response.status_code == 400
|
88 |
# Test when all requirements have been fulfilled
|
89 |
payload = {}
|
90 |
files=[
|
91 |
-
('file',('demo.mp4',open('demo.mp4','rb'),'
|
92 |
]
|
93 |
headers = {
|
94 |
-
'Content-Type': 'application/json',
|
95 |
'Authorization': "Bearer " + user['token']
|
96 |
}
|
97 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
98 |
assert response.status_code == 200
|
99 |
artifactName = response.text
|
100 |
-
docs = db.collection("artifacts").where(filter = FieldFilter("name", '==', artifactName))
|
101 |
index = 0
|
102 |
for doc in docs:
|
103 |
# For each document in docs. Verify name and status of the artifact
|
@@ -106,22 +90,18 @@ class TestVideoAPI:
|
|
106 |
assert data['name'] == artifactName
|
107 |
assert data['status'] == 'pending'
|
108 |
assert index == 1
|
109 |
-
|
110 |
def test_update_artifact(self):
|
111 |
# Check and preprocess test data before testing
|
112 |
test_artifact = db.collection("artifacts").document('test')
|
113 |
if not test_artifact.get().exists:
|
114 |
-
db.collection("artifacts").
|
115 |
-
test_artifact = db.collection("artifacts").document('test')
|
116 |
else:
|
117 |
test_artifact.update({"status": "testing", 'path': '', "thumbnailURL":""})
|
118 |
# Testing update on each field
|
119 |
-
updateArtifact(test_artifact
|
120 |
-
assert
|
121 |
-
updateArtifact(test_artifact['id'], {{"path": "test_path"}})
|
122 |
-
assert test_artifact.get().to_dict()['path'] == 'test_path'
|
123 |
-
updateArtifact(test_artifact['id'], {{"thumbnailURL": "test_path"}})
|
124 |
-
assert test_artifact.get().to_dict()['thumbnailURl'] == 'test_path'
|
125 |
#Delete data for next time test
|
126 |
test_artifact.delete()
|
127 |
|
|
|
43 |
# Test when no token is pass to route
|
44 |
payload = {}
|
45 |
files=[
|
46 |
+
('file',('demo.mp4',open('demo.mp4','rb'),'video/mp4'))
|
47 |
]
|
48 |
headers = {
|
|
|
49 |
}
|
50 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
51 |
assert response.status_code == 403
|
52 |
# Test when a dummy (not valid) token passed
|
53 |
payload = {}
|
54 |
files=[
|
55 |
+
('file',('demo.mp4',open('demo.mp4','rb'),'video/mp4'))
|
56 |
]
|
57 |
headers = {
|
|
|
58 |
'Authorization': "Bearer saikoljncaskljnfckjnasckjna"
|
59 |
}
|
60 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
|
|
66 |
('file',('demo.jpg',open('demo.jpg','rb'),'application/octet-stream'))
|
67 |
]
|
68 |
headers = {
|
|
|
69 |
'Authorization': "Bearer " + user['token']
|
70 |
}
|
71 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
72 |
assert response.status_code == 400
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
# Test when all requirements have been fulfilled
|
74 |
payload = {}
|
75 |
files=[
|
76 |
+
('file',('demo.mp4',open('demo.mp4','rb'),'video/mp4'))
|
77 |
]
|
78 |
headers = {
|
|
|
79 |
'Authorization': "Bearer " + user['token']
|
80 |
}
|
81 |
response = client.request("POST", 'video', headers=headers, data=payload, files=files)
|
82 |
assert response.status_code == 200
|
83 |
artifactName = response.text
|
84 |
+
docs = db.collection("artifacts").where(filter = FieldFilter("name", '==', artifactName)).stream()
|
85 |
index = 0
|
86 |
for doc in docs:
|
87 |
# For each document in docs. Verify name and status of the artifact
|
|
|
90 |
assert data['name'] == artifactName
|
91 |
assert data['status'] == 'pending'
|
92 |
assert index == 1
|
93 |
+
doc.delete()
|
94 |
def test_update_artifact(self):
|
95 |
# Check and preprocess test data before testing
|
96 |
test_artifact = db.collection("artifacts").document('test')
|
97 |
if not test_artifact.get().exists:
|
98 |
+
db.collection("artifacts").document('test').set({"name": "test", "path": "", "status": "testing", "thumbnailURL":""})
|
99 |
+
test_artifact = db.collection("artifacts").document('test')
|
100 |
else:
|
101 |
test_artifact.update({"status": "testing", 'path': '', "thumbnailURL":""})
|
102 |
# Testing update on each field
|
103 |
+
updateArtifact(test_artifact.id,{"status": "test_done"})
|
104 |
+
assert db.collection("artifacts").document('test').get().to_dict()['status'] == 'test_done'
|
|
|
|
|
|
|
|
|
105 |
#Delete data for next time test
|
106 |
test_artifact.delete()
|
107 |
|