import pytest

from util.config.validator import is_valid_config_upload_filename
from util.config.validator import CONFIG_FILENAMES, CONFIG_FILE_SUFFIXES

def test_valid_config_upload_filenames():
  for filename in CONFIG_FILENAMES:
    assert is_valid_config_upload_filename(filename)

  for suffix in CONFIG_FILE_SUFFIXES:
    assert is_valid_config_upload_filename('foo' + suffix)
    assert not is_valid_config_upload_filename(suffix + 'foo')


@pytest.mark.parametrize('filename, expect_valid', [
  ('', False),
  ('foo', False),
  ('config.yaml', False),

  ('ssl.cert', True),
  ('ssl.key', True),

  ('ssl.crt', False),

  ('foobar-cloudfront-signing-key.pem', True),
  ('foobaz-cloudfront-signing-key.pem', True),
  ('barbaz-cloudfront-signing-key.pem', True),

  ('barbaz-cloudfront-signing-key.pem.bak', False),
])
def test_is_valid_config_upload_filename(filename, expect_valid):
  assert is_valid_config_upload_filename(filename) == expect_valid