Skip to content

Commit 70908b1

Browse files
author
childish-sambino
authored
test: migrate to pytest for python 3.10 compatibility (#588)
1 parent 14d2ff7 commit 70908b1

10 files changed

+260
-400
lines changed

Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ analysis:
1919
. venv/bin/activate; flake8 --ignore=E402,F401,W391,W291,W293 twilio --max-line-length=300
2020

2121
test: analysis
22-
. venv/bin/activate; \
23-
find tests -type d | xargs nosetests
22+
. venv/bin/activate; pytest tests
2423

2524
test-with-coverage:
2625
. venv/bin/activate; \
27-
find tests -type d | xargs nosetests --with-coverage --cover-inclusive --cover-erase --cover-package=twilio; \
26+
pytest --cov=twilio tests; \
2827
coverage xml --omit 'twilio/rest/*' -o coverage.xml
2928

3029
docs-install:

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
flake8
22
mock
3-
nose
43
requests>=2.0.0
54
PyJWT>=2.0.0, <3.0.0
65
twine

tests/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Sphinx==1.8.0
22
mock==0.8.0
3-
nose
3+
pytest
4+
pytest-cov
45
coverage
5-
nosexcover
66
flake8
77
mccabe
88
wheel>=0.22.0

tests/unit/jwt/test_access_token.py

Lines changed: 81 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import time
22
import unittest
3-
43
from datetime import datetime
5-
from nose.tools import assert_equal
64

75
from twilio.jwt.access_token import AccessToken
86
from twilio.jwt.access_token.grants import (
@@ -35,31 +33,31 @@ def assert_greater_equal(obj1, obj2):
3533

3634
class AccessTokenTest(unittest.TestCase):
3735
def _validate_claims(self, payload):
38-
assert_equal(SIGNING_KEY_SID, payload['iss'])
39-
assert_equal(ACCOUNT_SID, payload['sub'])
36+
assert SIGNING_KEY_SID == payload['iss']
37+
assert ACCOUNT_SID == payload['sub']
4038

41-
assert_is_not_none(payload['exp'])
42-
assert_is_not_none(payload['jti'])
43-
assert_is_not_none(payload['grants'])
39+
assert payload['exp'] is not None
40+
assert payload['jti'] is not None
41+
assert payload['grants'] is not None
4442

45-
assert_greater_equal(payload['exp'], int(time.time()))
43+
assert payload['exp'] >= int(time.time())
4644

47-
assert_in(payload['iss'], payload['jti'])
45+
assert payload['iss'] in payload['jti']
4846

4947
def test_empty_grants(self):
5048
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
5149
token = scat.to_jwt()
5250

53-
assert_is_not_none(token)
51+
assert token is not None
5452
decoded_token = AccessToken.from_jwt(token, 'secret')
5553
self._validate_claims(decoded_token.payload)
56-
assert_equal({}, decoded_token.payload['grants'])
54+
assert {} == decoded_token.payload['grants']
5755

5856
def test_region(self):
5957
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret', region='foo')
6058
token = scat.to_jwt()
6159
decoded_token = AccessToken.from_jwt(token, 'secret')
62-
assert_equal(decoded_token.headers['twr'], 'foo')
60+
assert decoded_token.headers['twr'] == 'foo'
6361

6462
def test_empty_region(self):
6563
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
@@ -72,111 +70,111 @@ def test_nbf(self):
7270
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret', nbf=now)
7371
token = scat.to_jwt()
7472

75-
assert_is_not_none(token)
73+
assert token is not None
7674
decoded_token = AccessToken.from_jwt(token, 'secret')
7775
self._validate_claims(decoded_token.payload)
78-
assert_equal(now, decoded_token.nbf)
76+
assert now == decoded_token.nbf
7977

8078
def test_headers(self):
8179
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
8280
token = scat.to_jwt()
83-
assert_is_not_none(token)
81+
assert token is not None
8482
decoded_token = AccessToken.from_jwt(token, 'secret')
8583
self.assertEqual(decoded_token.headers['cty'], 'twilio-fpa;v=1')
8684

8785
def test_identity(self):
8886
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret', identity='[email protected]')
8987
token = scat.to_jwt()
9088

91-
assert_is_not_none(token)
89+
assert token is not None
9290
decoded_token = AccessToken.from_jwt(token, 'secret')
9391
self._validate_claims(decoded_token.payload)
94-
assert_equal({
95-
'identity': '[email protected]'
96-
}, decoded_token.payload['grants'])
92+
assert {
93+
'identity': '[email protected]'
94+
} == decoded_token.payload['grants']
9795

9896
def test_conversations_grant(self):
9997
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
10098
scat.add_grant(ConversationsGrant(configuration_profile_sid='CP123'))
10199

102100
token = scat.to_jwt()
103-
assert_is_not_none(token)
101+
assert token is not None
104102
decoded_token = AccessToken.from_jwt(token, 'secret')
105103
self._validate_claims(decoded_token.payload)
106-
assert_equal(1, len(decoded_token.payload['grants']))
107-
assert_equal({
108-
'configuration_profile_sid': 'CP123'
109-
}, decoded_token.payload['grants']['rtc'])
104+
assert 1 == len(decoded_token.payload['grants'])
105+
assert {
106+
'configuration_profile_sid': 'CP123'
107+
} == decoded_token.payload['grants']['rtc']
110108

111109
def test_video_grant(self):
112110
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
113111
scat.add_grant(VideoGrant(room='RM123'))
114112

115113
token = scat.to_jwt()
116-
assert_is_not_none(token)
114+
assert token is not None
117115
decoded_token = AccessToken.from_jwt(token, 'secret')
118116
self._validate_claims(decoded_token.payload)
119-
assert_equal(1, len(decoded_token.payload['grants']))
120-
assert_equal({
121-
'room': 'RM123'
122-
}, decoded_token.payload['grants']['video'])
117+
assert 1 == len(decoded_token.payload['grants'])
118+
assert {
119+
'room': 'RM123'
120+
} == decoded_token.payload['grants']['video']
123121

124122
def test_ip_messaging_grant(self):
125123
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
126124
scat.add_grant(IpMessagingGrant(service_sid='IS123', push_credential_sid='CR123'))
127125

128126
token = scat.to_jwt()
129-
assert_is_not_none(token)
127+
assert token is not None
130128
decoded_token = AccessToken.from_jwt(token, 'secret')
131129
self._validate_claims(decoded_token.payload)
132-
assert_equal(1, len(decoded_token.payload['grants']))
133-
assert_equal({
134-
'service_sid': 'IS123',
135-
'push_credential_sid': 'CR123'
136-
}, decoded_token.payload['grants']['ip_messaging'])
130+
assert 1 == len(decoded_token.payload['grants'])
131+
assert {
132+
'service_sid': 'IS123',
133+
'push_credential_sid': 'CR123'
134+
} == decoded_token.payload['grants']['ip_messaging']
137135

138136
def test_chat_grant(self):
139137
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
140138
scat.add_grant(ChatGrant(service_sid='IS123', push_credential_sid='CR123'))
141139

142140
token = scat.to_jwt()
143-
assert_is_not_none(token)
141+
assert token is not None
144142
decoded_token = AccessToken.from_jwt(token, 'secret')
145143
self._validate_claims(decoded_token.payload)
146-
assert_equal(1, len(decoded_token.payload['grants']))
147-
assert_equal({
148-
'service_sid': 'IS123',
149-
'push_credential_sid': 'CR123'
150-
}, decoded_token.payload['grants']['chat'])
144+
assert 1 == len(decoded_token.payload['grants'])
145+
assert {
146+
'service_sid': 'IS123',
147+
'push_credential_sid': 'CR123'
148+
} == decoded_token.payload['grants']['chat']
151149

152150
def test_sync_grant(self):
153151
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
154152
scat.identity = "bender"
155153
scat.add_grant(SyncGrant(service_sid='IS123', endpoint_id='blahblahendpoint'))
156154

157155
token = scat.to_jwt()
158-
assert_is_not_none(token)
156+
assert token is not None
159157
decoded_token = AccessToken.from_jwt(token, 'secret')
160158
self._validate_claims(decoded_token.payload)
161-
assert_equal(2, len(decoded_token.payload['grants']))
162-
assert_equal("bender", decoded_token.payload['grants']['identity'])
163-
assert_equal({
164-
'service_sid': 'IS123',
165-
'endpoint_id': 'blahblahendpoint'
166-
}, decoded_token.payload['grants']['data_sync'])
159+
assert 2 == len(decoded_token.payload['grants'])
160+
assert "bender" == decoded_token.payload['grants']['identity']
161+
assert {
162+
'service_sid': 'IS123',
163+
'endpoint_id': 'blahblahendpoint'
164+
} == decoded_token.payload['grants']['data_sync']
167165

168166
def test_grants(self):
169167
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
170168
scat.add_grant(VideoGrant())
171169
scat.add_grant(IpMessagingGrant())
172170

173171
token = scat.to_jwt()
174-
assert_is_not_none(token)
172+
assert token is not None
175173
decoded_token = AccessToken.from_jwt(token, 'secret')
176174
self._validate_claims(decoded_token.payload)
177-
assert_equal(2, len(decoded_token.payload['grants']))
178-
assert_equal({}, decoded_token.payload['grants']['video'])
179-
assert_equal({}, decoded_token.payload['grants']['ip_messaging'])
175+
assert 2 == len(decoded_token.payload['grants'])
176+
assert {} == decoded_token.payload['grants']['video']
177+
assert {} == decoded_token.payload['grants']['ip_messaging']
180178

181179
def test_programmable_voice_grant(self):
182180
grant = VoiceGrant(
@@ -190,18 +188,18 @@ def test_programmable_voice_grant(self):
190188
scat.add_grant(grant)
191189

192190
token = scat.to_jwt()
193-
assert_is_not_none(token)
191+
assert token is not None
194192
decoded_token = AccessToken.from_jwt(token, 'secret')
195193
self._validate_claims(decoded_token.payload)
196-
assert_equal(1, len(decoded_token.payload['grants']))
197-
assert_equal({
198-
'outgoing': {
199-
'application_sid': 'AP123',
200-
'params': {
201-
'foo': 'bar'
202-
}
203-
}
204-
}, decoded_token.payload['grants']['voice'])
194+
assert 1 == len(decoded_token.payload['grants'])
195+
assert {
196+
'outgoing': {
197+
'application_sid': 'AP123',
198+
'params': {
199+
'foo': 'bar'
200+
}
201+
}
202+
} == decoded_token.payload['grants']['voice']
205203

206204
def test_programmable_voice_grant_incoming(self):
207205
grant = VoiceGrant(
@@ -212,15 +210,15 @@ def test_programmable_voice_grant_incoming(self):
212210
scat.add_grant(grant)
213211

214212
token = scat.to_jwt()
215-
assert_is_not_none(token)
213+
assert token is not None
216214
decoded_token = AccessToken.from_jwt(token, 'secret')
217215
self._validate_claims(decoded_token.payload)
218-
assert_equal(1, len(decoded_token.payload['grants']))
219-
assert_equal({
220-
'incoming': {
221-
'allow': True
222-
}
223-
}, decoded_token.payload['grants']['voice'])
216+
assert 1 == len(decoded_token.payload['grants'])
217+
assert {
218+
'incoming': {
219+
'allow': True
220+
}
221+
} == decoded_token.payload['grants']['voice']
224222

225223
def test_task_router_grant(self):
226224
grant = TaskRouterGrant(
@@ -233,15 +231,15 @@ def test_task_router_grant(self):
233231
scat.add_grant(grant)
234232

235233
token = scat.to_jwt()
236-
assert_is_not_none(token)
234+
assert token is not None
237235
decoded_token = AccessToken.from_jwt(token, 'secret')
238236
self._validate_claims(decoded_token.payload)
239-
assert_equal(1, len(decoded_token.payload['grants']))
240-
assert_equal({
241-
'workspace_sid': 'WS123',
242-
'worker_sid': 'WK123',
243-
'role': 'worker'
244-
}, decoded_token.payload['grants']['task_router'])
237+
assert 1 == len(decoded_token.payload['grants'])
238+
assert {
239+
'workspace_sid': 'WS123',
240+
'worker_sid': 'WK123',
241+
'role': 'worker'
242+
} == decoded_token.payload['grants']['task_router']
245243

246244
def test_playback_grant(self):
247245
"""Test that PlaybackGrants are created and decoded correctly."""
@@ -253,11 +251,11 @@ def test_playback_grant(self):
253251
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret')
254252
scat.add_grant(PlaybackGrant(grant=grant))
255253
token = scat.to_jwt()
256-
assert_is_not_none(token)
254+
assert token is not None
257255
decoded_token = AccessToken.from_jwt(token, 'secret')
258256
self._validate_claims(decoded_token.payload)
259-
assert_equal(1, len(decoded_token.payload['grants']))
260-
assert_equal(grant, decoded_token.payload['grants']['player'])
257+
assert 1 == len(decoded_token.payload['grants'])
258+
assert grant == decoded_token.payload['grants']['player']
261259

262260
def test_pass_grants_in_constructor(self):
263261
grants = [
@@ -267,13 +265,13 @@ def test_pass_grants_in_constructor(self):
267265
scat = AccessToken(ACCOUNT_SID, SIGNING_KEY_SID, 'secret', grants=grants)
268266

269267
token = scat.to_jwt()
270-
assert_is_not_none(token)
268+
assert token is not None
271269

272270
decoded_token = AccessToken.from_jwt(token, 'secret')
273271
self._validate_claims(decoded_token.payload)
274-
assert_equal(2, len(decoded_token.payload['grants']))
275-
assert_equal({}, decoded_token.payload['grants']['video'])
276-
assert_equal({}, decoded_token.payload['grants']['ip_messaging'])
272+
assert 2 == len(decoded_token.payload['grants'])
273+
assert {} == decoded_token.payload['grants']['video']
274+
assert {} == decoded_token.payload['grants']['ip_messaging']
277275

278276
def test_constructor_validates_grants(self):
279277
grants = [VideoGrant, 'GrantMeAccessToEverything']

0 commit comments

Comments
 (0)