Accept both bytes and unicode in xml parser to make it more test friendly.
1. When we read xml in chunk we sometimes join the result with "" which will raise error python3. We also return "" when we reach file end. However, parser.ParseFile() expects bytes and "" is unicode in python3 and this will cause error we see in the log:"TypeError: read() did not return a bytes object (type=str)". Replacing all "" with b"" to make sure we always return bytes to ParseFile method. 2. Replace str with six.binary_type in SoapAdpater to handle byte input for both python 2 and 3. Also add support of unicode input here to make it more test friendly. 3. Remove the existing test_unknown_fault since the test is expecting a wrong message. We should not expect any error here.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# VMware vSphere Python SDK
|
||||
# Copyright (c) 2008-2015 VMware, Inc. All Rights Reserved.
|
||||
# Copyright (c) 2008-2016 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -497,14 +497,15 @@ class ParserError(KeyError):
|
||||
# type for all parser faults.
|
||||
pass
|
||||
|
||||
def ReadDocument(parser, data):
|
||||
def ParseData(parser, data):
|
||||
# NOTE (hartsock): maintaining library internal consistency here, this is
|
||||
# a refactoring that rolls up some repeated code blocks into a method so
|
||||
# that we can refactor XML parsing behavior in a single place.
|
||||
if not isinstance(data, str):
|
||||
data = data.read()
|
||||
try:
|
||||
parser.Parse(data)
|
||||
if isinstance(data, six.binary_type) or isinstance(data, six.text_type):
|
||||
parser.Parse(data)
|
||||
else:
|
||||
parser.ParseFile(data)
|
||||
except Exception:
|
||||
# wrap all parser faults with additional information for later
|
||||
# bug reporting on the XML parser code itself.
|
||||
@@ -528,7 +529,7 @@ def Deserialize(data, resultType=object, stub=None):
|
||||
parser = ParserCreate(namespace_separator=NS_SEP)
|
||||
ds = SoapDeserializer(stub)
|
||||
ds.Deserialize(parser, resultType)
|
||||
ReadDocument(parser, data)
|
||||
ParseData(parser, data)
|
||||
return ds.GetResult()
|
||||
|
||||
|
||||
@@ -832,7 +833,7 @@ class SoapResponseDeserializer(ExpatDeserializerNSHandlers):
|
||||
nsMap = {}
|
||||
self.nsMap = nsMap
|
||||
SetHandlers(self.parser, GetHandlers(self))
|
||||
ReadDocument(self.parser, response)
|
||||
ParseData(self.parser, response)
|
||||
result = self.deser.GetResult()
|
||||
if self.isFault:
|
||||
if result is None:
|
||||
@@ -1163,7 +1164,7 @@ class GzipReader:
|
||||
self.chunks = leftoverChunks
|
||||
self.bufSize = leftoverBytes
|
||||
|
||||
buf = "".join(chunks)
|
||||
buf = b"".join(chunks)
|
||||
return buf
|
||||
|
||||
## SOAP stub adapter object
|
||||
|
||||
274
tests/fixtures/test_unknown_fault.yaml
vendored
274
tests/fixtures/test_unknown_fault.yaml
vendored
@@ -1,274 +0,0 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><RetrieveServiceContent xmlns="urn:vim25"><_this type="ServiceInstance">ServiceInstance</_this></RetrieveServiceContent></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<RetrieveServiceContentResponse
|
||||
xmlns=\"urn:vim25\"><returnval><rootFolder type=\"Folder\">group-d1</rootFolder><propertyCollector
|
||||
type=\"PropertyCollector\">propertyCollector</propertyCollector><viewManager
|
||||
type=\"ViewManager\">ViewManager</viewManager><about><name>VMware vCenter
|
||||
Server</name><fullName>VMware vCenter Server 5.5.0 build-1750787 (Sim)</fullName><vendor>VMware,
|
||||
Inc.</vendor><version>5.5.0</version><build>1750787 (Sim)</build><localeVersion>INTL</localeVersion><localeBuild>000</localeBuild><osType>linux-x64</osType><productLineId>vpx</productLineId><apiType>VirtualCenter</apiType><apiVersion>5.5</apiVersion><instanceUuid>EAB4D846-C243-426B-A021-0547644CE59D</instanceUuid><licenseProductName>VMware
|
||||
VirtualCenter Server</licenseProductName><licenseProductVersion>5.0</licenseProductVersion></about><setting
|
||||
type=\"OptionManager\">VpxSettings</setting><userDirectory type=\"UserDirectory\">UserDirectory</userDirectory><sessionManager
|
||||
type=\"SessionManager\">SessionManager</sessionManager><authorizationManager
|
||||
type=\"AuthorizationManager\">AuthorizationManager</authorizationManager><perfManager
|
||||
type=\"PerformanceManager\">PerfMgr</perfManager><scheduledTaskManager type=\"ScheduledTaskManager\">ScheduledTaskManager</scheduledTaskManager><alarmManager
|
||||
type=\"AlarmManager\">AlarmManager</alarmManager><eventManager type=\"EventManager\">EventManager</eventManager><taskManager
|
||||
type=\"TaskManager\">TaskManager</taskManager><extensionManager type=\"ExtensionManager\">ExtensionManager</extensionManager><customizationSpecManager
|
||||
type=\"CustomizationSpecManager\">CustomizationSpecManager</customizationSpecManager><customFieldsManager
|
||||
type=\"CustomFieldsManager\">CustomFieldsManager</customFieldsManager><diagnosticManager
|
||||
type=\"DiagnosticManager\">DiagMgr</diagnosticManager><licenseManager type=\"LicenseManager\">LicenseManager</licenseManager><searchIndex
|
||||
type=\"SearchIndex\">SearchIndex</searchIndex><fileManager type=\"FileManager\">FileManager</fileManager><virtualDiskManager
|
||||
type=\"VirtualDiskManager\">virtualDiskManager</virtualDiskManager><snmpSystem
|
||||
type=\"HostSnmpSystem\">SnmpSystem</snmpSystem><vmProvisioningChecker type=\"VirtualMachineProvisioningChecker\">ProvChecker</vmProvisioningChecker><vmCompatibilityChecker
|
||||
type=\"VirtualMachineCompatibilityChecker\">CompatChecker</vmCompatibilityChecker><ovfManager
|
||||
type=\"OvfManager\">OvfManager</ovfManager><ipPoolManager type=\"IpPoolManager\">IpPoolManager</ipPoolManager><dvSwitchManager
|
||||
type=\"DistributedVirtualSwitchManager\">DVSManager</dvSwitchManager><hostProfileManager
|
||||
type=\"HostProfileManager\">HostProfileManager</hostProfileManager><clusterProfileManager
|
||||
type=\"ClusterProfileManager\">ClusterProfileManager</clusterProfileManager><complianceManager
|
||||
type=\"ProfileComplianceManager\">MoComplianceManager</complianceManager><localizationManager
|
||||
type=\"LocalizationManager\">LocalizationManager</localizationManager><storageResourceManager
|
||||
type=\"StorageResourceManager\">StorageResourceManager</storageResourceManager></returnval></RetrieveServiceContentResponse>\n</soapenv:Body>\n</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Length: ['3332']
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:40 GMT']
|
||||
Set-Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
status: {code: 200, message: OK}
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><Login xmlns="urn:vim25"><_this type="SessionManager">SessionManager</_this><userName>my_user</userName><password>my_password</password></Login></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<LoginResponse
|
||||
xmlns=\"urn:vim25\"><returnval><key>52c20b61-24c3-f233-a549-d36d3ae68e14</key><userName>my_user</userName><fullName>my_user
|
||||
</fullName><loginTime>2014-07-29T18:58:41.001537Z</loginTime><lastActiveTime>2014-07-29T18:58:41.001537Z</lastActiveTime><locale>en</locale><messageLocale>en</messageLocale></returnval></LoginResponse>\n</soapenv:Body>\n</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Length: ['665']
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:41 GMT']
|
||||
status: {code: 200, message: OK}
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><RetrieveServiceContent xmlns="urn:vim25"><_this type="ServiceInstance">ServiceInstance</_this></RetrieveServiceContent></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<RetrieveServiceContentResponse
|
||||
xmlns=\"urn:vim25\"><returnval><rootFolder type=\"Folder\">group-d1</rootFolder><propertyCollector
|
||||
type=\"PropertyCollector\">propertyCollector</propertyCollector><viewManager
|
||||
type=\"ViewManager\">ViewManager</viewManager><about><name>VMware vCenter
|
||||
Server</name><fullName>VMware vCenter Server 5.5.0 build-1750787 (Sim)</fullName><vendor>VMware,
|
||||
Inc.</vendor><version>5.5.0</version><build>1750787 (Sim)</build><localeVersion>INTL</localeVersion><localeBuild>000</localeBuild><osType>linux-x64</osType><productLineId>vpx</productLineId><apiType>VirtualCenter</apiType><apiVersion>5.5</apiVersion><instanceUuid>EAB4D846-C243-426B-A021-0547644CE59D</instanceUuid><licenseProductName>VMware
|
||||
VirtualCenter Server</licenseProductName><licenseProductVersion>5.0</licenseProductVersion></about><setting
|
||||
type=\"OptionManager\">VpxSettings</setting><userDirectory type=\"UserDirectory\">UserDirectory</userDirectory><sessionManager
|
||||
type=\"SessionManager\">SessionManager</sessionManager><authorizationManager
|
||||
type=\"AuthorizationManager\">AuthorizationManager</authorizationManager><perfManager
|
||||
type=\"PerformanceManager\">PerfMgr</perfManager><scheduledTaskManager type=\"ScheduledTaskManager\">ScheduledTaskManager</scheduledTaskManager><alarmManager
|
||||
type=\"AlarmManager\">AlarmManager</alarmManager><eventManager type=\"EventManager\">EventManager</eventManager><taskManager
|
||||
type=\"TaskManager\">TaskManager</taskManager><extensionManager type=\"ExtensionManager\">ExtensionManager</extensionManager><customizationSpecManager
|
||||
type=\"CustomizationSpecManager\">CustomizationSpecManager</customizationSpecManager><customFieldsManager
|
||||
type=\"CustomFieldsManager\">CustomFieldsManager</customFieldsManager><diagnosticManager
|
||||
type=\"DiagnosticManager\">DiagMgr</diagnosticManager><licenseManager type=\"LicenseManager\">LicenseManager</licenseManager><searchIndex
|
||||
type=\"SearchIndex\">SearchIndex</searchIndex><fileManager type=\"FileManager\">FileManager</fileManager><virtualDiskManager
|
||||
type=\"VirtualDiskManager\">virtualDiskManager</virtualDiskManager><snmpSystem
|
||||
type=\"HostSnmpSystem\">SnmpSystem</snmpSystem><vmProvisioningChecker type=\"VirtualMachineProvisioningChecker\">ProvChecker</vmProvisioningChecker><vmCompatibilityChecker
|
||||
type=\"VirtualMachineCompatibilityChecker\">CompatChecker</vmCompatibilityChecker><ovfManager
|
||||
type=\"OvfManager\">OvfManager</ovfManager><ipPoolManager type=\"IpPoolManager\">IpPoolManager</ipPoolManager><dvSwitchManager
|
||||
type=\"DistributedVirtualSwitchManager\">DVSManager</dvSwitchManager><hostProfileManager
|
||||
type=\"HostProfileManager\">HostProfileManager</hostProfileManager><clusterProfileManager
|
||||
type=\"ClusterProfileManager\">ClusterProfileManager</clusterProfileManager><complianceManager
|
||||
type=\"ProfileComplianceManager\">MoComplianceManager</complianceManager><localizationManager
|
||||
type=\"LocalizationManager\">LocalizationManager</localizationManager><storageResourceManager
|
||||
type=\"StorageResourceManager\">StorageResourceManager</storageResourceManager></returnval></RetrieveServiceContentResponse>\n</soapenv:Body>\n</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Length: ['3332']
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:41 GMT']
|
||||
status: {code: 200, message: OK}
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><RetrieveServiceContent xmlns="urn:vim25"><_this type="ServiceInstance">ServiceInstance</_this></RetrieveServiceContent></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<RetrieveServiceContentResponse
|
||||
xmlns=\"urn:vim25\"><returnval><rootFolder type=\"Folder\">group-d1</rootFolder><propertyCollector
|
||||
type=\"PropertyCollector\">propertyCollector</propertyCollector><viewManager
|
||||
type=\"ViewManager\">ViewManager</viewManager><about><name>VMware vCenter
|
||||
Server</name><fullName>VMware vCenter Server 5.5.0 build-1750787 (Sim)</fullName><vendor>VMware,
|
||||
Inc.</vendor><version>5.5.0</version><build>1750787 (Sim)</build><localeVersion>INTL</localeVersion><localeBuild>000</localeBuild><osType>linux-x64</osType><productLineId>vpx</productLineId><apiType>VirtualCenter</apiType><apiVersion>5.5</apiVersion><instanceUuid>EAB4D846-C243-426B-A021-0547644CE59D</instanceUuid><licenseProductName>VMware
|
||||
VirtualCenter Server</licenseProductName><licenseProductVersion>5.0</licenseProductVersion></about><setting
|
||||
type=\"OptionManager\">VpxSettings</setting><userDirectory type=\"UserDirectory\">UserDirectory</userDirectory><sessionManager
|
||||
type=\"SessionManager\">SessionManager</sessionManager><authorizationManager
|
||||
type=\"AuthorizationManager\">AuthorizationManager</authorizationManager><perfManager
|
||||
type=\"PerformanceManager\">PerfMgr</perfManager><scheduledTaskManager type=\"ScheduledTaskManager\">ScheduledTaskManager</scheduledTaskManager><alarmManager
|
||||
type=\"AlarmManager\">AlarmManager</alarmManager><eventManager type=\"EventManager\">EventManager</eventManager><taskManager
|
||||
type=\"TaskManager\">TaskManager</taskManager><extensionManager type=\"ExtensionManager\">ExtensionManager</extensionManager><customizationSpecManager
|
||||
type=\"CustomizationSpecManager\">CustomizationSpecManager</customizationSpecManager><customFieldsManager
|
||||
type=\"CustomFieldsManager\">CustomFieldsManager</customFieldsManager><diagnosticManager
|
||||
type=\"DiagnosticManager\">DiagMgr</diagnosticManager><licenseManager type=\"LicenseManager\">LicenseManager</licenseManager><searchIndex
|
||||
type=\"SearchIndex\">SearchIndex</searchIndex><fileManager type=\"FileManager\">FileManager</fileManager><virtualDiskManager
|
||||
type=\"VirtualDiskManager\">virtualDiskManager</virtualDiskManager><snmpSystem
|
||||
type=\"HostSnmpSystem\">SnmpSystem</snmpSystem><vmProvisioningChecker type=\"VirtualMachineProvisioningChecker\">ProvChecker</vmProvisioningChecker><vmCompatibilityChecker
|
||||
type=\"VirtualMachineCompatibilityChecker\">CompatChecker</vmCompatibilityChecker><ovfManager
|
||||
type=\"OvfManager\">OvfManager</ovfManager><ipPoolManager type=\"IpPoolManager\">IpPoolManager</ipPoolManager><dvSwitchManager
|
||||
type=\"DistributedVirtualSwitchManager\">DVSManager</dvSwitchManager><hostProfileManager
|
||||
type=\"HostProfileManager\">HostProfileManager</hostProfileManager><clusterProfileManager
|
||||
type=\"ClusterProfileManager\">ClusterProfileManager</clusterProfileManager><complianceManager
|
||||
type=\"ProfileComplianceManager\">MoComplianceManager</complianceManager><localizationManager
|
||||
type=\"LocalizationManager\">LocalizationManager</localizationManager><storageResourceManager
|
||||
type=\"StorageResourceManager\">StorageResourceManager</storageResourceManager></returnval></RetrieveServiceContentResponse>\n</soapenv:Body>\n</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Length: ['3332']
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:41 GMT']
|
||||
status: {code: 200, message: OK}
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><RetrievePropertiesEx xmlns="urn:vim25"><_this type="PropertyCollector">propertyCollector</_this><specSet><propSet><type>LicenseManager</type><all>false</all><pathSet>licenseAssignmentManager</pathSet></propSet><objectSet><obj
|
||||
type="LicenseManager">LicenseManager</obj><skip>false</skip></objectSet></specSet><options><maxObjects>1</maxObjects></options></RetrievePropertiesEx></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<RetrievePropertiesExResponse
|
||||
xmlns=\"urn:vim25\"><returnval><objects><obj type=\"LicenseManager\">LicenseManager</obj><propSet><name>licenseAssignmentManager</name><val
|
||||
type=\"LicenseAssignmentManager\" xsi:type=\"ManagedObjectReference\">LicenseAssignmentManager</val></propSet></objects></returnval></RetrievePropertiesExResponse>\n</soapenv:Body>\n</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Length: ['652']
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:41 GMT']
|
||||
status: {code: 200, message: OK}
|
||||
- request:
|
||||
body: '<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
|
||||
<soapenv:Body><QueryAssignedLicenses xmlns="urn:vim25"><_this type="LicenseAssignmentManager">LicenseAssignmentManager</_this></QueryAssignedLicenses></soapenv:Body>
|
||||
|
||||
</soapenv:Envelope>'
|
||||
headers:
|
||||
Accept-Encoding: ['gzip, deflate']
|
||||
Content-Type: [text/xml; charset=UTF-8]
|
||||
Cookie: ['vmware_soap_session="52d6ea56-0052-259f-e3f6-8ea7a7f349cb"; Path=/;
|
||||
HttpOnly; Secure; ']
|
||||
SOAPAction: ['"urn:vim25/4.1"']
|
||||
method: POST
|
||||
uri: https://vcsa:443/sdk
|
||||
response:
|
||||
body: {string: "<?xml version='1.0' encoding='UTF-8'?>
|
||||
<soapenv:Envelope
|
||||
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
|
||||
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"
|
||||
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
|
||||
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
|
||||
<soapenv:Body>
|
||||
<soapenv:Fault>
|
||||
<faultcode>ServerFaultCode</faultcode>
|
||||
<faultstring/>
|
||||
<detail>
|
||||
<UnknownLicenseProblemFaultFault xsi:type=\"UnknownLicenseProblemFault\">
|
||||
<reason>unknownReason</reason></UnknownLicenseProblemFaultFault>
|
||||
</detail>
|
||||
</soapenv:Fault>
|
||||
</soapenv:Body>
|
||||
</soapenv:Envelope>"}
|
||||
headers:
|
||||
Cache-Control: [no-cache]
|
||||
Connection: [Keep-Alive]
|
||||
Content-Type: [text/xml; charset=utf-8]
|
||||
Date: ['Tue, 29 Jul 2014 18:58:41 GMT']
|
||||
Transfer-Encoding: [chunked]
|
||||
status: {code: 500, message: Internal Server Error}
|
||||
version: 1
|
||||
@@ -1,54 +0,0 @@
|
||||
# VMware vSphere Python SDK
|
||||
# Copyright (c) 2008-2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
from tests import fixtures_path
|
||||
import unittest
|
||||
import vcr
|
||||
|
||||
from pyVim import connect
|
||||
|
||||
|
||||
class DeserializerTests(unittest.TestCase):
|
||||
|
||||
@vcr.use_cassette('test_unknown_fault.yaml',
|
||||
cassette_library_dir=fixtures_path, record_mode='once')
|
||||
def test_unknown_fault(self):
|
||||
# see: http://python3porting.com/noconv.html
|
||||
si = connect.Connect(host='vcsa',
|
||||
user='my_user',
|
||||
pwd='my_password')
|
||||
content = si.RetrieveContent()
|
||||
lm = content.licenseManager
|
||||
# NOTE (hartsock): assertIsNotNone does not work in Python 2.6
|
||||
self.assertTrue(lm is not None)
|
||||
lam = lm.licenseAssignmentManager
|
||||
# NOTE (hartsock): assertIsNotNone does not work in Python 2.6
|
||||
self.assertTrue(lam is not None)
|
||||
# cassette is altered to raise a fault here:
|
||||
fault = None
|
||||
try:
|
||||
lam.QueryAssignedLicenses()
|
||||
except Exception as ex:
|
||||
# NOTE (hartsock): not using 'assertRaises' so we can inspect obj
|
||||
fault = ex
|
||||
# NOTE (hartsock): assertIsNotNone does not work in Python 2.6
|
||||
self.assertTrue(fault is not None) # only until 2.6 support is dropped
|
||||
# Observe that the malformed XML was reported up the stack to the
|
||||
# user so that field reports will contain SOAP message information.
|
||||
self.assertTrue('<detail> '
|
||||
'<UnknownLicenseProblemFaultFault '
|
||||
'xsi:type="UnknownLicenseProblemFault"> '
|
||||
'<reason>unknownReason</reason>'
|
||||
'</UnknownLicenseProblemFaultFault> '
|
||||
'</detail>' in str(fault))
|
||||
Reference in New Issue
Block a user