def test_two_parameters(self) -> None: @validate(EnvironmentVariableParameter(name='a'), strict=False) def foo(a: float, b: int): print(f'{a} and {b}') os.environ['a'] = '42' foo(b=42)
def test_external_parameter_accepts_value_when_given(self) -> None: @validate(EnvironmentVariableParameter(name='foo')) def bar(foo): return foo self.assertEqual('42', bar('42')) self.assertEqual('42', bar(foo='42'))
def test_invalid_value_type(self) -> None: with self.assertRaises(expected_exception=AssertionError): @validate(EnvironmentVariableParameter(name='foo', value_type=dict)) def bar(foo): return foo
def test_parameter_environment_variable_not_set(self) -> None: @validate(EnvironmentVariableParameter(name='foo')) def bar(foo): return foo with self.assertRaises(expected_exception=ParameterException): bar()
def test_parameter_environment_variable_float(self) -> None: @validate(EnvironmentVariableParameter(name='foo', value_type=float)) def bar(foo): return foo os.environ['foo'] = '42.7' self.assertEqual(42.7, bar())
def test_external_parameter_ignores_value_when_given(self) -> None: @validate(EnvironmentVariableParameter(name='foo'), ignore_input=True) def bar(foo): return foo os.environ['foo'] = '1' self.assertEqual('1', bar('42')) self.assertEqual('1', bar(foo='42'))
def test_unexpected_parameter_not_strict_external(self) -> None: @validate(EnvironmentVariableParameter(name='foo')) def bar(x): return x with self.assertRaises(expected_exception=ValidateException): self.assertEqual(42, bar(42)) with self.assertRaises(expected_exception=ValidateException): self.assertEqual(42, bar(x=42))
def test_parameter_environment_variable_different_name(self) -> None: @validate( EnvironmentVariableParameter(name='foo', env_var_name='fuu', value_type=str)) def bar(foo): return foo os.environ['fuu'] = '42' self.assertEqual('42', bar())
def test_default_value_is_not_validated_external_parameter(self) -> None: t = datetime(year=2021, month=11, day=24) if 'a' in os.environ: del os.environ['a'] @validate(EnvironmentVariableParameter(name='a', default=t, validators=[DateTimeUnixTimestamp()], required=False)) def bar(a: datetime) -> datetime: return a self.assertEqual(t, bar())
def test_external_parameter_mixed_with_normal_parameter(self) -> None: @validate( EnvironmentVariableParameter(name='foo'), Parameter(name='footer'), return_as=ReturnAs.KWARGS_WITHOUT_NONE, ) def bar(foo, footer): return foo, footer self.assertEqual(('42', 3), bar('42', 3)) os.environ['foo'] = '42' self.assertEqual(('42', 3), bar(footer=3))
def test_parameter_environment_variable_bool(self) -> None: @validate(EnvironmentVariableParameter(name='foo', value_type=bool)) def bar(foo): return foo for value in ['true', 'True', 'TRUE']: os.environ['foo'] = value self.assertTrue(bar()) for value in ['false', 'False', 'FALSE']: os.environ['foo'] = value self.assertFalse(bar()) for value in ['invalid', 'frue', 'talse']: os.environ['foo'] = value with self.assertRaises(expected_exception=ParameterException): bar()