aboutsummaryrefslogtreecommitdiffstats
path: root/tools/tests/utests/ut_util/ut_fileuri.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/tests/utests/ut_util/ut_fileuri.py')
-rw-r--r--tools/tests/utests/ut_util/ut_fileuri.py209
1 files changed, 209 insertions, 0 deletions
diff --git a/tools/tests/utests/ut_util/ut_fileuri.py b/tools/tests/utests/ut_util/ut_fileuri.py
new file mode 100644
index 0000000000..cd64e7d05e
--- /dev/null
+++ b/tools/tests/utests/ut_util/ut_fileuri.py
@@ -0,0 +1,209 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#============================================================================
+# Copyright (C) 2009 flonatel GmbH & Co. KG
+#============================================================================
+
+import os
+import unittest
+
+from xen.util.fileuri import scheme_error
+from xen.util.fileuri import scheme_data
+from xen.util.fileuri import scheme_file
+from xen.util.fileuri import schemes
+
+class scheme_data_unit_tests(unittest.TestCase):
+
+ def check_basic_encoding(self):
+ "util.fileuri.scheme_data - basic encoding"
+ sd = scheme_data.encode('Hello!')
+ self.assertEqual(sd, 'data:application/octet-stream;base64,SGVsbG8h')
+
+ def check_encoding_with_given_mediatype(self):
+ "util.fileuri.scheme_data - encoding with given media name"
+ sd = scheme_data.encode('Hello!', 'application/x-my-linux-kernel')
+ self.assertEqual(sd,
+ 'data:application/x-my-linux-kernel;base64,SGVsbG8h')
+
+ def check_parse_01(self):
+ "util.fileuri.scheme_data - parsing of None"
+ self.assertRaises(scheme_error, scheme_data.parse, None)
+
+ def check_parse_02(self):
+ "util.fileuri.scheme_data - parsing of empty string"
+ self.assertRaises(scheme_error, scheme_data.parse, "")
+
+ def check_parse_03(self):
+ "util.fileuri.scheme_data - parsing of unstructured data"
+ self.assertRaises(scheme_error, scheme_data.parse, "akskdjdfhezezu")
+
+ def check_parse_04(self):
+ "util.fileuri.scheme_data - data: is not at the first place"
+ self.assertRaises(scheme_error, scheme_data.parse, 'ggdata:sossm')
+
+ def check_parse_05(self):
+ "util.fileuri.scheme_data - no comma in data"
+ self.assertRaises(scheme_error, scheme_data.parse, 'data:sossm')
+
+ def check_parse_06(self):
+ "util.fileuri.scheme_data - encoding is empty"
+ self.assertRaises(scheme_error, scheme_data.parse, 'data:,')
+
+ def check_parse_07(self):
+ "util.fileuri.scheme_data - unknown encoding"
+ self.assertRaises(scheme_error, scheme_data.parse,
+ 'data:somemediatype;unknown,')
+
+ def check_parse_08(self):
+ "util.fileuri.scheme_data - parse ok - empty data"
+ mediatype, encoding, data_start = scheme_data.parse(
+ 'data:somemedia;base64,')
+ self.assertEqual(mediatype, 'somemedia')
+ self.assertEqual(encoding, 'base64')
+ self.assertEqual(data_start, 22)
+
+ def check_parse_09(self):
+ "util.fileuri.scheme_data - parse ok - some data"
+ mediatype, encoding, data_start = scheme_data.parse(
+ 'data:somemedia;base64,HereComesTheSun')
+ self.assertEqual(mediatype, 'somemedia')
+ self.assertEqual(encoding, 'base64')
+ self.assertEqual(data_start, 22)
+
+ def check_parse_10(self):
+ "util.fileuri.scheme_data - header ok - data error"
+ self.assertRaises(scheme_error, scheme_data.decode,
+ 'data:application/octet-stream;base64,H!$ere"Co<mesT>heS_.un')
+
+ def check_cff_file_does_not_exist(self):
+ "util.fileuri.scheme_data - create from file - non existent file"
+ self.assertRaises(scheme_error, scheme_data.create_from_file,
+ "/there/is/hopefully/no/file/like/this")
+
+ def check_cff_ok(self):
+ "util.fileuri.scheme_data - create from file - ok"
+ tmppath = "/tmp/scheme_data_check_cff_ok"
+ f = open(tmppath, "w")
+ f.write("huhuhu")
+ f.close()
+ d = scheme_data.create_from_file(tmppath)
+ os.unlink(tmppath)
+ self.assertEqual(d, "data:application/octet-stream;base64,aHVodWh1")
+
+
+class scheme_file_unit_tests(unittest.TestCase):
+
+ def check_encode_empty_filename(self):
+ "util.fileuri.scheme_file - encode empty filename"
+ self.assertRaises(scheme_error, scheme_file.encode, "")
+
+ def check_encode_relative_filename(self):
+ "util.fileuri.scheme_file - encode relative filename"
+ self.assertRaises(scheme_error, scheme_file.encode, "../there")
+
+ def check_encode_absolut_filename(self):
+ "util.fileuri.scheme_file - encode absolut filename"
+ self.assertEqual(
+ scheme_file.encode("/here/and/there/again"),
+ 'file:///here/and/there/again')
+
+ def check_decode_01(self):
+ "util.fileuri.scheme_file - decode empty data"
+ self.assertRaises(scheme_error, scheme_file.decode, "")
+
+ def check_decode_02(self):
+ "util.fileuri.scheme_file - decode data with no file:// at the beginning (1)"
+ self.assertRaises(scheme_error, scheme_file.decode,
+ "phonehome://bbbb")
+
+ def check_decode_03(self):
+ "util.fileuri.scheme_file - decode data with no file:// at the beginning (2)"
+ self.assertRaises(scheme_error, scheme_file.decode,
+ "file:/bbbb")
+
+ def check_decode_04(self):
+ "util.fileuri.scheme_file - decode empty path"
+ self.assertRaises(scheme_error, scheme_file.decode,
+ "file://")
+
+ def check_decode_05(self):
+ "util.fileuri.scheme_file - decode empty relative path"
+ self.assertRaises(scheme_error, scheme_file.decode,
+ "file://somewhere")
+
+ def check_decode_06(self):
+ "util.fileuri.scheme_file - decode ok"
+ path, tmp_file = scheme_file.decode("file:///boot/vmlinuz")
+ self.assertEqual(path, "/boot/vmlinuz")
+ self.assertEqual(tmp_file, False)
+
+class scheme_set_unit_tests(unittest.TestCase):
+
+ def check_data_01(self):
+ "util.fileuri.scheme_set - data with error in media type"
+
+ u = "data:something_wrong,base64:swer"
+ uri, tmp_file = schemes.decode(u)
+ self.assertEqual(uri, u)
+ self.assertEqual(tmp_file, False)
+
+ def check_data_02(self):
+ "util.fileuri.scheme_set - data with error in base64 data"
+
+ u = "data:application/octet-stream;base64,S!VsbG8h"
+ uri, tmp_file = schemes.decode(u)
+ self.assertEqual(uri, u)
+ self.assertEqual(tmp_file, False)
+
+ def check_data_03(self):
+ "util.fileuri.scheme_set - data ok"
+
+ u = "data:application/octet-stream;base64,SGVsbG8h"
+ uri, tmp_file = schemes.decode(u)
+
+ # Read file contents
+ f = open(uri, "r")
+ d = f.read()
+ f.close()
+ os.unlink(uri)
+
+ self.assertEqual(d, "Hello!")
+ self.assertEqual(tmp_file, True)
+
+ def check_file_01(self):
+ "util.fileuri.scheme_set - file ok"
+
+ f = "/The/Path/To/The/File.txt"
+ uri, tmp_file = schemes.decode("file://" + f)
+ self.assertEqual(uri, f)
+ self.assertEqual(tmp_file, False)
+
+ def check_without_scheme_01(self):
+ "util.fileuri.scheme_set - without scheme"
+
+ f = "/The/Path/To/The/File.txt"
+ uri, tmp_file = schemes.decode(f)
+ self.assertEqual(uri, f)
+ self.assertEqual(tmp_file, False)
+
+
+def suite():
+ return unittest.TestSuite(
+ [unittest.makeSuite(scheme_data_unit_tests, 'check_'),
+ unittest.makeSuite(scheme_file_unit_tests, 'check_'),
+ unittest.makeSuite(scheme_set_unit_tests, 'check_'),])
+
+if __name__ == "__main__":
+ testresult = unittest.TextTestRunner(verbosity=3).run(suite())
+