import unittest
from util.validation import validate_label_key

class TestLabelKeyValidation(unittest.TestCase):
  def assertValidKey(self, key):
    self.assertTrue(validate_label_key(key))

  def assertInvalidKey(self, key):
    self.assertFalse(validate_label_key(key))

  def test_basic_keys(self):
    self.assertValidKey('foo')
    self.assertValidKey('bar')

    self.assertValidKey('foo1')
    self.assertValidKey('bar2')

    self.assertValidKey('1')
    self.assertValidKey('12')
    self.assertValidKey('123')
    self.assertValidKey('1234')

    self.assertValidKey('git-sha')

    self.assertValidKey('com.coreos.something')
    self.assertValidKey('io.quay.git-sha')

  def test_invalid_keys(self):
    self.assertInvalidKey('')
    self.assertInvalidKey('git_sha')

  def test_must_start_with_alphanumeric(self):
    self.assertInvalidKey('-125')
    self.assertInvalidKey('-foo')
    self.assertInvalidKey('foo-')
    self.assertInvalidKey('123-')

  def test_no_double_dashesdots(self):
    self.assertInvalidKey('foo--bar')
    self.assertInvalidKey('foo..bar')


if __name__ == '__main__':
  unittest.main()