introduce chinese utf8 charset back into ecs driver. add tests to file fixtures to make sure things dont get mangled
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/18bc55de Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/18bc55de Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/18bc55de Branch: refs/heads/trunk Commit: 18bc55de9b667ed6b5f2bdedd3daa27e66c9560b Parents: f533aa6 Author: Anthony Shaw <anthonys...@apache.org> Authored: Thu Apr 13 14:07:21 2017 +1000 Committer: Anthony Shaw <anthonys...@apache.org> Committed: Thu Apr 13 14:07:21 2017 +1000 ---------------------------------------------------------------------- .../compute/fixtures/ecs/describe_images.xml | 2 +- .../compute/fixtures/ecs/describe_regions.xml | 20 ++++---- .../compute/fixtures/ecs/describe_zones.xml | 4 +- .../fixtures/ecs/pages_describe_images.xml | 4 +- .../ecs/pages_describe_images_page2.xml | 2 +- .../test/compute/fixtures/meta/unicode.json | 1 + libcloud/test/compute/fixtures/meta/unicode.xml | 2 + libcloud/test/compute/test_ecs.py | 3 +- libcloud/test/test_file_fixtures.py | 48 +++++++++++++++++++- 9 files changed, 68 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/ecs/describe_images.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/ecs/describe_images.xml b/libcloud/test/compute/fixtures/ecs/describe_images.xml index afc3836..80b1a31 100644 --- a/libcloud/test/compute/fixtures/ecs/describe_images.xml +++ b/libcloud/test/compute/fixtures/ecs/describe_images.xml @@ -12,7 +12,7 @@ <ProductCode></ProductCode> <OSType>linux</OSType> <Architecture>x86_64</Architecture> - <OSName>FreeBSD 10.1 64</OSName> + <OSName>FreeBSD 10.1 64ä½</OSName> <DiskDeviceMappings> <DiskDeviceMapping> <ImportOSSObject></ImportOSSObject> http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/ecs/describe_regions.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/ecs/describe_regions.xml b/libcloud/test/compute/fixtures/ecs/describe_regions.xml index 7b0fbd5..d77729d 100644 --- a/libcloud/test/compute/fixtures/ecs/describe_regions.xml +++ b/libcloud/test/compute/fixtures/ecs/describe_regions.xml @@ -4,39 +4,39 @@ <Regions> <Region> <RegionId>ap-southeast-1</RegionId> - <LocalName></LocalName> + <LocalName>äºå¤ªï¼æ°å å¡ï¼</LocalName> </Region> <Region> <RegionId>cn-shenzhen</RegionId> - <LocalName></LocalName> + <LocalName>æ·±å³</LocalName> </Region> <Region> <RegionId>cn-qingdao</RegionId> - <LocalName></LocalName> + <LocalName>éå²</LocalName> </Region> <Region> <RegionId>cn-beijing</RegionId> - <LocalName></LocalName> + <LocalName>å京</LocalName> </Region> <Region> <RegionId>cn-shanghai</RegionId> - <LocalName></LocalName> + <LocalName>䏿µ·</LocalName> </Region> <Region> <RegionId>us-east-1</RegionId> - <LocalName></LocalName> + <LocalName>ç¾ä¸å¼åå°¼äº</LocalName> </Region> <Region> <RegionId>cn-hongkong</RegionId> - <LocalName></LocalName> + <LocalName>馿¸¯</LocalName> </Region> <Region> <RegionId>cn-hangzhou</RegionId> - <LocalName></LocalName> + <LocalName>æå·</LocalName> </Region> <Region> <RegionId>us-west-1</RegionId> - <LocalName></LocalName> + <LocalName>ç¾å½ç¡ è°·</LocalName> </Region> </Regions> -</DescribeRegionsResponse> +</DescribeRegionsResponse> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/ecs/describe_zones.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/ecs/describe_zones.xml b/libcloud/test/compute/fixtures/ecs/describe_zones.xml index a953553..29be7f0 100644 --- a/libcloud/test/compute/fixtures/ecs/describe_zones.xml +++ b/libcloud/test/compute/fixtures/ecs/describe_zones.xml @@ -31,7 +31,7 @@ <InstanceTypes>ecs.s1.medium</InstanceTypes> </AvailableInstanceTypes> <ZoneId>cn-qingdao-b</ZoneId> - <LocalName>B</LocalName> + <LocalName>éå²å¯ç¨åºB</LocalName> <AvailableDiskCategories> <DiskCategories>cloud_ssd</DiskCategories> <DiskCategories>ephemeral</DiskCategories> @@ -39,4 +39,4 @@ </AvailableDiskCategories> </Zone> </Zones> -</DescribeZonesResponse> +</DescribeZonesResponse> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/ecs/pages_describe_images.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/ecs/pages_describe_images.xml b/libcloud/test/compute/fixtures/ecs/pages_describe_images.xml index 25f9cc3..0190f87 100644 --- a/libcloud/test/compute/fixtures/ecs/pages_describe_images.xml +++ b/libcloud/test/compute/fixtures/ecs/pages_describe_images.xml @@ -12,7 +12,7 @@ <ProductCode></ProductCode> <OSType>linux</OSType> <Architecture>x86_64</Architecture> - <OSName>FreeBSD 10.1 64</OSName> + <OSName>FreeBSD 10.1 64ä½</OSName> <DiskDeviceMappings> <DiskDeviceMapping> <ImportOSSObject></ImportOSSObject> @@ -38,4 +38,4 @@ <Size>20</Size> </Image> </Images> -</DescribeImagesResponse> +</DescribeImagesResponse> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/ecs/pages_describe_images_page2.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/ecs/pages_describe_images_page2.xml b/libcloud/test/compute/fixtures/ecs/pages_describe_images_page2.xml index 0208118..615e152 100644 --- a/libcloud/test/compute/fixtures/ecs/pages_describe_images_page2.xml +++ b/libcloud/test/compute/fixtures/ecs/pages_describe_images_page2.xml @@ -12,7 +12,7 @@ <ProductCode></ProductCode> <OSType>linux</OSType> <Architecture>x86_64</Architecture> - <OSName>FreeBSD 10.1 64</OSName> + <OSName>FreeBSD 10.1 64ä½</OSName> <DiskDeviceMappings> <DiskDeviceMapping> <ImportOSSObject></ImportOSSObject> http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/meta/unicode.json ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/meta/unicode.json b/libcloud/test/compute/fixtures/meta/unicode.json new file mode 100644 index 0000000..85ed265 --- /dev/null +++ b/libcloud/test/compute/fixtures/meta/unicode.json @@ -0,0 +1 @@ +{"test": "Å"} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/fixtures/meta/unicode.xml ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/fixtures/meta/unicode.xml b/libcloud/test/compute/fixtures/meta/unicode.xml new file mode 100644 index 0000000..0727063 --- /dev/null +++ b/libcloud/test/compute/fixtures/meta/unicode.xml @@ -0,0 +1,2 @@ +<?xml version='1.0'?> +<Test>Å</Test> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/compute/test_ecs.py ---------------------------------------------------------------------- diff --git a/libcloud/test/compute/test_ecs.py b/libcloud/test/compute/test_ecs.py index cbd45fe..348d24b 100644 --- a/libcloud/test/compute/test_ecs.py +++ b/libcloud/test/compute/test_ecs.py @@ -427,7 +427,7 @@ class ECSDriverTestCase(LibcloudTestCase): 'description': 'freebsd1001_64_20G_aliaegis_20150527.vhd', 'size': 20, 'image_owner_alias': 'system', - 'os_name': 'FreeBSD 10.1 64', + 'os_name': 'FreeBSD 10.1 64ä½', 'product_code': '', 'is_subscribed': False, 'progress': '100%', @@ -552,6 +552,7 @@ class ECSDriverTestCase(LibcloudTestCase): zone = zones[0] self.assertEqual('cn-qingdao-b', zone.id) self.assertEqual(self.driver, zone.driver) + self.assertEqual('éå²å¯ç¨åºB', zone.name) self.assertIsNotNone(zone.available_resource_types) self.assertEqual('IoOptimized', zone.available_resource_types[0]) self.assertIsNotNone(zone.available_instance_types) http://git-wip-us.apache.org/repos/asf/libcloud/blob/18bc55de/libcloud/test/test_file_fixtures.py ---------------------------------------------------------------------- diff --git a/libcloud/test/test_file_fixtures.py b/libcloud/test/test_file_fixtures.py index 2384e78..94a0f90 100644 --- a/libcloud/test/test_file_fixtures.py +++ b/libcloud/test/test_file_fixtures.py @@ -16,8 +16,10 @@ import sys import unittest -from libcloud.utils.py3 import u +from libcloud.utils.py3 import u, httplib from libcloud.test.file_fixtures import ComputeFileFixtures +from libcloud.common.base import Connection, Response, JsonResponse, XmlResponse +from libcloud.test import MockHttp class FileFixturesTests(unittest.TestCase): @@ -35,5 +37,49 @@ class FileFixturesTests(unittest.TestCase): self.assertEqual(u"Å", f.load('unicode.txt')) +class MockHttpFileFixturesTests(unittest.TestCase): + """ + Test the behaviour of MockHttp + """ + def setUp(self): + Connection.conn_class = TestMockHttp + Connection.responseCls = Response + self.connection = Connection() + + def test_unicode_response(self): + r = self.connection.request("/unicode") + self.assertEqual(r.parse_body(), u("Å")) + + def test_json_unicode_response(self): + self.connection.responseCls = JsonResponse + r = self.connection.request("/unicode/json") + self.assertEqual(r.object, {'test': u("Å")}) + + def test_xml_unicode_response(self): + self.connection.responseCls = XmlResponse + response = self.connection.request("/unicode/xml") + self.assertEqual(response.object.text, u("Å")) + + +class TestMockHttp(MockHttp): + fixtures = ComputeFileFixtures('meta') + + def _unicode(self, method, url, body, headers): + body = self.fixtures.load('unicode.txt') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _unicode_json(self, method, url, body, headers): + body = self.fixtures.load('unicode.json') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _unicode_xml(self, method, url, body, headers): + body = self.fixtures.load('unicode.xml') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + def _ascii(self, method, url, body, headers): + body = self.fixtures.load('helloworld.txt') + return (httplib.OK, body, {}, httplib.responses[httplib.OK]) + + if __name__ == '__main__': sys.exit(unittest.main())