summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/drac/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/drivers/modules/drac/utils.py')
-rw-r--r--ironic/tests/unit/drivers/modules/drac/utils.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/drac/utils.py b/ironic/tests/unit/drivers/modules/drac/utils.py
new file mode 100644
index 000000000..6338f7168
--- /dev/null
+++ b/ironic/tests/unit/drivers/modules/drac/utils.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2014 Red Hat, 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 xml.etree import ElementTree
+
+import mock
+
+
+def build_soap_xml(items, namespace=None):
+ """Build a SOAP XML.
+
+ :param items: a list of dictionaries where key is the element name
+ and the value is the element text.
+ :param namespace: the namespace for the elements, None for no
+ namespace. Defaults to None
+ :returns: a XML string.
+
+ """
+
+ def _create_element(name, value=None):
+ xml_string = name
+ if namespace:
+ xml_string = "{%(namespace)s}%(item)s" % {'namespace': namespace,
+ 'item': xml_string}
+
+ element = ElementTree.Element(xml_string)
+ element.text = value
+ return element
+
+ soap_namespace = "http://www.w3.org/2003/05/soap-envelope"
+ envelope_element = ElementTree.Element("{%s}Envelope" % soap_namespace)
+ body_element = ElementTree.Element("{%s}Body" % soap_namespace)
+
+ for item in items:
+ for i in item:
+ insertion_point = _create_element(i)
+ if isinstance(item[i], dict):
+ for j, value in item[i].items():
+ insertion_point.append(_create_element(j, value))
+ else:
+ insertion_point.text = item[i]
+
+ body_element.append(insertion_point)
+
+ envelope_element.append(body_element)
+ return ElementTree.tostring(envelope_element)
+
+
+def mock_wsman_root(return_value):
+ """Helper function to mock the root() from wsman client."""
+ mock_xml_root = mock.Mock(spec_set=['string'])
+ mock_xml_root.string.return_value = return_value
+
+ mock_xml = mock.Mock(spec_set=['context', 'root'])
+ mock_xml.context.return_value = None
+ mock_xml.root.return_value = mock_xml_root
+
+ return mock_xml