@@ -253,6 +253,24 @@ def test__create_self_signed_jwt_always_use_jwt_access_with_audience(self, jwt):
253253 credentials ._create_self_signed_jwt (audience )
254254 jwt .from_signing_credentials .assert_called_once_with (credentials , audience )
255255
256+ @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
257+ def test__create_self_signed_jwt_always_use_jwt_access_with_audience_similar_jwt_is_reused (
258+ self , jwt
259+ ):
260+ credentials = service_account .Credentials (
261+ SIGNER ,
262+ self .SERVICE_ACCOUNT_EMAIL ,
263+ self .TOKEN_URI ,
264+ default_scopes = ["bar" , "foo" ],
265+ always_use_jwt_access = True ,
266+ )
267+
268+ audience = "https://pubsub.googleapis.com"
269+ credentials ._create_self_signed_jwt (audience )
270+ credentials ._jwt_credentials ._audience = audience
271+ credentials ._create_self_signed_jwt (audience )
272+ jwt .from_signing_credentials .assert_called_once_with (credentials , audience )
273+
256274 @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
257275 def test__create_self_signed_jwt_always_use_jwt_access_with_scopes (self , jwt ):
258276 credentials = service_account .Credentials (
@@ -269,6 +287,26 @@ def test__create_self_signed_jwt_always_use_jwt_access_with_scopes(self, jwt):
269287 credentials , None , additional_claims = {"scope" : "bar foo" }
270288 )
271289
290+ @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
291+ def test__create_self_signed_jwt_always_use_jwt_access_with_scopes_similar_jwt_is_reused (
292+ self , jwt
293+ ):
294+ credentials = service_account .Credentials (
295+ SIGNER ,
296+ self .SERVICE_ACCOUNT_EMAIL ,
297+ self .TOKEN_URI ,
298+ scopes = ["bar" , "foo" ],
299+ always_use_jwt_access = True ,
300+ )
301+
302+ audience = "https://pubsub.googleapis.com"
303+ credentials ._create_self_signed_jwt (audience )
304+ credentials ._jwt_credentials .additional_claims = {"scope" : "bar foo" }
305+ credentials ._create_self_signed_jwt (audience )
306+ jwt .from_signing_credentials .assert_called_once_with (
307+ credentials , None , additional_claims = {"scope" : "bar foo" }
308+ )
309+
272310 @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
273311 def test__create_self_signed_jwt_always_use_jwt_access_with_default_scopes (
274312 self , jwt
@@ -286,6 +324,25 @@ def test__create_self_signed_jwt_always_use_jwt_access_with_default_scopes(
286324 credentials , None , additional_claims = {"scope" : "bar foo" }
287325 )
288326
327+ @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
328+ def test__create_self_signed_jwt_always_use_jwt_access_with_default_scopes_similar_jwt_is_reused (
329+ self , jwt
330+ ):
331+ credentials = service_account .Credentials (
332+ SIGNER ,
333+ self .SERVICE_ACCOUNT_EMAIL ,
334+ self .TOKEN_URI ,
335+ default_scopes = ["bar" , "foo" ],
336+ always_use_jwt_access = True ,
337+ )
338+
339+ credentials ._create_self_signed_jwt (None )
340+ credentials ._jwt_credentials .additional_claims = {"scope" : "bar foo" }
341+ credentials ._create_self_signed_jwt (None )
342+ jwt .from_signing_credentials .assert_called_once_with (
343+ credentials , None , additional_claims = {"scope" : "bar foo" }
344+ )
345+
289346 @mock .patch ("google.auth.jwt.Credentials" , instance = True , autospec = True )
290347 def test__create_self_signed_jwt_always_use_jwt_access (self , jwt ):
291348 credentials = service_account .Credentials (
0 commit comments