def test_add_flow_to_github_already_added(): storage = GitHub(repo="test/repo", path="flow.py") f = Flow("test") assert f.name not in storage assert storage.add_flow(f) == "flow.py" assert f.name in storage with pytest.raises(ValueError): storage.add_flow(f)
def test_get_flow_missing_repo(github_client, caplog): github_client.get_repo.side_effect = github.UnknownObjectException(404, {}) storage = GitHub(repo="test/repo", path="flow.py") storage.add_flow(Flow("test")) with pytest.raises(github.UnknownObjectException): storage.get_flow("test") assert "Repo 'test/repo' not found." in caplog.text
def test_get_flow_missing_file(github_client, ref, caplog): repo = github_client.get_repo.return_value repo.get_contents.side_effect = github.UnknownObjectException(404, {}) storage = GitHub(repo="test/repo", path="flow.py", ref=ref) storage.add_flow(Flow("test")) ref = ref or "main" with pytest.raises(github.UnknownObjectException): storage.get_flow("test") assert f"File 'flow.py' not found in repo 'test/repo', ref {ref!r}" in caplog.text
def test_add_flow_to_github_storage(): storage = GitHub(repo="test/repo", path="flow.py") f = Flow("test") assert f.name not in storage assert storage.add_flow(f) == "flow.py" assert f.name in storage
def test_get_flow_github(monkeypatch): f = Flow("test") github = MagicMock() monkeypatch.setattr("prefect.utilities.git.Github", github) extract_flow_from_file = MagicMock(return_value=f) monkeypatch.setattr("prefect.storage.github.extract_flow_from_file", extract_flow_from_file) storage = GitHub(repo="test/repo", path="flow", ref="my_branch") assert f.name not in storage storage.add_flow(f) new_flow = storage.get_flow(f.name) assert extract_flow_from_file.call_args[1]["flow_name"] == f.name assert new_flow.run()
def test_get_flow(github_client, ref, caplog): storage = GitHub(repo="test/repo", path="flow.py", ref=ref) storage.add_flow(Flow("test")) f = storage.get_flow("test") assert github_client.get_repo.call_args[0][0] == "test/repo" repo = github_client.get_repo.return_value assert repo.get_commit.call_args[0][0] == ref or "main" assert repo.get_contents.call_args[0][0] == "flow.py" assert repo.get_contents.call_args[1]["ref"] == "mycommitsha" assert f.name == "test" state = f.run() assert state.is_successful() msg = "Downloading flow from GitHub storage - repo: 'test/repo', path: 'flow.py'" if ref is not None: msg += f", ref: {ref!r}" assert msg in caplog.text assert "Flow successfully downloaded. Using commit: mycommitsha" in caplog.text
def test_get_flow_github(monkeypatch): f = Flow("test") github = MagicMock() monkeypatch.setattr("prefect.utilities.git.Github", github) monkeypatch.setattr( "prefect.storage.github.extract_flow_from_file", MagicMock(return_value=f), ) with pytest.raises(ValueError): storage = GitHub(repo="test/repo") storage.get_flow() storage = GitHub(repo="test/repo", path="flow") assert f.name not in storage flow_location = storage.add_flow(f) new_flow = storage.get_flow(flow_location, ref="my_branch") assert new_flow.run()