Skip to content

Commit 3d22fcc

Browse files
dbatyPr0Ger
authored andcommitted
Do not ignore custom JWT lifetime when using TokenCredentials
1 parent d93b6cd commit 3d22fcc

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

apns2/credentials.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ def get_authorization_header(self, topic: Optional[str]) -> str:
6060
token = self._get_or_create_topic_token()
6161
return 'bearer %s' % token
6262

63-
@staticmethod
64-
def _is_expired_token(issue_date: float) -> bool:
65-
return time.time() > issue_date + DEFAULT_TOKEN_LIFETIME
63+
def _is_expired_token(self, issue_date: float) -> bool:
64+
return time.time() > issue_date + self.__token_lifetime
6665

6766
@staticmethod
6867
def _get_signing_key(key_path: str) -> str:

test/test_credentials.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,24 @@
1414

1515
@pytest.fixture
1616
def token_credentials():
17-
return TokenCredentials('test/eckey.pem', '1QBCDJ9RST', '3Z24IP123A')
17+
return TokenCredentials(
18+
auth_key_path='test/eckey.pem',
19+
auth_key_id='1QBCDJ9RST',
20+
team_id='3Z24IP123A',
21+
token_lifetime=30, # seconds
22+
)
1823

1924

2025
def test_token_expiration(token_credentials):
21-
# As long as the token lifetime hasn't elapsed, this should work. To
22-
# be really careful, we should check how much time has elapsed to
23-
# know if it fail. But, either way, we'd have to come up with a good
24-
# lifetime for future tests...
25-
26-
with freeze_time('2012-01-14'):
27-
expiring_header = token_credentials.get_authorization_header(TOPIC)
28-
29-
new_header = token_credentials.get_authorization_header(TOPIC)
30-
assert expiring_header != new_header
26+
with freeze_time('2012-01-14 12:00:00'):
27+
header1 = token_credentials.get_authorization_header(TOPIC)
28+
29+
# 20 seconds later, before expiration, same JWT
30+
with freeze_time('2012-01-14 12:00:20'):
31+
header2 = token_credentials.get_authorization_header(TOPIC)
32+
assert header1 == header2
33+
34+
# 35 seconds later, after expiration, new JWT
35+
with freeze_time('2012-01-14 12:00:40'):
36+
header3 = token_credentials.get_authorization_header(TOPIC)
37+
assert header3 != header1

0 commit comments

Comments
 (0)