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)
예제 #2
0
    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())
예제 #6
0
    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'))
예제 #7
0
    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())
예제 #9
0
    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())
예제 #10
0
    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()