NMPhap commited on
Commit
7a0e77d
1 Parent(s): fef30b3

<Test>: add test for video

Browse files
.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
- artifact_snapshot = db.collection("artifacts").document(artifactId)
157
- if not artifact_snapshot.exists:
158
- artifact_snapshot.update(body)
159
- sendMessage(artifactId)
 
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="1699417927975" lines-valid="375" lines-covered="149" line-rate="0.3973" 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.7027" 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,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.3333" branch-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="0"/>
63
- <line number="15" hits="0"/>
64
- <line number="16" hits="0"/>
65
- <line number="17" hits="0"/>
66
- <line number="18" hits="0"/>
67
- <line number="19" hits="0"/>
68
  <line number="20" hits="0"/>
69
- <line number="25" hits="0"/>
70
- <line number="26" hits="0"/>
71
- <line number="31" hits="0"/>
72
- <line number="32" hits="0"/>
73
- <line number="38" hits="0"/>
74
- <line number="39" hits="0"/>
75
- <line number="40" hits="0"/>
76
- <line number="41" hits="0"/>
77
- <line number="43" hits="0"/>
78
  </lines>
79
  </class>
80
- <class name="main.py" filename="main.py" complexity="0" line-rate="0.75" branch-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="13" hits="1"/>
92
- <line number="14" hits="1"/>
93
- <line number="17" hits="1"/>
94
- <line number="18" hits="1"/>
95
- <line number="19" hits="0"/>
96
- <line number="20" hits="0"/>
97
- <line number="23" hits="1"/>
98
- <line number="24" hits="1"/>
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.3182" branch-rate="0" complexity="0">
108
  <classes>
109
- <class name="color.py" filename="custom_mmcv/color.py" complexity="0" line-rate="0.4375" branch-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="0"/>
127
- <line number="35" hits="0"/>
128
- <line number="36" hits="0"/>
129
  <line number="37" hits="0"/>
130
- <line number="38" hits="0"/>
131
- <line number="39" hits="0"/>
132
- <line number="40" hits="0"/>
133
- <line number="41" hits="0"/>
134
- <line number="42" hits="0"/>
135
- <line number="43" hits="0"/>
136
- <line number="44" hits="0"/>
137
- <line number="45" hits="0"/>
138
- <line number="46" hits="0"/>
139
- <line number="47" hits="0"/>
140
- <line number="48" hits="0"/>
141
- <line number="49" hits="0"/>
142
- <line number="50" hits="0"/>
143
- <line number="52" hits="0"/>
144
  </lines>
145
  </class>
146
- <class name="main.py" filename="custom_mmcv/main.py" complexity="0" line-rate="0.2059" branch-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="0"/>
157
- <line number="51" hits="0"/>
158
- <line number="52" hits="0"/>
159
- <line number="53" hits="0"/>
160
- <line number="54" hits="0"/>
161
- <line number="56" hits="0"/>
162
- <line number="57" hits="0"/>
163
- <line number="58" hits="0"/>
164
- <line number="59" hits="0"/>
165
- <line number="60" hits="0"/>
166
- <line number="61" hits="0"/>
167
- <line number="63" hits="0"/>
168
- <line number="64" hits="0"/>
169
- <line number="66" hits="0"/>
170
- <line number="67" hits="0"/>
171
- <line number="68" hits="0"/>
172
- <line number="69" hits="0"/>
173
- <line number="70" hits="0"/>
174
- <line number="71" hits="0"/>
175
- <line number="72" hits="0"/>
176
- <line number="73" hits="0"/>
177
- <line number="74" hits="0"/>
178
- <line number="75" hits="0"/>
179
- <line number="76" hits="0"/>
180
- <line number="86" hits="0"/>
181
  <line number="87" hits="0"/>
182
- <line number="88" hits="0"/>
183
  </lines>
184
  </class>
185
  </classes>
@@ -204,9 +200,9 @@
204
  </class>
205
  </classes>
206
  </package>
207
- <package name="routers" line-rate="0.3214" branch-rate="0" complexity="0">
208
  <classes>
209
- <class name="friend_request.py" filename="routers/friend_request.py" complexity="0" line-rate="0.3571" branch-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="0"/>
237
  <line number="45" hits="0"/>
238
- <line number="46" hits="0"/>
239
- <line number="55" hits="0"/>
240
- <line number="56" hits="0"/>
241
- <line number="57" hits="0"/>
242
- <line number="58" hits="0"/>
243
- <line number="59" hits="0"/>
244
- <line number="60" hits="0"/>
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="0"/>
252
  <line number="70" hits="0"/>
253
- <line number="72" hits="0"/>
254
- <line number="73" hits="0"/>
255
- <line number="75" hits="0"/>
256
  <line number="76" hits="0"/>
257
- <line number="78" hits="0"/>
258
- <line number="80" hits="0"/>
259
  <line number="81" hits="0"/>
260
- <line number="83" hits="0"/>
261
  <line number="84" hits="0"/>
262
- <line number="86" hits="0"/>
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="0"/>
269
- <line number="94" hits="0"/>
270
- <line number="97" hits="0"/>
271
- <line number="98" hits="0"/>
272
  <line number="101" hits="1"/>
273
- <line number="102" hits="0"/>
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="0"/>
290
  <line number="131" hits="1"/>
291
- <line number="132" hits="0"/>
292
  <line number="135" hits="1"/>
293
- <line number="136" hits="0"/>
294
  <line number="139" hits="1"/>
295
- <line number="140" hits="0"/>
296
  </lines>
297
  </class>
298
- <class name="image.py" filename="routers/image.py" complexity="0" line-rate="0.3333" branch-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="0"/>
313
- <line number="21" hits="0"/>
314
- <line number="22" hits="0"/>
315
- <line number="23" hits="0"/>
316
- <line number="24" hits="0"/>
317
- <line number="26" hits="0"/>
318
- <line number="27" hits="0"/>
319
- <line number="28" hits="0"/>
320
- <line number="29" hits="0"/>
321
- <line number="31" hits="0"/>
322
- <line number="33" hits="0"/>
323
  <line number="34" hits="0"/>
324
- <line number="35" hits="0"/>
325
- <line number="37" hits="0"/>
326
  <line number="40" hits="1"/>
327
- <line number="41" hits="0"/>
328
- <line number="42" hits="0"/>
329
- <line number="43" hits="0"/>
330
- <line number="44" hits="0"/>
331
- <line number="45" hits="0"/>
332
- <line number="46" hits="0"/>
333
- <line number="48" hits="0"/>
334
- <line number="49" hits="0"/>
335
- <line number="51" hits="0"/>
336
- <line number="52" hits="0"/>
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.2421" branch-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="0"/>
376
- <line number="36" hits="0"/>
377
- <line number="41" hits="0"/>
378
- <line number="42" hits="0"/>
379
  <line number="43" hits="0"/>
380
- <line number="44" hits="0"/>
381
- <line number="45" hits="0"/>
382
- <line number="46" hits="0"/>
383
- <line number="47" hits="0"/>
384
- <line number="48" hits="0"/>
385
- <line number="49" hits="0"/>
386
- <line number="50" hits="0"/>
387
- <line number="51" hits="0"/>
388
- <line number="52" hits="0"/>
389
- <line number="53" hits="0"/>
390
- <line number="54" hits="0"/>
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="0"/>
396
- <line number="64" hits="0"/>
397
- <line number="65" hits="0"/>
398
- <line number="68" hits="0"/>
399
- <line number="69" hits="0"/>
400
- <line number="73" hits="0"/>
401
- <line number="80" hits="0"/>
402
- <line number="81" hits="0"/>
403
- <line number="82" hits="0"/>
404
- <line number="83" hits="0"/>
405
- <line number="84" hits="0"/>
406
- <line number="85" hits="0"/>
407
- <line number="86" hits="0"/>
408
- <line number="88" hits="0"/>
409
- <line number="89" hits="0"/>
410
- <line number="91" hits="0"/>
411
- <line number="92" hits="0"/>
412
- <line number="94" hits="0"/>
413
- <line number="95" hits="0"/>
414
- <line number="97" hits="0"/>
415
- <line number="98" hits="0"/>
416
- <line number="101" hits="0"/>
417
- <line number="103" hits="0"/>
418
- <line number="105" hits="0"/>
419
- <line number="106" hits="0"/>
420
- <line number="107" hits="0"/>
421
- <line number="111" hits="0"/>
422
- <line number="112" hits="0"/>
423
- <line number="115" hits="0"/>
424
- <line number="119" hits="0"/>
425
- <line number="120" hits="0"/>
426
- <line number="121" hits="0"/>
427
- <line number="122" hits="0"/>
428
- <line number="123" hits="0"/>
429
- <line number="124" hits="0"/>
430
  <line number="126" hits="0"/>
431
- <line number="138" hits="0"/>
432
- <line number="139" hits="0"/>
433
- <line number="148" hits="0"/>
434
- <line number="151" hits="1"/>
435
- <line number="152" hits="0"/>
436
- <line number="153" hits="0"/>
437
- <line number="154" hits="0"/>
 
438
  <line number="157" hits="1"/>
439
- <line number="158" hits="0"/>
440
- <line number="159" hits="0"/>
441
- <line number="160" hits="0"/>
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="178" hits="0"/>
449
- <line number="189" hits="0"/>
450
- <line number="190" hits="0"/>
 
 
 
 
 
 
 
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 == 500
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 == 500
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'),'application/octet-stream'))
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'),'application/octet-stream'))
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'),'application/octet-stream'))
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
- db.collection("user").document(user['id']).delete()
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").add({"name": "test", "path": "", "status": "testing", "thumbnailURL":""})
115
- test_artifact = db.collection("artifacts").document('test').get()
116
  else:
117
  test_artifact.update({"status": "testing", 'path': '', "thumbnailURL":""})
118
  # Testing update on each field
119
- updateArtifact(test_artifact['id'], {{"status": "test_done"}})
120
- assert test_artifact.get().to_dict()['status'] == 'test_done'
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