Example #1
0
def test_retrieved_value_is_cached(mocker):
    value = 'Hello World'
    os.environ[ENV_VAL_1] = value
    vault.get(ENV_VAL_1)

    mocker.patch('top_secret.vault._get_from_source')
    vault.get(ENV_VAL_1)
    vault._get_from_source.assert_not_called()
Example #2
0
def test_clear_cast_handlers():
    secret = 'True'
    os.environ[ENV_VAL_1] = secret

    vault.add_cast_handler('bool', lambda x: bool_cast_handler(x))
    result = vault.get(ENV_VAL_1, cast_to='bool')
    assert result is True

    vault.clear_cast_handlers()
    with pytest.raises(CastHandlerMissingError):
        vault.get(ENV_VAL_1, no_cache=True, cast_to='bool')
Example #3
0
def test_clear_preprocessors():
    secret = 'Hello World'
    secret_encoded = b64encode(secret.encode()).decode()
    vault.add_preprocessor(base64preprocessor)

    os.environ[ENV_VAL_1] = secret_encoded

    result = vault.get(ENV_VAL_1)
    assert result == secret

    vault.clear_preprocessors()

    result = vault.get(ENV_VAL_1, no_cache=True)
    assert result == secret_encoded
Example #4
0
def test_retrieve_with_custom_cast():
    import json
    value = '{"hello": "world"}'
    os.environ[ENV_VAL_1] = value

    retrieved = vault.get(ENV_VAL_1, cast_to=json.loads)
    assert retrieved == {'hello': 'world'}
Example #5
0
def test_base64_preprocessor():
    import json
    import base64
    from top_secret import base64preprocessor

    vault.add_preprocessor(base64preprocessor)

    secret = base64.b64encode(b'{"hello": "world"}').decode()
    os.environ[ENV_VAL_1] = secret

    assert vault.get(ENV_VAL_1, cast_to=json.loads) == {'hello': 'world'}
Example #6
0
def test_ad_hoc_preprocessor():
    import json
    import base64
    from top_secret import base64preprocessor

    secret = base64.b64encode(b'{"hello": "world"}').decode()
    os.environ[ENV_VAL_1] = secret

    value = vault.get(ENV_VAL_1,
                      cast_to=json.loads,
                      preprocessors=[base64preprocessor])
    assert value == {"hello": "world"}
Example #7
0
def test_retrieve_with_cast_to_bool():
    for value, expected in (
        ("false", False),
        ("fAlSE", False),
        ("0", False),
        ("no", False),
        ("True", True),
        ("true", True),
        ("TRUE", True),
        ("YES", True),
        ("1", True),
    ):
        key = f"{ENV_VAL_TEST_PREFIX}_{value}"
        os.environ[key] = value

        # Just to be sure
        vault.clear_cache()

        retrieved = vault.get(key, cast_to=bool)
        assert retrieved == expected
Example #8
0
def test_retrieve_with_cast_to_bool():
    for value, expected in (
            ('false', False),
            ('fAlSE', False),
            ('0', False),
            ('no', False),
            ('True', True),
            ('true', True),
            ('TRUE', True),
            ('YES', True),
            ('1', True),
    ):
        key = f'{ENV_VAL_TEST_PREFIX}_{value}'
        os.environ[key] = value

        # Just to be sure
        vault.clear_cache()

        retrieved = vault.get(key, cast_to=bool)
        assert retrieved == expected
Example #9
0
def test_adding_secret_source(mocker):
    ss_mock = mocker.Mock()
    vault.add_secret_source(ss_mock)
    vault.get(ENV_VAL_1, None)
    ss_mock.get.assert_called_once()
Example #10
0
def test_retrieve_with_cast_to_float():
    value = '10.101'
    os.environ[ENV_VAL_1] = value
    retrieved = vault.get(ENV_VAL_1, cast_to=float)
    assert retrieved == 10.101
Example #11
0
def test_get_default_if_secret_is_missing():
    result = vault.get('missing', 'missing')
    assert result == 'missing'
Example #12
0
def test_retrieve_with_cast_to_int():
    value = '10'
    os.environ[ENV_VAL_1] = value
    retrieved = vault.get(ENV_VAL_1, cast_to=int)
    assert retrieved == 10
Example #13
0
def test_exception_raised_if_no_environment_variable_is_set():
    with pytest.raises(SecretMissingError):
        vault.get(ENV_VAL_1)
Example #14
0
def test_retrieve_secret_from_environment_variable():
    value = 'Hello World'
    os.environ[ENV_VAL_1] = value

    assert vault.get(ENV_VAL_1) == value
Example #15
0
def test_get_default_if_secret_is_missing():
    result = vault.get("missing", "missing")
    assert result == "missing"
Example #16
0
def test_raises_if_no_cast_handler_exist():
    os.environ[ENV_VAL_1] = 'secret'
    with pytest.raises(CastHandlerMissingError):
        vault.get(ENV_VAL_1, cast_to='json')
Example #17
0
def test_specify_source_in_get(mocker):
    m = mocker.Mock()
    vault.get('secret', source=m)
    m.get.asset_called_once()