PageRenderTime 24ms CodeModel.GetById 30ms RepoModel.GetById 1ms app.codeStats 0ms

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

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