def test_log_func(self, caplog): task = FilterTask( filter_func=lambda r: r != 5, log_func=lambda x: f"Valid Values: {','.join([str(y) for y in x])}", ) task.run([1, 2, 3, 4, 5, 6, 7]) assert "Valid Values: 1,2,3,4,6,7" in caplog.text
def test_vault_addr_from_env_var(monkeypatch, vault_var, server_api): """ Verify accepting either upper case or lower case vault addr env vars """ monkeypatch.setenv(vault_var, "http://localhost:8200") with pytest.raises( ValueError, match=r"Local Secret \"VAULT_CREDENTIALS\" was not found."): task = VaultSecret("fake-no-vault-addr-secret") task.run()
def test_vault_auth_missing(monkeypatch, server_api): """ Verify that either VAULT_TOKEN or VAULT_ROLE_ID/VAULT_SECRET_ID are required. """ monkeypatch.setenv("VAULT_ADDR", "http://localhost:8200") with pytest.raises(ValueError, match=r"Supported methods"), prefect.context(secrets={ "VAULT_CREDENTIALS": { "WRONG_TOKEN": "wrong-token-value" } }): task = VaultSecret("fake-remote-secret") out = task.run() assert out == "assert-wont-be-reached"
def test_vault_secret_lookup(monkeypatch, vault_creds, server_api): """ Mocked lookup of a secret from vault The prefect server/cloud secret also mocked """ monkeypatch.setenv("VAULT_ADDR", "http://localhost:8200") hvac.Client.is_authenticated = MagicMock(return_value=True) hvac.Client.auth_approle = MagicMock(return_value=None) mock_vault_response = {"data": {"data": {"fake-key": "fake-value"}}} hvac.api.secrets_engines.KvV2.read_secret_version = MagicMock( return_value=mock_vault_response) with prefect.context(secrets={"VAULT_CREDENTIALS": vault_creds}): task = VaultSecret("secret/fake-path") out = task.run() assert out == {"fake-key": "fake-value"}
def test_vault_secret_lookup_using_alt_creds(monkeypatch, vault_creds, server_api): """ Mocked lookup of a secret from vault The prefect server/cloud secret also mocked """ monkeypatch.setenv("VAULT_ADDR", "http://localhost:8200") mock_vault_response = {"data": {"data": {"fake-key": "fake-value"}}} hvac.api.secrets_engines.KvV2.read_secret_version = MagicMock( return_value=mock_vault_response) with mock.patch("hvac.Client.auth"): with prefect.context(secrets={"MY_VAULT_CREDS": vault_creds}): with mock.patch("builtins.open", mock.mock_open(read_data="fake-path")): task = VaultSecret("secret/fake-path", vault_credentials_secret="MY_VAULT_CREDS") out = task.run() assert out == {"fake-key": "fake-value"}
def test_filter_func_can_be_changed(self): task = FilterTask(filter_func=lambda r: r != 5) exc = ValueError() res = task.run([NoResult, NoResult, 0, 1, 5, "", exc]) assert len(res) == 6 assert res == [NoResult, NoResult, 0, 1, "", exc]
def test_default_filter_func_filters_noresults_and_exceptions(self): task = FilterTask() res = task.run([NoResult, NoResult, 0, 1, 5, "", ValueError()]) assert len(res) == 4 assert res == [0, 1, 5, ""]
assert task.name == "FilterTask" assert task.skip_on_upstream_skip is False assert task.trigger == prefect.triggers.all_finished def test_skip_on_upstream_skip_can_be_overwritten(self): task = FilterTask(skip_on_upstream_skip=True) assert task.skip_on_upstream_skip is True def test_trigger_can_be_overwritten(self): task = FilterTask(trigger=prefect.triggers.manual_only) assert task.trigger == prefect.triggers.manual_only def test_default_filter_func_filters_noresults_and_exceptions(self): task = FilterTask() <<<<<<< HEAD res = task.run([None, 0, 1, 5, "", ValueError()]) ======= res = task.run([NoResult, NoResult, 0, 1, 5, "", ValueError()]) >>>>>>> prefect clone assert len(res) == 4 assert res == [0, 1, 5, ""] def test_filter_func_can_be_changed(self): task = FilterTask(filter_func=lambda r: r != 5) exc = ValueError() <<<<<<< HEAD res = task.run([None, 0, 1, 5, "", exc]) assert len(res) == 5 assert res == [None, 0, 1, "", exc] ======= res = task.run([NoResult, NoResult, 0, 1, 5, "", exc])
def test_vault_addr_env_var_missing(monkeypatch, server_api): monkeypatch.delenv("vault_addr", raising=False) monkeypatch.delenv("VAULT_ADDR", raising=False) with pytest.raises(ValueError, match=r"var not found"): task = VaultSecret("fake-no-vault-addr-secret") task.run()