Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy_test.api.test_history_contents_provenance

from galaxy_test.base.populators import (
    DatasetPopulator,
    skip_without_tool,
)
from ._framework import ApiTestCase

MINIMAL_PROV_KEYS = ("id", "uuid")
OTHER_PROV_KEYS = ("job_id", "stdout", "stderr", "parameters", "tool_id")
ALL_PROV_KEYS = MINIMAL_PROV_KEYS + OTHER_PROV_KEYS


[docs]class TestProvenance(ApiTestCase):
[docs] def setUp(self): super().setUp() self.dataset_populator = DatasetPopulator(self.galaxy_interactor)
[docs] @skip_without_tool("cat1") def test_get_prov(self): history_id = self.dataset_populator.new_history() new_dataset1_id = self.dataset_populator.new_dataset(history_id, content="for prov")["id"] inputs = { "input1": {"src": "hda", "id": new_dataset1_id}, } run_response = self.dataset_populator.run_tool("cat1", inputs=inputs, history_id=history_id) output_hda_id = run_response["outputs"][0]["id"] prov_response = self._get(f"histories/{history_id}/contents/{output_hda_id}/provenance") self._assert_status_code_is(prov_response, 200) prov = prov_response.json() # Check the top-level provenance info self._assert_has_keys(prov, *ALL_PROV_KEYS) # Check that the provenance info is not recursive when `follow` is not specified prov_input1 = prov["parameters"]["input1"] self._assert_has_keys(prov_input1, *MINIMAL_PROV_KEYS) self._assert_not_has_keys(prov_input1, *OTHER_PROV_KEYS) # Check that the provenance info is also not recursive when `follow=False` prov_response = self._get( f"histories/{history_id}/contents/{output_hda_id}/provenance", {"follow": False}, ) self._assert_status_code_is(prov_response, 200) prov2 = prov_response.json() assert prov == prov2 # Check that the provenance info is recursive when `follow=True` prov_response = self._get( f"histories/{history_id}/contents/{output_hda_id}/provenance", {"follow": True}, ) self._assert_status_code_is(prov_response, 200) prov = prov_response.json() self._assert_has_keys(prov, *ALL_PROV_KEYS) prov_input1 = prov["parameters"]["input1"] self._assert_has_keys(prov_input1, *ALL_PROV_KEYS)