test_shadow.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. from infra.basetest import BRTest, BASIC_TOOLCHAIN_CONFIG
  3. class TestShadow(BRTest):
  4. username = 'user_test'
  5. config = BASIC_TOOLCHAIN_CONFIG + \
  6. """
  7. BR2_arm=y
  8. BR2_PACKAGE_SHADOW=y
  9. BR2_TARGET_ROOTFS_EXT2=y
  10. BR2_TARGET_ROOTFS_EXT2_4=y
  11. BR2_TARGET_ROOTFS_EXT2_SIZE="65536"
  12. """
  13. timeout = 60
  14. def login(self):
  15. img = os.path.join(self.builddir, "images", "rootfs.ext4")
  16. self.emulator.boot(arch="armv7",
  17. kernel="builtin",
  18. kernel_cmdline=["root=/dev/mmcblk0",
  19. "rootfstype=ext4"],
  20. options=["-drive", f"file={img},if=sd,format=raw"])
  21. self.emulator.login()
  22. def test_nologin(self):
  23. self.login()
  24. self.assertRunOk("! nologin")
  25. cmd = 'test "$(nologin)" = "This account is currently not available."'
  26. self.assertRunOk(cmd)
  27. def test_useradd_del(self):
  28. username = self.username
  29. self.login()
  30. self.assertRunOk(f'userdel {username} || true')
  31. self.assertRunOk(f'groupdel {username} || true')
  32. self.assertRunOk(f'useradd -s /bin/sh {username}')
  33. self.assertRunOk(f'test $(su {username} -c "whoami") = {username}')
  34. self.assertRunOk(f'userdel {username}')
  35. def test_usermod(self):
  36. username = self.username
  37. new_home = '/tmp'
  38. self.login()
  39. self.assertRunOk(f'userdel {username} || true')
  40. self.assertRunOk(f'groupdel {username} || true')
  41. self.assertRunOk(f'useradd -s /bin/sh {username}')
  42. self.assertRunOk(f'usermod {username} --home {new_home}')
  43. self.assertRunOk(f'test $(su {username} -c \'echo $HOME\') = {new_home}')
  44. self.assertRunOk(f'userdel {username}')