55from oauth2client import client
66from oauth2client import crypt
77import pytest
8+ import six
89
910import firebase_admin
1011from firebase_admin import auth
@@ -75,7 +76,7 @@ def non_cert_app():
7576 firebase_admin .delete_app (app .name )
7677
7778def verify_custom_token (custom_token , expected_claims ):
78- assert isinstance (custom_token , basestring )
79+ assert isinstance (custom_token , six . binary_type )
7980 token = client .verify_id_token (
8081 custom_token ,
8182 FIREBASE_AUDIENCE ,
@@ -117,6 +118,9 @@ def get_id_token(payload_overrides=None, header_overrides=None):
117118 return jwt .encode (payload , signer , headers = headers )
118119
119120
121+ TEST_ID_TOKEN = get_id_token ()
122+
123+
120124class TestCreateCustomToken (object ):
121125
122126 valid_args = {
@@ -143,12 +147,12 @@ class TestCreateCustomToken(object):
143147 }
144148
145149 @pytest .mark .parametrize ('user,claims' , valid_args .values (),
146- ids = valid_args . keys ( ))
150+ ids = list ( valid_args ))
147151 def test_valid_params (self , authtest , user , claims ):
148152 verify_custom_token (authtest .create_custom_token (user , claims ), claims )
149153
150154 @pytest .mark .parametrize ('user,claims,error' , invalid_args .values (),
151- ids = invalid_args . keys ( ))
155+ ids = list ( invalid_args ))
152156 def test_invalid_params (self , authtest , user , claims , error ):
153157 with pytest .raises (error ):
154158 authtest .create_custom_token (user , claims )
@@ -160,6 +164,11 @@ def test_noncert_credential(self, non_cert_app):
160164
161165class TestVerifyIdToken (object ):
162166
167+ valid_tokens = {
168+ 'BinaryToken' : TEST_ID_TOKEN ,
169+ 'TextToken' : TEST_ID_TOKEN .decode ('utf-8' ),
170+ }
171+
163172 invalid_tokens = {
164173 'NoKid' : (get_id_token (header_overrides = {'kid' : None }),
165174 crypt .AppIdentityError ),
@@ -197,23 +206,22 @@ class TestVerifyIdToken(object):
197206 def setup_method (self ):
198207 auth ._http = testutils .HttpMock (200 , MOCK_PUBLIC_CERTS )
199208
200- def test_valid_token ( self , authtest ):
201- id_token = get_id_token ()
209+ @ pytest . mark . parametrize ( 'id_token' , valid_tokens . values (), ids = list ( valid_tokens ))
210+ def test_valid_token ( self , authtest , id_token ):
202211 claims = authtest .verify_id_token (id_token )
203212 assert claims ['admin' ] is True
204213
205214 @pytest .mark .parametrize ('id_token,error' , invalid_tokens .values (),
206- ids = invalid_tokens . keys ( ))
215+ ids = list ( invalid_tokens ))
207216 def test_invalid_token (self , authtest , id_token , error ):
208217 with pytest .raises (error ):
209218 authtest .verify_id_token (id_token )
210219
211220 def test_project_id_env_var (self , non_cert_app ):
212- id_token = get_id_token ()
213221 gcloud_project = os .environ .get (auth .GCLOUD_PROJECT_ENV_VAR )
214222 try :
215223 os .environ [auth .GCLOUD_PROJECT_ENV_VAR ] = MOCK_CREDENTIAL .project_id
216- claims = auth .verify_id_token (id_token , non_cert_app )
224+ claims = auth .verify_id_token (TEST_ID_TOKEN , non_cert_app )
217225 assert claims ['admin' ] is True
218226 finally :
219227 if gcloud_project :
@@ -222,13 +230,12 @@ def test_project_id_env_var(self, non_cert_app):
222230 del os .environ [auth .GCLOUD_PROJECT_ENV_VAR ]
223231
224232 def test_no_project_id (self , non_cert_app ):
225- id_token = get_id_token ()
226233 gcloud_project = os .environ .get (auth .GCLOUD_PROJECT_ENV_VAR )
227234 if gcloud_project :
228235 del os .environ [auth .GCLOUD_PROJECT_ENV_VAR ]
229236 try :
230237 with pytest .raises (ValueError ):
231- auth .verify_id_token (id_token , non_cert_app )
238+ auth .verify_id_token (TEST_ID_TOKEN , non_cert_app )
232239 finally :
233240 if gcloud_project :
234241 os .environ [auth .GCLOUD_PROJECT_ENV_VAR ] = gcloud_project
@@ -239,7 +246,6 @@ def test_custom_token(self, authtest):
239246 authtest .verify_id_token (id_token )
240247
241248 def test_certificate_request_failure (self , authtest ):
242- id_token = get_id_token ()
243249 auth ._http = testutils .HttpMock (404 , 'not found' )
244250 with pytest .raises (client .VerifyJwtTokenError ):
245- authtest .verify_id_token (id_token )
251+ authtest .verify_id_token (TEST_ID_TOKEN )
0 commit comments