# -*- 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