diff --git a/tests/test_access_token.py b/tests/test_access_token.py index 6f1f029ef5..44bb96c036 100644 --- a/tests/test_access_token.py +++ b/tests/test_access_token.py @@ -4,7 +4,7 @@ from datetime import datetime from nose.tools import assert_equal from twilio.jwt import decode -from twilio.access_token import AccessToken, ConversationsGrant, IpMessagingGrant, VoiceGrant +from twilio.access_token import AccessToken, ConversationsGrant, IpMessagingGrant, VoiceGrant, VideoGrant ACCOUNT_SID = 'AC123' SIGNING_KEY_SID = 'SK123' @@ -93,18 +93,33 @@ def test_ip_messaging_grant(self): 'push_credential_sid': 'CR123' }, payload['grants']['ip_messaging']) + def test_video_grant(self): + scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret') + scat.add_grant(VideoGrant(configuration_profile_sid='CP123')) + + token = str(scat) + assert_is_not_none(token) + payload = decode(token, 'secret') + self._validate_claims(payload) + assert_equal(1, len(payload['grants'])) + assert_equal({ + 'configuration_profile_sid': 'CP123' + }, payload['grants']['video']) + def test_grants(self): scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret') scat.add_grant(ConversationsGrant()) scat.add_grant(IpMessagingGrant()) + scat.add_grant(VideoGrant()) token = str(scat) assert_is_not_none(token) payload = decode(token, 'secret') self._validate_claims(payload) - assert_equal(2, len(payload['grants'])) + assert_equal(3, len(payload['grants'])) assert_equal({}, payload['grants']['rtc']) assert_equal({}, payload['grants']['ip_messaging']) + assert_equal({}, payload['grants']['video']) def test_programmable_voice_grant(self): grant = VoiceGrant( diff --git a/twilio/access_token.py b/twilio/access_token.py index 3fa1ddd403..9621c041ad 100644 --- a/twilio/access_token.py +++ b/twilio/access_token.py @@ -85,6 +85,23 @@ def to_payload(self): return grant +class VideoGrant(object): + """ Grant to access Twilio Video """ + def __init__(self, configuration_profile_sid=None): + self.configuration_profile_sid = configuration_profile_sid + + @property + def key(self): + return "video" + + def to_payload(self): + grant = {} + if self.configuration_profile_sid: + grant['configuration_profile_sid'] = self.configuration_profile_sid + + return grant + + class AccessToken(object): """ Access Token used to access Twilio Resources """ def __init__(self, account_sid, signing_key_sid, secret,