Skip to content

Commit f2b7588

Browse files
authored
Merge branch 'master' into verb-to-nout-format
2 parents 09e8e31 + d91fb1c commit f2b7588

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

opentok/opentok.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ def __init__(
9999
self._proxies = None
100100
self.endpoints = Endpoints(api_url, self.api_key)
101101
self._app_version = __version__ if app_version == None else app_version
102+
# JWT custom claims - Default values
103+
self._jwt_livetime = 3 # In minutes
102104

103105
@property
104106
def proxies(self):
@@ -116,6 +118,14 @@ def app_version(self):
116118
def app_version(self, value):
117119
self._app_version = value
118120

121+
@property
122+
def jwt_livetime(self):
123+
return self._jwt_livetime
124+
125+
@jwt_livetime.setter
126+
def jwt_livetime(self, minutes):
127+
self._jwt_livetime = minutes
128+
119129
def generate_token(
120130
self,
121131
session_id,
@@ -1147,7 +1157,8 @@ def _create_jwt_auth_header(self):
11471157
"ist": "project",
11481158
"iss": self.api_key,
11491159
"iat": int(time.time()), # current time in unix time (seconds)
1150-
"exp": int(time.time()) + (60 * 3), # 3 minutes in the future (seconds)
1160+
"exp": int(time.time())
1161+
+ (60 * self._jwt_livetime), # 3 minutes in the future (seconds)
11511162
"jti": "{0}".format(0, random.random()),
11521163
}
11531164

tests/test_custom_jwt_claims.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import unittest
2+
from six import text_type, u, b, PY2, PY3
3+
from nose.tools import raises
4+
from expects import *
5+
6+
from opentok import OpenTok, __version__
7+
import time
8+
from jose import jwt
9+
10+
11+
class JwtCustomClaimsTest(unittest.TestCase):
12+
def setUp(self):
13+
self.api_key = u("123456")
14+
self.api_secret = u("1234567890abcdef1234567890abcdef1234567890")
15+
self.session_id = u(
16+
"1_MX4xMjM0NTZ-flNhdCBNYXIgMTUgMTQ6NDI6MjMgUERUIDIwMTR-MC40OTAxMzAyNX4"
17+
)
18+
self.opentok = OpenTok(self.api_key, self.api_secret)
19+
20+
def test_livetime_custom_claim(self):
21+
self.opentok.jwt_livetime = 5 # Token will expire 5 minutes in the future
22+
jwt_token = self.opentok._create_jwt_auth_header()
23+
claims = jwt.decode(jwt_token, self.api_secret, algorithms=[u("HS256")])
24+
expect(claims).to(have_key(u("exp")))
25+
expect(int(claims[u("exp")])).to(
26+
be_above(int(time.time()) + (60 * 4))
27+
) # above of 4 min
28+
expect(int(claims[u("exp")])).to(
29+
be_below(int(time.time()) + (60 * 6))
30+
) # below of 6 min

tests/test_getter_setter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from expects import *
55

66
from opentok import OpenTok, __version__
7+
import time
78

89

910
class GetterSetterTest(unittest.TestCase):
@@ -14,3 +15,8 @@ def setUp(self):
1415
"1_MX4xMjM0NTZ-flNhdCBNYXIgMTUgMTQ6NDI6MjMgUERUIDIwMTR-MC40OTAxMzAyNX4"
1516
)
1617
self.opentok = OpenTok(self.api_key, self.api_secret)
18+
19+
def test_getset_jwt_livetime(self):
20+
livetime = self.opentok.jwt_livetime
21+
self.opentok.jwt_livetime = 5
22+
assert self.opentok.jwt_livetime is not livetime

0 commit comments

Comments
 (0)