initial code repo
[stor4nfv.git] / src / ceph / src / ceph-volume / ceph_volume / tests / util / test_arg_validators.py
diff --git a/src/ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py b/src/ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
new file mode 100644 (file)
index 0000000..22b962b
--- /dev/null
@@ -0,0 +1,53 @@
+import pytest
+import argparse
+from ceph_volume import exceptions
+from ceph_volume.util import arg_validators
+
+
+invalid_lv_paths = [
+    '', 'lv_name', '/lv_name', 'lv_name/',
+    '/dev/lv_group/lv_name'
+]
+
+
+class TestLVPath(object):
+
+    def setup(self):
+        self.validator = arg_validators.LVPath()
+
+    @pytest.mark.parametrize('path', invalid_lv_paths)
+    def test_no_slash_is_an_error(self, path):
+        with pytest.raises(argparse.ArgumentError):
+            self.validator(path)
+
+    def test_is_valid(self):
+        path = 'vg/lv'
+        assert self.validator(path) == path
+
+    def test_abspath_is_valid(self):
+        path = '/'
+        assert self.validator(path) == path
+
+
+class TestOSDPath(object):
+
+    def setup(self):
+        self.validator = arg_validators.OSDPath()
+
+    def test_is_not_root(self):
+        with pytest.raises(exceptions.SuperUserError):
+            self.validator('')
+
+    def test_path_is_not_a_directory(self, is_root, tmpfile, monkeypatch):
+        monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
+        validator = arg_validators.OSDPath()
+        with pytest.raises(argparse.ArgumentError):
+            validator(tmpfile())
+
+    def test_files_are_missing(self, is_root, tmpdir, monkeypatch):
+        tmppath = str(tmpdir)
+        monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
+        validator = arg_validators.OSDPath()
+        with pytest.raises(argparse.ArgumentError) as error:
+            validator(tmppath)
+        assert 'Required file (ceph_fsid) was not found in OSD' in str(error)