check_test.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # Copyright (C) 2010 CZ NIC
  2. #
  3. # Permission to use, copy, modify, and distribute this software for any
  4. # purpose with or without fee is hereby granted, provided that the above
  5. # copyright notice and this permission notice appear in all copies.
  6. #
  7. # THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
  8. # DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
  9. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
  10. # INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
  11. # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
  12. # FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  13. # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
  14. # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. """Tests for isc.net.check."""
  16. import unittest
  17. from isc.net.check import port_check, addr_check
  18. class TestCheckPort(unittest.TestCase):
  19. """
  20. Testcases for the isc.net.port_check function
  21. """
  22. def test_fail(self):
  23. """
  24. Test if it fails on invalid input in the correct way.
  25. """
  26. self.assertRaises(ValueError, port_check, "not a number")
  27. self.assertRaises(ValueError, port_check, -1)
  28. self.assertRaises(ValueError, port_check, 65536)
  29. def test_success(self):
  30. """
  31. Test if it succeeds on valid inputs and returns the correct output
  32. """
  33. self.assertEqual(port_check(0), 0)
  34. self.assertEqual(port_check("65535"), 65535)
  35. self.assertEqual(port_check(1234), 1234)
  36. class TestCheckIP(unittest.TestCase):
  37. """
  38. Testcases for the isc.net.ip_check function
  39. """
  40. def test_fail(self):
  41. """
  42. Test if it fails on invalid input the correct way.
  43. """
  44. self.assertRaises(ValueError, addr_check, "not an address")
  45. self.assertRaises(ValueError, addr_check, "123.456.789.012")
  46. self.assertRaises(ValueError, addr_check, "123.0.0.")
  47. # Address range not allowed
  48. self.assertRaises(ValueError, addr_check, "192.0.2.0/24")
  49. self.assertRaises(ValueError, addr_check, "0000.0.0.0")
  50. self.assertRaises(ValueError, addr_check, "bada:ddr0::")
  51. self.assertRaises(ValueError, addr_check, "2001:db8::/32")
  52. # This should be one part too long (eg. 9 segments)
  53. self.assertRaises(ValueError, addr_check, "2001:db8:0:0:0:0:0:0:0")
  54. # Only one :: allowed
  55. self.assertRaises(ValueError, addr_check, "2001::db8::c")
  56. def test_success(self):
  57. """
  58. Test if it succeeds on valid inputs and returns addresses that look
  59. the same.
  60. """
  61. self.assertEqual("192.0.2.0", str(addr_check("192.0.2.0")))
  62. self.assertEqual("2001:bd8::", str(addr_check("2001:bd8::")))
  63. # It should strip the unnecesarry parts
  64. self.assertEqual("2001:bd8::", str(addr_check("2001:bd8:0:0:0:0:0:0")))
  65. self.assertEqual("::", str(addr_check("::")))
  66. if __name__ == "__main__":
  67. unittest.main()