示例#1
0
 def test_secret_value_pulled_from_context(self):
     secret = PrefectSecret(name="test")
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with prefect.context(secrets=dict(test=42)):
             assert secret.run() == 42
         with pytest.raises(ValueError):
             secret.run()
示例#2
0
 def test_local_secrets_auto_load_json_strings(self):
     secret = PrefectSecret(name="test")
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with prefect.context(secrets=dict(test='{"x": 42}')):
             assert secret.run() == {"x": 42}
         with pytest.raises(ValueError):
             secret.run()
示例#3
0
    def test_secret_value_depends_on_use_local_secrets(self, monkeypatch):
        response = {"errors": "Malformed Authorization header"}
        post = MagicMock(return_value=MagicMock(json=MagicMock(return_value=response)))
        session = MagicMock()
        session.return_value.post = post
        monkeypatch.setattr("requests.Session", session)

        secret = PrefectSecret(name="test")
        with set_temporary_config(
            {"cloud.use_local_secrets": False, "cloud.auth_token": None}
        ):
            with prefect.context(secrets=dict()):
                with pytest.raises(ClientError):
                    secret.run()
示例#4
0
 def test_cloud_secrets_remain_plain_dictionaries(self, monkeypatch):
     response = {
         "data": {
             "secret_value": {
                 "a": "1234",
                 "b": [1, 2, {
                     "c": 3
                 }]
             }
         }
     }
     post = MagicMock(return_value=MagicMock(json=MagicMock(
         return_value=response)))
     session = MagicMock()
     session.return_value.post = post
     monkeypatch.setattr("requests.Session", session)
     with set_temporary_config({
             "cloud.auth_token": "secret_token",
             "cloud.use_local_secrets": False
     }):
         my_secret = PrefectSecret(name="the-key")
         val = my_secret.run()
     assert val == {"a": "1234", "b": [1, 2, {"c": 3}]}
     assert isinstance(val, dict) and not isinstance(val, box.Box)
     val2 = val["b"]
     assert isinstance(val2, list) and not isinstance(val2, box.BoxList)
     val3 = val["b"][2]
     assert isinstance(val3, dict) and not isinstance(val3, box.Box)
示例#5
0
 def test_local_secrets_remain_plain_dictionaries(self):
     secret = PrefectSecret(name="test")
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with prefect.context(secrets=dict(test={"x": 42})):
             assert isinstance(prefect.context.secrets["test"], dict)
             val = secret.run()
             assert val == {"x": 42}
             assert isinstance(val, dict) and not isinstance(val, box.Box)
示例#6
0
    def test_reads_by_rerunning_task(self):
        task = PrefectSecret("foo")
        task.run = lambda *args, **kwargs: 42
        result = SecretResult(task)
        result.location == "foo"

        new_result = result.read("foo")
        assert new_result.value == 42
        new_result.location == "foo"
示例#7
0
 def test_secrets_use_client(self, monkeypatch):
     response = {"data": {"secret_value": '"1234"'}}
     post = MagicMock(return_value=MagicMock(json=MagicMock(return_value=response)))
     session = MagicMock()
     session.return_value.post = post
     monkeypatch.setattr("requests.Session", session)
     with set_temporary_config(
         {"cloud.auth_token": "secret_token", "cloud.use_local_secrets": False}
     ):
         my_secret = PrefectSecret(name="the-key")
         val = my_secret.run()
     assert val == "1234"
示例#8
0
    def test_cloud_secrets_auto_load_json_strings(self, monkeypatch):
        response = {"data": {"secret_value": '{"x": 42}'}}
        post = MagicMock(return_value=MagicMock(json=MagicMock(return_value=response)))
        session = MagicMock()
        session.return_value.post = post
        monkeypatch.setattr("requests.Session", session)
        with set_temporary_config(
            {"cloud.auth_token": "secret_token", "cloud.use_local_secrets": False}
        ):
            my_secret = PrefectSecret(name="the-key")
            val = my_secret.run()

        assert isinstance(val, dict)
示例#9
0
 def test_secret_raises_if_doesnt_exist(self):
     secret = PrefectSecret(name="test")
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with pytest.raises(ValueError, match="not found"):
             secret.run()
示例#10
0
 def test_secret_raises_if_no_name_provided(self):
     secret = PrefectSecret()
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with pytest.raises(ValueError,
                            match="secret name must be provided"):
             secret.run()
示例#11
0
 def test_secret_name_set_at_runtime(self):
     secret = PrefectSecret()
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with prefect.context(secrets=dict(foo="bar")):
             assert secret.run(name="foo") == "bar"
示例#12
0
 def test_secret_name_can_be_overwritten(self):
     secret = PrefectSecret(name="test")
     with set_temporary_config({"cloud.use_local_secrets": True}):
         with prefect.context(secrets=dict(test=42, foo="bar")):
             assert secret.run() == 42
             assert secret.run(name="foo") == "bar"