liiight/notifiers

Boolean values taken from environment variables raise BadArguments

amitlt opened this issue · 1 comments

Describe the bug
Some providers require boolean values to be supplied, like the tls option in the email provider.
If provided through environment variables, these values raise BadArguments exception.
Neither True, TRUE, true, yes or 1 work.

relevant error:

data = self._process_data(**kwargs)
  File "/Users/amitl/ops-lambdas/venv/lib/python3.7/site-packages/notifiers/core.py", line 235, in _process_data

    self._validate_data(data)
  File "/Users/amitl/ops-lambdas/venv/lib/python3.7/site-packages/notifiers/core.py", line 208, in _validate_data

    raise BadArguments(validation_error=msg, provider=self.name, data=data)
notifiers.exceptions.BadArguments: Error with sent data: 'true' is not of type 'boolean'

To Reproduce
Provide a boolean value through environment variables

NOTIFIERS_EMAIL_FROM="some@email.com"
NOTIFIERS_EMAIL_HOST="email-smtp.us-east-1.amazonaws.com"
NOTIFIERS_EMAIL_TLS=true
NOTIFIERS_EMAIL_USERNAME="USERNAME"
NOTIFIERS_EMAIL_PASSWORD="PASSWORD"

Expected behavior
For boolean values to be converted to booleans so they can pass schema check.

Additional context
Python version: 3.8
OS: macos

Nice catch. I'm working on completely rewriting the schema validation logic in #359 , I"ll make sure to add this to that.
Thanks!