@@ -160,48 +160,33 @@ def test_secret_key_with_configured_kid():
160160 assert header ["kid" ] == "my-custom-kid"
161161
162162
163- def test_generate_workload_token ():
164- """generate_workload_token () produces a token with scope 'workload' and 24h expiry ."""
163+ def test_generate_with_custom_valid_for ():
164+ """generate () accepts a valid_for override ."""
165165 generator = JWTGenerator (secret_key = "test-secret" , audience = "test" , valid_for = 60 )
166+ token = generator .generate (extras = {"sub" : "user" }, valid_for = 3600 )
167+ claims = jwt .decode (token , "test-secret" , algorithms = ["HS512" ], audience = "test" )
168+ assert claims ["exp" ] - claims ["iat" ] == 3600
166169
167- with patch .dict (
168- "os.environ" ,
169- {"AIRFLOW__EXECUTION_API__JWT_WORKLOAD_TOKEN_EXPIRATION_TIME" : "86400" },
170- ):
171- token = generator .generate_workload_token (sub = "ti-123" )
172170
171+ def test_generate_workload_scope_via_extras ():
172+ """generate() with scope='workload' in extras produces a workload-scoped token."""
173+ generator = JWTGenerator (secret_key = "test-secret" , audience = "test" , valid_for = 60 )
174+
175+ token = generator .generate (extras = {"sub" : "ti-123" , "scope" : "workload" }, valid_for = 86400 )
173176 claims = jwt .decode (token , "test-secret" , algorithms = ["HS512" ], audience = "test" )
174177 assert claims ["sub" ] == "ti-123"
175178 assert claims ["scope" ] == "workload"
176- # Workload token should have ~24h validity, not the generator's default 60s
177179 assert claims ["exp" ] - claims ["iat" ] == 86400
178180
179181
180- def test_generate_with_custom_valid_for ():
181- """generate() accepts a valid_for override."""
182- generator = JWTGenerator (secret_key = "test-secret" , audience = "test" , valid_for = 60 )
183- token = generator .generate (extras = {"sub" : "user" }, valid_for = 3600 )
184- claims = jwt .decode (token , "test-secret" , algorithms = ["HS512" ], audience = "test" )
185- assert claims ["exp" ] - claims ["iat" ] == 3600
186-
187-
188- def test_workload_token_vs_regular_token_scope ():
189- """Regular tokens have no scope, workload tokens have scope 'workload'."""
182+ def test_regular_token_has_no_scope ():
183+ """Regular tokens without scope in extras have no scope claim."""
190184 generator = JWTGenerator (secret_key = "test-secret" , audience = "test" , valid_for = 60 )
191185
192186 regular = generator .generate (extras = {"sub" : "user" })
193187 regular_claims = jwt .decode (regular , "test-secret" , algorithms = ["HS512" ], audience = "test" )
194188 assert "scope" not in regular_claims
195189
196- with patch .dict (
197- "os.environ" ,
198- {"AIRFLOW__EXECUTION_API__JWT_WORKLOAD_TOKEN_EXPIRATION_TIME" : "86400" },
199- ):
200- workload = generator .generate_workload_token (sub = "ti-123" )
201-
202- workload_claims = jwt .decode (workload , "test-secret" , algorithms = ["HS512" ], audience = "test" )
203- assert workload_claims ["scope" ] == "workload"
204-
205190
206191@pytest .fixture
207192def jwt_generator (ed25519_private_key : Ed25519PrivateKey ):
0 commit comments