1*4882a593Smuzhiyunimport os 2*4882a593Smuzhiyunimport infra.basetest 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunclass TestPolkitInfra(infra.basetest.BRTest): 6*4882a593Smuzhiyun br2_external = [infra.filepath("tests/package/br2-external/polkit")] 7*4882a593Smuzhiyun config = \ 8*4882a593Smuzhiyun """ 9*4882a593Smuzhiyun BR2_arm=y 10*4882a593Smuzhiyun BR2_cortex_a9=y 11*4882a593Smuzhiyun BR2_ARM_ENABLE_VFP=y 12*4882a593Smuzhiyun BR2_TOOLCHAIN_EXTERNAL=y 13*4882a593Smuzhiyun BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y 14*4882a593Smuzhiyun BR2_TARGET_ROOTFS_CPIO=y 15*4882a593Smuzhiyun BR2_PACKAGE_POLKIT=y 16*4882a593Smuzhiyun BR2_PACKAGE_POLKIT_RULES_TEST=y 17*4882a593Smuzhiyun """ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun def base_test_run(self): 20*4882a593Smuzhiyun cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") 21*4882a593Smuzhiyun self.emulator.boot(arch="armv7", kernel="builtin", 22*4882a593Smuzhiyun options=["-initrd", cpio_file]) 23*4882a593Smuzhiyun self.emulator.login() 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun 26*4882a593Smuzhiyunclass TestPolkitSystemd(TestPolkitInfra): 27*4882a593Smuzhiyun config = \ 28*4882a593Smuzhiyun """ 29*4882a593Smuzhiyun {} 30*4882a593Smuzhiyun BR2_INIT_SYSTEMD=y 31*4882a593Smuzhiyun BR2_PACKAGE_SYSTEMD_POLKIT=y 32*4882a593Smuzhiyun BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" 33*4882a593Smuzhiyun # BR2_TARGET_ROOTFS_TAR is not set 34*4882a593Smuzhiyun """.format(TestPolkitInfra.config) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun def test_run(self): 37*4882a593Smuzhiyun TestPolkitInfra.base_test_run(self) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun cmd = "su brtest -c '/bin/systemctl restart systemd-timesyncd.service'" 40*4882a593Smuzhiyun _, exit_code = self.emulator.run(cmd, 10) 41*4882a593Smuzhiyun self.assertEqual(exit_code, 1) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun cmd = "mv /root/systemd-timesyncd-restart.rules /etc/polkit-1/rules.d" 44*4882a593Smuzhiyun _, exit_code = self.emulator.run(cmd, 10) 45*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun cmd = "su brtest -c '/bin/systemctl restart systemd-timesyncd.service'" 48*4882a593Smuzhiyun _, exit_code = self.emulator.run(cmd, 10) 49*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun 52*4882a593Smuzhiyunclass TestPolkitInitd(TestPolkitInfra): 53*4882a593Smuzhiyun config = TestPolkitInfra.config 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun def test_run(self): 56*4882a593Smuzhiyun TestPolkitInfra.base_test_run(self) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun cmd = "su brtest -c 'pkexec hello-polkit'" 59*4882a593Smuzhiyun output, exit_code = self.emulator.run(cmd, 10) 60*4882a593Smuzhiyun self.assertEqual(exit_code, 127) 61*4882a593Smuzhiyun self.assertEqual(output[0], "Error executing command as another user: Not authorized") 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun cmd = "mv /root/hello-polkit.rules /etc/polkit-1/rules.d/hello-polkit.rules" 64*4882a593Smuzhiyun _, exit_code = self.emulator.run(cmd, 10) 65*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun cmd = "su brtest -c 'pkexec hello-polkit'" 68*4882a593Smuzhiyun output, exit_code = self.emulator.run(cmd, 10) 69*4882a593Smuzhiyun self.assertEqual(exit_code, 0) 70*4882a593Smuzhiyun self.assertEqual(output[0], "Hello polkit!") 71