Beispiel #1
0
 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
Beispiel #2
0
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()
Beispiel #3
0
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"}
Beispiel #5
0
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, ""]
Beispiel #8
0
        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])
Beispiel #9
0
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()