PageRenderTime 82ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/plugins/test/unit/plugins/importers/yum/repomd/test_primary.py

https://github.com/ATIX-AG/pulp_rpm
Python | 245 lines | 212 code | 22 blank | 11 comment | 1 complexity | f463cb6705f1f7d370246d545cc41a72 MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. from cStringIO import StringIO
  3. import unittest
  4. import mock
  5. from pulp_rpm.plugins.db import models
  6. from pulp_rpm.plugins.importers.yum.repomd import primary, packages
  7. class TestProcessPackageElement(unittest.TestCase):
  8. """
  9. Assert correct behavior from the process_package_element() function.
  10. """
  11. @mock.patch('pulp_rpm.plugins.db.models.version_utils.encode')
  12. @mock.patch('pulp_rpm.plugins.importers.yum.repomd.primary.utils.element_to_raw_xml')
  13. def test_sanitizes_checksum_type(self, element_to_raw_xml, encode):
  14. """
  15. Assert that the function correctly sanitizes checksum types.
  16. """
  17. element = mock.MagicMock()
  18. def element_find(tag_name):
  19. sub_element = mock.MagicMock()
  20. if tag_name == primary.CHECKSUM_TAG:
  21. sub_element.attrib = {'type': 'sha'}
  22. return sub_element
  23. element.find.side_effect = element_find
  24. model = primary.process_package_element(element)
  25. self.assertEqual(model.checksumtype, 'sha1')
  26. def test_adds_templates(self):
  27. """
  28. Assert that the function correctly adds templates.
  29. """
  30. rpms = packages.package_list_generator(StringIO(F18_XML),
  31. primary.PACKAGE_TAG,
  32. primary.process_package_element)
  33. rpms = list(rpms)
  34. self.assertEqual(len(rpms), 1)
  35. model = rpms[0]
  36. self.assertTrue(model.CHECKSUM_TEMPLATE in model.raw_xml)
  37. self.assertTrue(model.CHECKSUMTYPE_TEMPLATE in model.raw_xml)
  38. class TestProcessSRPMElement(unittest.TestCase):
  39. def test_fedora18_real_data(self):
  40. rpms = packages.package_list_generator(StringIO(F18_SOURCE_XML),
  41. primary.PACKAGE_TAG,
  42. primary.process_package_element)
  43. rpms = list(rpms)
  44. self.assertEqual(len(rpms), 1)
  45. model = rpms[0]
  46. self.assertTrue(isinstance(model, models.SRPM))
  47. self.assertEqual(model.name, 'openhpi-subagent')
  48. self.assertEqual(model.epoch, '0')
  49. self.assertEqual(model.version, '2.3.4')
  50. self.assertEqual(model.release, '20.fc18')
  51. self.assertEqual(model.arch, 'src')
  52. self.assertEqual(model.checksum,
  53. '2d46d2c03e36583370d203e7ae63b00cfcd739421b58f8f00a89c56ac74654fa')
  54. self.assertEqual(model.checksumtype, 'sha256')
  55. class TestProcessRPMElement(unittest.TestCase):
  56. def test_fedora18_real_data(self):
  57. rpms = packages.package_list_generator(StringIO(F18_XML),
  58. primary.PACKAGE_TAG,
  59. primary.process_package_element)
  60. rpms = list(rpms)
  61. self.assertEqual(len(rpms), 1)
  62. model = rpms[0]
  63. self.assertTrue(isinstance(model, models.RPM))
  64. self.assertEqual(model.name, 'opensm-libs')
  65. self.assertEqual(model.epoch, '0')
  66. self.assertEqual(model.version, '3.3.15')
  67. self.assertEqual(model.release, '3.fc18')
  68. self.assertEqual(model.arch, 'x86_64')
  69. self.assertEqual(model.checksum,
  70. 'c2c85a567d1b92dd6131bd326611b162ed485f6f97583e46459b430006908d66')
  71. self.assertEqual(model.checksumtype, 'sha256')
  72. def test_xml_base_overrides_base_url(self):
  73. rpms = packages.package_list_generator(StringIO(F18_XML_ALTERNATE_LOCATION),
  74. primary.PACKAGE_TAG,
  75. primary.process_package_element)
  76. rpms = list(rpms)
  77. self.assertEqual(len(rpms), 1)
  78. model = rpms[0]
  79. self.assertTrue(isinstance(model, models.RPM))
  80. # Test the location
  81. self.assertEqual(model.base_url, 'http://www.foo.com/repo')
  82. F18_SOURCE_XML = """<?xml version="1.0" encoding="UTF-8"?>
  83. <metadata xmlns="http://linux.duke.edu/metadata/common"
  84. xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1">
  85. <package type="rpm">
  86. <name>openhpi-subagent</name>
  87. <arch>src</arch>
  88. <version epoch="0" ver="2.3.4" rel="20.fc18"/>
  89. <checksum type="sha256"
  90. pkgid="YES">2d46d2c03e36583370d203e7ae63b00cfcd739421b58f8f00a89c56ac74654fa</checksum>
  91. <summary>NetSNMP subagent for OpenHPI</summary>
  92. <description>The openhpi-subagent package contains the Service Availability Forum's
  93. Hardware Platform Interface SNMP sub-agent.</description>
  94. <packager>Fedora Project</packager>
  95. <url>http://www.openhpi.org</url>
  96. <time file="1344659367" build="1342841542"/>
  97. <size package="869418" installed="898608" archive="899592"/>
  98. <location href="o/openhpi-subagent-2.3.4-20.fc18.src.rpm"/>
  99. <format>
  100. <rpm:license>BSD</rpm:license>
  101. <rpm:vendor>Fedora Project</rpm:vendor>
  102. <rpm:group>System Environment/Base</rpm:group>
  103. <rpm:buildhost>buildvm-02.phx2.fedoraproject.org</rpm:buildhost>
  104. <rpm:sourcerpm/>
  105. <rpm:header-range start="1384" end="5833"/>
  106. <rpm:requires>
  107. <rpm:entry name="docbook-utils"/>
  108. <rpm:entry name="net-snmp-devel"/>
  109. <rpm:entry name="openhpi-devel"/>
  110. <rpm:entry name="openssl-devel"/>
  111. <rpm:entry name="systemd-units"/>
  112. </rpm:requires>
  113. </format>
  114. </package>
  115. </metadata>
  116. """
  117. F18_XML = """<?xml version="1.0" encoding="UTF-8"?>
  118. <metadata xmlns="http://linux.duke.edu/metadata/common"
  119. xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1">
  120. <package type="rpm">
  121. <name>opensm-libs</name>
  122. <arch>x86_64</arch>
  123. <version epoch="0" ver="3.3.15" rel="3.fc18"/>
  124. <checksum type="sha256"
  125. pkgid="YES">c2c85a567d1b92dd6131bd326611b162ed485f6f97583e46459b430006908d66</checksum>
  126. <summary>Libraries used by opensm and included utilities</summary>
  127. <description>Shared libraries for Infiniband user space access</description>
  128. <packager>Fedora Project</packager>
  129. <url>http://www.openfabrics.org/</url>
  130. <time file="1354738068" build="1354735351"/>
  131. <size package="62796" installed="176600" archive="177640"/>
  132. <location href="Packages/o/opensm-libs-3.3.15-3.fc18.x86_64.rpm"/>
  133. <format>
  134. <rpm:license>GPLv2 or BSD</rpm:license>
  135. <rpm:vendor>Fedora Project</rpm:vendor>
  136. <rpm:group>System Environment/Libraries</rpm:group>
  137. <rpm:buildhost>buildvm-21.phx2.fedoraproject.org</rpm:buildhost>
  138. <rpm:sourcerpm>opensm-3.3.15-3.fc18.src.rpm</rpm:sourcerpm>
  139. <rpm:header-range start="1384" end="8104"/>
  140. <rpm:provides>
  141. <rpm:entry name="libopensm.so.5()(64bit)"/>
  142. <rpm:entry name="libopensm.so.5(OPENSM_1.5)(64bit)"/>
  143. <rpm:entry name="libosmcomp.so.3()(64bit)"/>
  144. <rpm:entry name="libosmcomp.so.3(OSMCOMP_2.3)(64bit)"/>
  145. <rpm:entry name="libosmvendor.so.3()(64bit)"/>
  146. <rpm:entry name="libosmvendor.so.3(OSMVENDOR_2.0)(64bit)"/>
  147. <rpm:entry name="opensm-libs" flags="EQ" epoch="0" ver="3.3.15" rel="3.fc18"/>
  148. <rpm:entry name="opensm-libs(x86-64)" flags="EQ" epoch="0" ver="3.3.15" rel="3.fc18"/>
  149. </rpm:provides>
  150. <rpm:requires>
  151. <rpm:entry name="/sbin/ldconfig"/>
  152. <rpm:entry name="/sbin/ldconfig" pre="1"/>
  153. <rpm:entry name="libc.so.6(GLIBC_2.14)(64bit)"/>
  154. <rpm:entry name="libdl.so.2()(64bit)"/>
  155. <rpm:entry name="libgcc_s.so.1()(64bit)"/>
  156. <rpm:entry name="libgcc_s.so.1(GCC_3.0)(64bit)"/>
  157. <rpm:entry name="libgcc_s.so.1(GCC_3.3.1)(64bit)"/>
  158. <rpm:entry name="libibumad.so.3()(64bit)"/>
  159. <rpm:entry name="libibumad.so.3(IBUMAD_1.0)(64bit)"/>
  160. <rpm:entry name="libpthread.so.0()(64bit)"/>
  161. <rpm:entry name="libpthread.so.0(GLIBC_2.2.5)(64bit)"/>
  162. <rpm:entry name="libpthread.so.0(GLIBC_2.3.2)(64bit)"/>
  163. <rpm:entry name="rtld(GNU_HASH)"/>
  164. </rpm:requires>
  165. </format>
  166. </package>
  167. </metadata>
  168. """
  169. F18_XML_ALTERNATE_LOCATION = """<?xml version="1.0" encoding="UTF-8"?>
  170. <metadata xmlns="http://linux.duke.edu/metadata/common"
  171. xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1">
  172. <package type="rpm">
  173. <name>opensm-libs</name>
  174. <arch>x86_64</arch>
  175. <version epoch="0" ver="3.3.15" rel="3.fc18"/>
  176. <checksum type="sha256"
  177. pkgid="YES">c2c85a567d1b92dd6131bd326611b162ed485f6f97583e46459b430006908d66</checksum>
  178. <summary>Libraries used by opensm and included utilities</summary>
  179. <description>Shared libraries for Infiniband user space access</description>
  180. <packager>Fedora Project</packager>
  181. <url>http://www.openfabrics.org/</url>
  182. <time file="1354738068" build="1354735351"/>
  183. <size package="62796" installed="176600" archive="177640"/>
  184. <location xml:base="http://www.foo.com/repo"
  185. href="Packages/o/opensm-libs-3.3.15-3.fc18.x86_64.rpm"/>
  186. <format>
  187. <rpm:license>GPLv2 or BSD</rpm:license>
  188. <rpm:vendor>Fedora Project</rpm:vendor>
  189. <rpm:group>System Environment/Libraries</rpm:group>
  190. <rpm:buildhost>buildvm-21.phx2.fedoraproject.org</rpm:buildhost>
  191. <rpm:sourcerpm>opensm-3.3.15-3.fc18.src.rpm</rpm:sourcerpm>
  192. <rpm:header-range start="1384" end="8104"/>
  193. <rpm:provides>
  194. <rpm:entry name="libopensm.so.5()(64bit)"/>
  195. <rpm:entry name="libopensm.so.5(OPENSM_1.5)(64bit)"/>
  196. <rpm:entry name="libosmcomp.so.3()(64bit)"/>
  197. <rpm:entry name="libosmcomp.so.3(OSMCOMP_2.3)(64bit)"/>
  198. <rpm:entry name="libosmvendor.so.3()(64bit)"/>
  199. <rpm:entry name="libosmvendor.so.3(OSMVENDOR_2.0)(64bit)"/>
  200. <rpm:entry name="opensm-libs" flags="EQ" epoch="0" ver="3.3.15" rel="3.fc18"/>
  201. <rpm:entry name="opensm-libs(x86-64)" flags="EQ" epoch="0" ver="3.3.15" rel="3.fc18"/>
  202. </rpm:provides>
  203. <rpm:requires>
  204. <rpm:entry name="/sbin/ldconfig"/>
  205. <rpm:entry name="/sbin/ldconfig" pre="1"/>
  206. <rpm:entry name="libc.so.6(GLIBC_2.14)(64bit)"/>
  207. <rpm:entry name="libdl.so.2()(64bit)"/>
  208. <rpm:entry name="libgcc_s.so.1()(64bit)"/>
  209. <rpm:entry name="libgcc_s.so.1(GCC_3.0)(64bit)"/>
  210. <rpm:entry name="libgcc_s.so.1(GCC_3.3.1)(64bit)"/>
  211. <rpm:entry name="libibumad.so.3()(64bit)"/>
  212. <rpm:entry name="libibumad.so.3(IBUMAD_1.0)(64bit)"/>
  213. <rpm:entry name="libpthread.so.0()(64bit)"/>
  214. <rpm:entry name="libpthread.so.0(GLIBC_2.2.5)(64bit)"/>
  215. <rpm:entry name="libpthread.so.0(GLIBC_2.3.2)(64bit)"/>
  216. <rpm:entry name="rtld(GNU_HASH)"/>
  217. </rpm:requires>
  218. </format>
  219. </package>
  220. </metadata>
  221. """