test_linode.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # -*- coding: utf-8 -*-
  2. '''
  3. :codeauthor: Nicole Thomas <nicole@saltstack.com>
  4. '''
  5. # Import Salt Libs
  6. from __future__ import absolute_import, print_function, unicode_literals
  7. # Import Salt Testing Libs
  8. from tests.support.mixins import LoaderModuleMockMixin
  9. from tests.support.unit import TestCase
  10. # Import Salt Libs
  11. from salt.cloud.clouds import linode
  12. class LinodeTestCase(TestCase, LoaderModuleMockMixin):
  13. '''
  14. Unit TestCase for the salt.cloud.clouds.linode module.
  15. '''
  16. def setup_loader_modules(self):
  17. return {linode: {}}
  18. # _validate_name tests
  19. def test_validate_name_first_character_invalid(self):
  20. '''
  21. Tests when name starts with an invalid character.
  22. '''
  23. # Test when name begins with a hyphen
  24. self.assertFalse(linode._validate_name('-foo'))
  25. # Test when name begins with an underscore
  26. self.assertFalse(linode._validate_name('_foo'))
  27. def test_validate_name_last_character_invalid(self):
  28. '''
  29. Tests when name ends with an invalid character.
  30. '''
  31. # Test when name ends with a hyphen
  32. self.assertFalse(linode._validate_name('foo-'))
  33. # Test when name ends with an underscore
  34. self.assertFalse(linode._validate_name('foo_'))
  35. def test_validate_name_too_short(self):
  36. '''
  37. Tests when name has less than three letters.
  38. '''
  39. # Test when name is an empty string
  40. self.assertFalse(linode._validate_name(''))
  41. # Test when name is two letters long
  42. self.assertFalse(linode._validate_name('ab'))
  43. # Test when name is three letters long (valid)
  44. self.assertTrue(linode._validate_name('abc'))
  45. def test_validate_name_too_long(self):
  46. '''
  47. Tests when name has more than 48 letters.
  48. '''
  49. long_name = '1111-2222-3333-4444-5555-6666-7777-8888-9999-111'
  50. # Test when name is 48 letters long (valid)
  51. self.assertEqual(len(long_name), 48)
  52. self.assertTrue(linode._validate_name(long_name))
  53. # Test when name is more than 48 letters long
  54. long_name += '1'
  55. self.assertEqual(len(long_name), 49)
  56. self.assertFalse(linode._validate_name(long_name))
  57. def test_validate_name_invalid_characters(self):
  58. '''
  59. Tests when name contains invalid characters.
  60. '''
  61. # Test when name contains an invalid character
  62. self.assertFalse(linode._validate_name('foo;bar'))
  63. # Test when name contains non-ascii letters
  64. self.assertFalse(linode._validate_name('fooàààààbar'))
  65. # Test when name contains spaces
  66. self.assertFalse(linode._validate_name('foo bar'))
  67. def test_validate_name_valid_characters(self):
  68. '''
  69. Tests when name contains valid characters.
  70. '''
  71. # Test when name contains letters and numbers
  72. self.assertTrue(linode._validate_name('foo123bar'))
  73. # Test when name contains hyphens
  74. self.assertTrue(linode._validate_name('foo-bar'))
  75. # Test when name contains underscores
  76. self.assertTrue(linode._validate_name('foo_bar'))
  77. # Test when name start and end with numbers
  78. self.assertTrue(linode._validate_name('1foo'))
  79. self.assertTrue(linode._validate_name('foo0'))