Switch to side-by-side view

--- a/Allura/allura/tests/test_validators.py
+++ b/Allura/allura/tests/test_validators.py
@@ -17,6 +17,7 @@
 
 import unittest
 import formencode as fe
+from mock import Mock, patch
 
 from allura import model as M
 from allura.lib import validators as v
@@ -90,6 +91,66 @@
         with self.assertRaises(fe.Invalid) as cm:
             self.val.to_python('fakeuser')
         self.assertEqual(str(cm.exception), "Invalid username")
+
+
+class TestMountPointValidator(unittest.TestCase):
+
+    @patch('allura.lib.validators.c')
+    def test_valid(self, c):
+        App = Mock()
+        App.relaxed_mount_points = False
+        App.validate_mount_point.return_value = True
+        c.project.app_instance.return_value = None
+        val = v.MountPointValidator(App)
+        self.assertEqual('mymount', val.to_python('Mymount'))
+
+    @patch('allura.lib.validators.c')
+    def test_invalid(self, c):
+        App = Mock()
+        App.relaxed_mount_points = False
+        App.validate_mount_point.return_value = False
+        c.project.app_instance.return_value = False
+        val = v.MountPointValidator(App)
+        with self.assertRaises(fe.Invalid):
+            val.to_python('mymount')
+
+    @patch('allura.lib.validators.c')
+    def test_relaxed_mount_points(self, c):
+        App = Mock()
+        App.relaxed_mount_points = True
+        App.validate_mount_point.return_value = True
+        c.project.app_instance.return_value = None
+        val = v.MountPointValidator(App)
+        self.assertEqual('Mymount', val.to_python('Mymount'))
+
+    @patch('allura.lib.validators.c')
+    def test_in_use(self, c):
+        App = Mock()
+        App.relaxed_mount_points = False
+        App.validate_mount_point.return_value = True
+        c.project.app_instance.return_value = True
+        val = v.MountPointValidator(App)
+        with self.assertRaises(fe.Invalid):
+            val.to_python('mymount')
+
+    @patch('allura.lib.validators.c')
+    def test_reserved(self, c):
+        App = Mock()
+        App.relaxed_mount_points = False
+        App.validate_mount_point.return_value = True
+        c.project.app_instance.return_value = False
+        val = v.MountPointValidator(App)
+        with self.assertRaises(fe.Invalid):
+            val.to_python('feed')
+
+    @patch('allura.lib.validators.c')
+    def test_empty(self, c):
+        App = Mock()
+        App.default_mount_point = 'wiki'
+        c.project.app_instance.side_effect = lambda mp: None if mp != 'wiki' else True
+        val = v.MountPointValidator(App)
+        self.assertEqual('wiki-0', val.to_python(''))
+        self.assertEqual('wiki-0', val.to_python(None))
 
 
 class TestTaskValidator(unittest.TestCase):