101 lines
2.2 KiB
Python
101 lines
2.2 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# type: ignore
|
||
|
from __future__ import annotations
|
||
|
|
||
|
import pytest
|
||
|
from pytest_mock import MockerFixture
|
||
|
|
||
|
from keep_it_secret import fields
|
||
|
from keep_it_secret.secrets import Secrets
|
||
|
|
||
|
|
||
|
def test_init():
|
||
|
# When
|
||
|
result = fields.EnvField('KEEP_IT_SECRET_TESTS_SPAM')
|
||
|
|
||
|
# Then
|
||
|
assert result.key == 'KEEP_IT_SECRET_TESTS_SPAM'
|
||
|
assert result.default is None
|
||
|
|
||
|
|
||
|
def test_init_with_default():
|
||
|
# When
|
||
|
result = fields.EnvField('KEEP_IT_SECRET_TESTS_SPAM', default='eggs')
|
||
|
|
||
|
# Then
|
||
|
assert result.default == 'eggs'
|
||
|
|
||
|
|
||
|
def test_init_with_field_options():
|
||
|
# When
|
||
|
result = fields.EnvField(
|
||
|
'KEEP_IT_SECRET_TESTS_SPAM',
|
||
|
as_type=int,
|
||
|
required=False,
|
||
|
description='spameggs',
|
||
|
)
|
||
|
|
||
|
# Then
|
||
|
assert result.as_type == int
|
||
|
assert result.required is False
|
||
|
assert result.description == 'spameggs'
|
||
|
|
||
|
|
||
|
def test_new(mocker: MockerFixture):
|
||
|
# Given
|
||
|
mock_init = mocker.patch.object(
|
||
|
fields.EnvField, '__init__', return_value=None,
|
||
|
)
|
||
|
|
||
|
# When
|
||
|
_ = fields.EnvField.new(
|
||
|
'KEEP_IT_SECRET_TESTS_SPAM',
|
||
|
default='eggs',
|
||
|
as_type=int,
|
||
|
required=False,
|
||
|
description='spameggs',
|
||
|
)
|
||
|
|
||
|
# Then
|
||
|
mock_init.assert_called_once_with(
|
||
|
'KEEP_IT_SECRET_TESTS_SPAM',
|
||
|
default='eggs',
|
||
|
as_type=int,
|
||
|
required=False,
|
||
|
description='spameggs',
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_get_value(testing_secrets: Secrets):
|
||
|
# Given
|
||
|
field = fields.EnvField('KEEP_IT_SECRET_TESTS_SPAM')
|
||
|
|
||
|
# When
|
||
|
result = field.get_value(testing_secrets)
|
||
|
|
||
|
# Then
|
||
|
assert result == 'spam'
|
||
|
|
||
|
|
||
|
def test_get_value_required_value_missing(testing_secrets: Secrets):
|
||
|
# Given
|
||
|
field = fields.EnvField('KEEP_IT_SECRET_TESTS_IDONTEXIST', default=None)
|
||
|
|
||
|
with pytest.raises(field.RequiredValueMissing) as exception_info:
|
||
|
# When
|
||
|
_ = field.get_value(testing_secrets)
|
||
|
|
||
|
# Then
|
||
|
assert exception_info.value.args[0] == 'KEEP_IT_SECRET_TESTS_IDONTEXIST'
|
||
|
|
||
|
|
||
|
def test_get_value_missing_not_required(testing_secrets: Secrets):
|
||
|
# Given
|
||
|
field = fields.EnvField('KEEP_IT_SECRET_TESTS_IDONTEXIST', required=False)
|
||
|
|
||
|
# When
|
||
|
result = field.get_value(testing_secrets)
|
||
|
|
||
|
# Then
|
||
|
assert result == field.default
|