@@ -206,34 +206,15 @@ def test_submit(self):
206206
207207 # Submit a job to Rigetti and look for SAS tokens in URIs in the output
208208 results = self .cmd ("az quantum job submit -t rigetti.sim.qvm --job-input-format rigetti.quil.v1 -t rigetti.sim.qvm --job-input-file src/quantum/azext_quantum/tests/latest/input_data/bell-state.quil --job-output-format rigetti.quil-results.v1 -o json" ).get_output_in_json ()
209- self .assertNotIn ("?sv=" , results ["containerUri" ])
210- self .assertNotIn ("&sig=" , results ["containerUri" ])
211-
212- self .assertNotIn ("?sv=" , results ["inputDataUri" ])
213- self .assertNotIn ("&sig=" , results ["inputDataUri" ])
214-
215- self .assertNotIn ("?sv=" , results ["outputDataUri" ])
216- self .assertNotIn ("&sig=" , results ["outputDataUri" ])
209+ self .assert_not_contains_standard_sas_params (results ["containerUri" ])
210+ self .assert_not_contains_standard_sas_params (results ["inputDataUri" ])
211+ self .assert_not_contains_standard_sas_params (results ["outputDataUri" ])
217212
218213 job = self .cmd (f"az quantum job show -j { results ['id' ]} -o json" ).get_output_in_json ()
219-
220- self .assertIn ("?sv=" , job ["containerUri" ])
221- self .assertIn ("&st=" , job ["containerUri" ])
222- self .assertIn ("&se=" , job ["containerUri" ])
223- self .assertIn ("&sp=" , job ["containerUri" ])
224- self .assertIn ("&sig=" , job ["containerUri" ])
225-
226- self .assertIn ("?sv=" , job ["inputDataUri" ])
227- self .assertIn ("&st=" , job ["inputDataUri" ])
228- self .assertIn ("&se=" , job ["inputDataUri" ])
229- self .assertIn ("&sp=" , job ["inputDataUri" ])
230- self .assertIn ("&sig=" , job ["inputDataUri" ])
231-
232- self .assertIn ("?sv=" , job ["outputDataUri" ])
233- self .assertIn ("&st=" , job ["outputDataUri" ])
234- self .assertIn ("&se=" , job ["outputDataUri" ])
235- self .assertIn ("&sp=" , job ["outputDataUri" ])
236- self .assertIn ("&sig=" , job ["outputDataUri" ])
214+
215+ self .assert_contains_standard_sas_params (job ["containerUri" ])
216+ self .assert_contains_standard_sas_params (job ["inputDataUri" ])
217+ self .assert_contains_standard_sas_params (job ["outputDataUri" ])
237218
238219 # Run a Quil pass-through job on Rigetti
239220 results = self .cmd ("az quantum run -t rigetti.sim.qvm --job-input-format rigetti.quil.v1 -t rigetti.sim.qvm --job-input-file src/quantum/azext_quantum/tests/latest/input_data/bell-state.quil --job-output-format rigetti.quil-results.v1 -o json" ).get_output_in_json ()
@@ -291,17 +272,34 @@ def test_submit_with_disabled_then_enabled_storage_key_access(self):
291272 # Test that job submission works with disabled access keys on linked storage (/sasUri returns user delegation SAS)
292273 results = self .cmd ("az quantum job submit -t rigetti.sim.qvm --job-input-format rigetti.quil.v1 --job-input-file src/quantum/azext_quantum/tests/latest/input_data/bell-state.quil --job-output-format rigetti.quil-results.v1 -o json" ).get_output_in_json ()
293274 self .assertIn ("id" , results )
294-
275+
276+ job = self .cmd (f"az quantum job show -j { results ['id' ]} -o json" ).get_output_in_json ()
277+ self .assert_contains_standard_sas_params (job ["containerUri" ])
278+ self .assert_contains_standard_sas_params (job ["inputDataUri" ])
279+ self .assert_contains_standard_sas_params (job ["outputDataUri" ])
280+ self .assert_contains_user_delegation_sas_params (job ["containerUri" ])
281+ self .assert_contains_user_delegation_sas_params (job ["inputDataUri" ])
282+ self .assert_contains_user_delegation_sas_params (job ["outputDataUri" ])
283+
295284 # Enable access keys on the storage account
296285 updated = self .cmd (f"az storage account update -g { test_resource_group } -n { test_storage_temp } --allow-shared-key-access true -o json" ).get_output_in_json ()
297286 self .assertTrue (updated ["allowSharedKeyAccess" ], "Access keys should be enabled after update" )
298287
299- time .sleep (60 ) # wait for the cache to update
288+ time .sleep (300 ) # wait for the cache to update
300289
301290 # Test that job submission works with enabled access keys on linked storage (/sasUri returns container-scoped Service SAS)
302291 results = self .cmd ("az quantum job submit -t rigetti.sim.qvm --job-input-format rigetti.quil.v1 --job-input-file src/quantum/azext_quantum/tests/latest/input_data/bell-state.quil --job-output-format rigetti.quil-results.v1 -o json" ).get_output_in_json ()
303292 self .assertIn ("id" , results )
304293
294+ job = self .cmd (f"az quantum job show -j { results ['id' ]} -o json" ).get_output_in_json ()
295+ self .assert_contains_standard_sas_params (job ["containerUri" ])
296+ self .assert_contains_standard_sas_params (job ["inputDataUri" ])
297+ self .assert_contains_standard_sas_params (job ["outputDataUri" ])
298+ self .assert_not_contains_user_delegation_sas_params (job ["containerUri" ])
299+ self .assert_not_contains_user_delegation_sas_params (job ["inputDataUri" ])
300+ self .assert_not_contains_user_delegation_sas_params (job ["outputDataUri" ])
301+
302+ # Clean up
305303 self .cmd (f'az quantum workspace delete -g { test_resource_group } -w { test_workspace_temp } ' )
306304 self .cmd (f'az storage account delete -g { test_resource_group } -n { test_storage_temp } --yes' )
307305
@@ -397,3 +395,39 @@ def test_job_list_param_formating(self):
397395 assert False
398396 except RequiredArgumentMissingError as e :
399397 assert str (e ) == ERROR_MSG_MISSING_ORDERBY_ARGUMENT
398+
399+ def assert_contains_user_delegation_sas_params (self , uri : str ):
400+ """Assert that the given URI contains user delegation SAS parameters."""
401+ self .assertIn ("?skoid=" , uri ) # signed key object ID (service principal OID)
402+ self .assertIn ("&sktid=" , uri ) # signed key tenant ID
403+ self .assertIn ("&skt=" , uri ) # signed key start time
404+ self .assertIn ("&ske=" , uri ) # signed key expiry time
405+ self .assertIn ("&sks=" , uri ) # signed key service (b = Blob)
406+ self .assertIn ("&skv=" , uri ) # signed key version
407+
408+ def assert_not_contains_user_delegation_sas_params (self , uri : str ):
409+ """Assert that the given URI does not contain user delegation SAS parameters."""
410+ self .assertNotIn ("?skoid=" , uri )
411+ self .assertNotIn ("&sktid=" , uri )
412+ self .assertNotIn ("&skt=" , uri )
413+ self .assertNotIn ("&ske=" , uri )
414+ self .assertNotIn ("&sks=" , uri )
415+ self .assertNotIn ("&skv=" , uri )
416+
417+ def assert_contains_standard_sas_params (self , uri : str ):
418+ """Assert that the given URI contains standard SAS parameters."""
419+ self .assertIn ("sv=" , uri ) # SAS version
420+ self .assertIn ("&st=" , uri ) # start time
421+ self .assertIn ("&se=" , uri ) # expiry time
422+ self .assertIn ("&sr=" , uri ) # signed resource (e.g. c = container)
423+ self .assertIn ("&sp=" , uri ) # permissions
424+ self .assertIn ("&sig=" , uri ) # signature
425+
426+ def assert_not_contains_standard_sas_params (self , uri : str ):
427+ """Assert that the given URI does not contain standard SAS parameters."""
428+ self .assertNotIn ("sv=" , uri )
429+ self .assertNotIn ("&st=" , uri )
430+ self .assertNotIn ("&se=" , uri )
431+ self .assertNotIn ("&sr=" , uri )
432+ self .assertNotIn ("&sp=" , uri )
433+ self .assertNotIn ("&sig=" , uri )
0 commit comments