tests: add tests for qrexec exit code
This commit is contained in:
		
							parent
							
								
									086e88183e
								
							
						
					
					
						commit
						27be178a04
					
				@ -245,6 +245,53 @@ class VmRunningTests(unittest.TestCase):
 | 
				
			|||||||
        if result.value == 1:
 | 
					        if result.value == 1:
 | 
				
			||||||
            self.fail("Received data differs from what was expected")
 | 
					            self.fail("Received data differs from what was expected")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_060_qrexec_exit_code_dom0(self):
 | 
				
			||||||
 | 
					        self.testvm1.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm1.run("exit 0", passio_popen=True)
 | 
				
			||||||
 | 
					        p.wait()
 | 
				
			||||||
 | 
					        self.assertEqual(0, p.returncode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm1.run("exit 3", passio_popen=True)
 | 
				
			||||||
 | 
					        p.wait()
 | 
				
			||||||
 | 
					        self.assertEqual(3, p.returncode)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @unittest.expectedFailure
 | 
				
			||||||
 | 
					    def test_065_qrexec_exit_code_vm(self):
 | 
				
			||||||
 | 
					        self.testvm1.start()
 | 
				
			||||||
 | 
					        self.testvm2.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        policy = open("/etc/qubes-rpc/policy/test.Retcode", "w")
 | 
				
			||||||
 | 
					        policy.write("%s %s allow" % (self.testvm1.name, self.testvm2.name))
 | 
				
			||||||
 | 
					        policy.close()
 | 
				
			||||||
 | 
					        self.addCleanup(os.unlink, "/etc/qubes-rpc/policy/test.Retcode")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm2.run("cat > /etc/qubes-rpc/test.Retcode", user="root",
 | 
				
			||||||
 | 
					                             passio_popen=True)
 | 
				
			||||||
 | 
					        p.stdin.write("exit 0")
 | 
				
			||||||
 | 
					        p.stdin.close()
 | 
				
			||||||
 | 
					        p.wait()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm1.run("/usr/lib/qubes/qrexec-client-vm %s test.Retcode "
 | 
				
			||||||
 | 
					                             "/bin/sh -c 'cat >/dev/null'; echo $?"
 | 
				
			||||||
 | 
					                             % self.testvm1.name,
 | 
				
			||||||
 | 
					                             passio_popen=True)
 | 
				
			||||||
 | 
					        (stdout, stderr) = p.communicate()
 | 
				
			||||||
 | 
					        self.assertEqual(stdout, "0\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm2.run("cat > /etc/qubes-rpc/test.Retcode", user="root",
 | 
				
			||||||
 | 
					                             passio_popen=True)
 | 
				
			||||||
 | 
					        p.stdin.write("exit 3")
 | 
				
			||||||
 | 
					        p.stdin.close()
 | 
				
			||||||
 | 
					        p.wait()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p = self.testvm1.run("/usr/lib/qubes/qrexec-client-vm %s test.Retcode "
 | 
				
			||||||
 | 
					                             "/bin/sh -c 'cat >/dev/null'; echo $?"
 | 
				
			||||||
 | 
					                             % self.testvm1.name,
 | 
				
			||||||
 | 
					                             passio_popen=True)
 | 
				
			||||||
 | 
					        (stdout, stderr) = p.communicate()
 | 
				
			||||||
 | 
					        self.assertEqual(stdout, "3\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_100_qrexec_filecopy(self):
 | 
					    def test_100_qrexec_filecopy(self):
 | 
				
			||||||
        self.testvm1.start()
 | 
					        self.testvm1.start()
 | 
				
			||||||
        self.testvm2.start()
 | 
					        self.testvm2.start()
 | 
				
			||||||
@ -270,12 +317,13 @@ class VmRunningTests(unittest.TestCase):
 | 
				
			|||||||
        subprocess.check_call(['xdotool', 'search', '--sync', '--name', 'Question',
 | 
					        subprocess.check_call(['xdotool', 'search', '--sync', '--name', 'Question',
 | 
				
			||||||
                             'key', 'n'])
 | 
					                             'key', 'n'])
 | 
				
			||||||
        p.wait()
 | 
					        p.wait()
 | 
				
			||||||
        self.assertEqual(p.returncode, 1, "qvm-copy-to-vm unexpectedly "
 | 
					        self.assertNotEqual(p.returncode, 0, "qvm-copy-to-vm unexpectedly "
 | 
				
			||||||
                                          "succeeded")
 | 
					                                          "succeeded")
 | 
				
			||||||
        retcode = self.testvm1.run("ls /home/user/QubesIncoming/%s" %
 | 
					        retcode = self.testvm1.run("ls /home/user/QubesIncoming/%s" %
 | 
				
			||||||
                                  self.testvm1.name, wait=True,
 | 
					                                  self.testvm1.name, wait=True,
 | 
				
			||||||
                                  ignore_stderr=True)
 | 
					                                  ignore_stderr=True)
 | 
				
			||||||
        self.assertEqual(retcode, 2, "QubesIncoming exists although file copy was "
 | 
					        self.assertNotEqual(retcode, 0, "QubesIncoming exists although file "
 | 
				
			||||||
 | 
					                                      "copy was "
 | 
				
			||||||
                                     "denied")
 | 
					                                     "denied")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_120_qrexec_filecopy_self(self):
 | 
					    def test_120_qrexec_filecopy_self(self):
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user