# coding=utf-8 import unittest from unittest import TestCase from lxml.etree import ElementTree, Element from webdav3.client import WebDavXmlUtils as utils, listdir class ClientTestCase(TestCase): def test_parse_get_list_response(self): content = '/test_dir/' \ 'HTTP/1.1 200 OK' \ 'Mon, 16 Oct 2017 04:18:00 GMT' \ 'test_dir2017-10-16T04:18:00Z' \ '/test_dir/test.txt/' \ 'HTTP/1.1 200 OK' \ 'Mon, 16 Oct 2017 04:18:18 GMTtest.txt' \ '2017-10-16T04:18:18Z' \ '' result = utils.parse_get_list_response(content.encode('utf-8')) self.assertEqual(result.__len__(), 2) def test_create_free_space_request_content(self): result = utils.create_free_space_request_content() self.assertEqual(result, b'\n' b'') def test_parse_free_space_response(self): content = '/' \ 'HTTP/1.1 200 OK697' \ '10737417543' \ '' result = utils.parse_free_space_response(content.encode('utf-8'), 'localhost') self.assertEqual(result, 10737417543) def test_parse_info_response(self): content = '' \ '/test_dir/test.txtHTTP/1.1 200 OK' \ 'Wed, 18 Oct 2017 15:16:04 GMT' \ 'ab0b4b7973803c03639b848682b5f38ctext/plain' \ '41test.txt' \ '2017-10-18T15:16:04Z' \ '' result = utils.parse_info_response(content.encode('utf-8'), '/test_dir/test.txt', 'localhost') self.assertEqual(result['created'], '2017-10-18T15:16:04Z') self.assertEqual(result['name'], 'test.txt') self.assertEqual(result['modified'], 'Wed, 18 Oct 2017 15:16:04 GMT') self.assertEqual(result['size'], '41') def test_create_get_property_request_content(self): option = { 'namespace': 'test', 'name': 'aProperty' } result = utils.create_get_property_request_content(option=option, ) self.assertEqual(result, b'\n' b'') def test_create_get_property_request_content_name_only(self): option = { 'name': 'aProperty' } result = utils.create_get_property_request_content(option=option) self.assertEqual(result, b'\n' b'') def test_parse_get_property_response(self): content = '' \ '/test_dir/test.txtHTTP/1.1 200 OK' \ 'aValue' result = utils.parse_get_property_response(content=content.encode('utf-8'), name='aProperty') self.assertEqual(result, 'aValue') def test_create_set_one_property_request_content(self): option = { 'namespace': 'test', 'name': 'aProperty', 'value': 'aValue' } result = utils.create_set_property_batch_request_content(options=[option]) self.assertEqual(result, b'\n' b'aValue') def test_create_set_one_property_request_content_name_only(self): option = { 'name': 'aProperty' } result = utils.create_set_property_batch_request_content(options=[option]) self.assertEqual(result, b'\n' b'') def test_create_set_property_batch_request_content(self): options = [ { 'namespace': 'test', 'name': 'aProperty', 'value': 'aValue' }, { 'namespace': 'test2', 'name': 'aProperty2', 'value': 'aValue2' } ] result = utils.create_set_property_batch_request_content(options=options) self.assertEqual(result, b'\n' b'aValueaValue2' b'') def test_create_set_property_batch_request_content_name_only(self): options = [ { 'name': 'aProperty' }, { 'name': 'aProperty2' } ] result = utils.create_set_property_batch_request_content(options=options) self.assertEqual(result, b'\n' b'' b'') def test_etree_to_string(self): tree = ElementTree(Element('test')) result = utils.etree_to_string(tree) self.assertEqual(result, b'\n') def test_parse_is_dir_response_directory(self): try: f = open('./tests/response_dir.xml', encoding='utf-8') content = f.read().encode('utf-8') except: f = open('./tests/response_dir.xml') content = f.read().decode('utf-8').encode('utf-8') f.close() path = '/test_dir' hostname = 'https://webdav.yandex.ru' result = utils.parse_is_dir_response(content, path, hostname) self.assertTrue(result, 'It should be directory') def test_parse_is_dir_response_file(self): content = '/test_' \ 'dir/HTTP/1.1 200 OK2018-05-10T07' \ ':40:11Ztest_dirThu, 10 May 2018' \ ' 07:40:11 GMT<' \ 'd:href>/test_dir/test.txtHTTP/1.1 200 OKab0b4b7973803c03639b848682b5f38c2018-05-10T07:40:12Ztest.txtThu, 10 May 2018 07:40:12 GMTtext/plain41' path = '/test_dir/test.txt' hostname = 'https://webdav.yandex.ru' result = utils.parse_is_dir_response(content.encode('utf-8'), path, hostname) self.assertFalse(result, 'It should be file') def test_listdir_inner_dir(self): file_names = listdir('.') self.assertGreater(len(file_names), 0) self.assertTrue('webdav3/' in file_names) if __name__ == '__main__': unittest.main()