qvm_tags.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. # -*- encoding: utf8 -*-
  2. #
  3. # The Qubes OS Project, http://www.qubes-os.org
  4. #
  5. # Copyright (C) 2017 Marek Marczykowski-Górecki
  6. # <marmarek@invisiblethingslab.com>
  7. #
  8. # This program is free software; you can redistribute it and/or modify
  9. # it under the terms of the GNU General Public License as published by
  10. # the Free Software Foundation; either version 2 of the License, or
  11. # (at your option) any later version.
  12. #
  13. # This program is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. # GNU General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU General Public License along
  19. # with this program; if not, see <http://www.gnu.org/licenses/>.
  20. import qubesadmin.tests
  21. import qubesadmin.tests.tools
  22. import qubesadmin.tools.qvm_tags
  23. class TC_00_qvm_tags(qubesadmin.tests.QubesTestCase):
  24. def test_000_list(self):
  25. self.app.expected_calls[
  26. ('dom0', 'admin.vm.List', None, None)] = \
  27. b'0\x00some-vm class=AppVM state=Running\n'
  28. self.app.expected_calls[
  29. ('some-vm', 'admin.vm.tag.List', None, None)] = \
  30. b'0\x00tag1\ntag2\n'
  31. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  32. self.assertEqual(
  33. qubesadmin.tools.qvm_tags.main(['some-vm'], app=self.app),
  34. 0)
  35. self.assertEqual(stdout.getvalue(),
  36. 'tag1\n'
  37. 'tag2\n')
  38. self.assertAllCalled()
  39. def test_001_list_action(self):
  40. self.app.expected_calls[
  41. ('dom0', 'admin.vm.List', None, None)] = \
  42. b'0\x00some-vm class=AppVM state=Running\n'
  43. self.app.expected_calls[
  44. ('some-vm', 'admin.vm.tag.List', None, None)] = \
  45. b'0\x00tag1\ntag2\n'
  46. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  47. self.assertEqual(
  48. qubesadmin.tools.qvm_tags.main(['some-vm', 'list'],
  49. app=self.app), 0)
  50. self.assertEqual(stdout.getvalue(),
  51. 'tag1\n'
  52. 'tag2\n')
  53. self.assertAllCalled()
  54. def test_002_list_alias(self):
  55. self.app.expected_calls[
  56. ('dom0', 'admin.vm.List', None, None)] = \
  57. b'0\x00some-vm class=AppVM state=Running\n'
  58. self.app.expected_calls[
  59. ('some-vm', 'admin.vm.tag.List', None, None)] = \
  60. b'0\x00tag1\ntag2\n'
  61. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  62. self.assertEqual(
  63. qubesadmin.tools.qvm_tags.main(['some-vm', 'ls'],
  64. app=self.app), 0)
  65. self.assertEqual(stdout.getvalue(),
  66. 'tag1\n'
  67. 'tag2\n')
  68. self.assertAllCalled()
  69. def test_003_list_check(self):
  70. self.app.expected_calls[
  71. ('dom0', 'admin.vm.List', None, None)] = \
  72. b'0\x00some-vm class=AppVM state=Running\n'
  73. self.app.expected_calls[
  74. ('some-vm', 'admin.vm.tag.Get', 'tag1', None)] = \
  75. b'0\x001'
  76. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  77. self.assertEqual(
  78. qubesadmin.tools.qvm_tags.main(['some-vm', 'ls', 'tag1'],
  79. app=self.app), 0)
  80. self.assertEqual(stdout.getvalue(), 'tag1\n')
  81. self.assertAllCalled()
  82. def test_004_list_check_missing(self):
  83. self.app.expected_calls[
  84. ('dom0', 'admin.vm.List', None, None)] = \
  85. b'0\x00some-vm class=AppVM state=Running\n'
  86. self.app.expected_calls[
  87. ('some-vm', 'admin.vm.tag.Get', 'tag1', None)] = \
  88. b'0\x000'
  89. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  90. self.assertEqual(
  91. qubesadmin.tools.qvm_tags.main(['some-vm', 'ls', 'tag1'],
  92. app=self.app), 1)
  93. self.assertEqual(stdout.getvalue(), '')
  94. self.assertAllCalled()
  95. def test_005_list_empty(self):
  96. self.app.expected_calls[
  97. ('dom0', 'admin.vm.List', None, None)] = \
  98. b'0\x00some-vm class=AppVM state=Running\n'
  99. self.app.expected_calls[
  100. ('some-vm', 'admin.vm.tag.List', None, None)] = \
  101. b'0\x00'
  102. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  103. self.assertEqual(
  104. qubesadmin.tools.qvm_tags.main(['some-vm', 'list'],
  105. app=self.app), 0)
  106. self.assertEqual(stdout.getvalue(), '')
  107. self.assertAllCalled()
  108. def test_010_add(self):
  109. self.app.expected_calls[
  110. ('dom0', 'admin.vm.List', None, None)] = \
  111. b'0\x00some-vm class=AppVM state=Running\n'
  112. self.app.expected_calls[
  113. ('some-vm', 'admin.vm.tag.Set', 'tag3', None)] = b'0\x00'
  114. self.assertEqual(
  115. qubesadmin.tools.qvm_tags.main(['some-vm', 'add', 'tag3'],
  116. app=self.app),
  117. 0)
  118. self.assertAllCalled()
  119. def test_020_del(self):
  120. self.app.expected_calls[
  121. ('dom0', 'admin.vm.List', None, None)] = \
  122. b'0\x00some-vm class=AppVM state=Running\n'
  123. self.app.expected_calls[
  124. ('some-vm', 'admin.vm.tag.Remove', 'tag3', None)] = b'0\x00'
  125. with qubesadmin.tests.tools.StdoutBuffer() as stdout:
  126. self.assertEqual(
  127. qubesadmin.tools.qvm_tags.main(['some-vm', 'del', 'tag3'],
  128. app=self.app),
  129. 0)
  130. self.assertEqual(stdout.getvalue(), '')
  131. self.assertAllCalled()