1
1
from os .path import abspath
2
2
3
3
import responses
4
+ from pytest import raises
4
5
from vonage_http_client import HttpClient
5
- from vonage_video .models .captions import CaptionsOptions
6
+ from vonage_http_client .errors import HttpRequestError
7
+ from vonage_video .models .captions import CaptionsData , CaptionsOptions
8
+ from vonage_video .models .enums import LanguageCode , TokenRole
9
+ from vonage_video .models .token import TokenOptions
6
10
from vonage_video .video import Video
7
11
8
12
from testutils import build_response , get_mock_jwt_auth
13
17
video = Video (HttpClient (get_mock_jwt_auth ()))
14
18
15
19
20
+ def test_captions_options_model ():
21
+ options = CaptionsOptions (
22
+ session_id = 'test_session_id' ,
23
+ token = 'test_token' ,
24
+ language_code = LanguageCode .EN_GB ,
25
+ max_duration = 300 ,
26
+ partial_captions = True ,
27
+ status_callback_url = 'example.com/status' ,
28
+ )
29
+
30
+ assert options .model_dump (by_alias = True ) == {
31
+ 'sessionId' : 'test_session_id' ,
32
+ 'token' : 'test_token' ,
33
+ 'languageCode' : 'en-GB' ,
34
+ 'maxDuration' : 300 ,
35
+ 'partialCaptions' : True ,
36
+ 'statusCallbackUrl' : 'example.com/status' ,
37
+ }
38
+
39
+
16
40
@responses .activate
17
41
def test_start_captions ():
18
42
build_response (
@@ -23,4 +47,54 @@ def test_start_captions():
23
47
202 ,
24
48
)
25
49
26
- options = CaptionsOptions ()
50
+ session_id = 'test_session_id'
51
+ options = CaptionsOptions (
52
+ session_id = session_id ,
53
+ token = video .generate_client_token (
54
+ TokenOptions (session_id = session_id , role = TokenRole .MODERATOR )
55
+ ),
56
+ language_code = LanguageCode .EN_GB ,
57
+ max_duration = 300 ,
58
+ partial_captions = True ,
59
+ status_callback_url = 'https://example.com/status' ,
60
+ )
61
+ captions = video .start_captions (options )
62
+
63
+ assert captions .captions_id == 'bc01a6b7-0e8e-4aa0-bb4e-2390f7cb18a1'
64
+
65
+
66
+ @responses .activate
67
+ def test_start_captions_error_already_enabled ():
68
+ build_response (
69
+ path ,
70
+ 'POST' ,
71
+ 'https://video.api.vonage.com/v2/project/test_application_id/captions' ,
72
+ 'captions_error_already_enabled.json' ,
73
+ 409 ,
74
+ )
75
+
76
+ session_id = 'test_session_id'
77
+ options = CaptionsOptions (
78
+ session_id = session_id ,
79
+ token = video .generate_client_token (
80
+ TokenOptions (session_id = session_id , role = TokenRole .MODERATOR )
81
+ ),
82
+ )
83
+
84
+ with raises (HttpRequestError ) as e :
85
+ video .start_captions (options )
86
+ assert 'Audio captioning is already enabled' in e .value .message
87
+
88
+
89
+ @responses .activate
90
+ def test_stop_captions ():
91
+ build_response (
92
+ path ,
93
+ 'POST' ,
94
+ 'https://video.api.vonage.com/v2/project/test_application_id/captions/test_captions_id/stop' ,
95
+ status_code = 202 ,
96
+ )
97
+
98
+ video .stop_captions (CaptionsData (captions_id = 'test_captions_id' ))
99
+
100
+ assert responses .calls [0 ].response .status_code == 202
0 commit comments