tubearchivist/backend/task/tests/test_src/test_config_schedule.py

69 lines
1.6 KiB
Python

"""test schedule parsing"""
# flake8: noqa: E402
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
django.setup()
import pytest
from task.src.config_schedule import CrontabValidator
INCORRECT_CRONTAB = [
"0 0 * * *",
"0 0",
"0",
]
@pytest.mark.parametrize("invalid_value", INCORRECT_CRONTAB)
def test_invalid_len(invalid_value):
"""raise error on invalid crontab"""
validator = CrontabValidator()
with pytest.raises(ValueError, match="three cron schedule fields"):
validator.validate_cron(invalid_value)
NONE_INT_MINUTE = [
"* * *",
"0,30 * *",
"0,1,2 * *",
"-1 * *",
]
@pytest.mark.parametrize("invalid_value", NONE_INT_MINUTE)
def test_none_int_crontabs(invalid_value):
"""raise error on invalid crontab"""
validator = CrontabValidator()
with pytest.raises(ValueError, match="Must be an integer."):
validator.validate_cron(invalid_value)
INVALID_MINUTE = ["60 * *", "61 * *"]
@pytest.mark.parametrize("invalid_value", INVALID_MINUTE)
def test_invalid_minute(invalid_value):
"""raise error on invalid crontab"""
validator = CrontabValidator()
with pytest.raises(ValueError, match="Must be between 0 and 59."):
validator.validate_cron(invalid_value)
INVALID_CRONTAB = [
"0 /1 *",
"0 0/1 *",
]
@pytest.mark.parametrize("invalid_value", INVALID_CRONTAB)
def test_invalid_crontab(invalid_value):
"""raise error on invalid crontab"""
validator = CrontabValidator()
with pytest.raises(ValueError, match="invalid crontab"):
validator.validate_cron(invalid_value)