vm.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/python2 -O
  2. import sys
  3. import unittest
  4. import lxml.etree
  5. sys.path.insert(0, '../')
  6. import qubes.vm
  7. class TestVM(qubes.vm.BaseVM):
  8. qid = qubes.property('qid', type=int)
  9. name = qubes.property('name')
  10. testprop = qubes.property('testprop')
  11. testlabel = qubes.property('testlabel')
  12. defaultprop = qubes.property('defaultprop', default='defaultvalue')
  13. class TC_BaseVM(unittest.TestCase):
  14. def setUp(self):
  15. self.xml = lxml.etree.XML('''
  16. <qubes version="3"> <!-- xmlns="https://qubes-os.org/QubesXML/1" -->
  17. <labels>
  18. <label id="label-1" color="#cc0000">red</label>
  19. </labels>
  20. <domains>
  21. <domain id="domain-1" class="TestVM">
  22. <properties>
  23. <property name="qid">1</property>
  24. <property name="name">domain1</property>
  25. <property name="testprop">testvalue</property>
  26. <property name="testlabel" ref="label-1" />
  27. </properties>
  28. <tags>
  29. <tag name="testtag">tagvalue</tag>
  30. </tags>
  31. <services>
  32. <service>testservice</service>
  33. <service enabled="True">enabledservice</service>
  34. <service enabled="False">disabledservice</service>
  35. </services>
  36. <devices class="pci">
  37. <device>00:11.22</device>
  38. </devices>
  39. <devices class="usb" />
  40. <devices class="audio-in" />
  41. <devices class="firewire" />
  42. <devices class="i2c" />
  43. <devices class="isa" />
  44. </domain>
  45. </domains>
  46. </qubes>
  47. ''')
  48. def test_000_BaseVM_load(self):
  49. node = self.xml.xpath('//domain')[0]
  50. vm = TestVM.fromxml(None, node)
  51. self.assertEqual(vm.qid, 1)
  52. self.assertEqual(vm.testprop, 'testvalue')
  53. self.assertEqual(vm.testprop, 'testvalue')
  54. self.assertEqual(vm.testlabel, 'label-1')
  55. self.assertEqual(vm.defaultprop, 'defaultvalue')
  56. self.assertEqual(vm.tags, {'testtag': 'tagvalue'})
  57. self.assertEqual(vm.devices, {'pci': ['00:11.22']})
  58. self.assertEqual(vm.services, {
  59. 'testservice': True,
  60. 'enabledservice': True,
  61. 'disabledservice': False,
  62. })
  63. lxml.etree.ElementTree(vm.__xml__()).write(sys.stderr, encoding='utf-8', pretty_print=True)
  64. def test_001_BaseVM_nxproperty(self):
  65. xml = lxml.etree.XML('''
  66. <qubes version="3">
  67. <domains>
  68. <domain id="domain-1" class="TestVM">
  69. <properties>
  70. <property name="nxproperty">nxvalue</property>
  71. </properties>
  72. </domain>
  73. </domains>
  74. </qubes>
  75. ''')
  76. node = xml.xpath('//domain')[0]
  77. with self.assertRaises(AttributeError):
  78. TestVM.fromxml(None, node)