Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

166 linhas
5.9 KiB

  1. import unittest
  2. from mock import patch
  3. from lesspass.cli import parse_args
  4. class TestParseArgs(unittest.TestCase):
  5. def test_parse_args_site(self):
  6. self.assertEqual(parse_args(["site"]).site, "site")
  7. def test_parse_args_login(self):
  8. self.assertEqual(parse_args(["site", "login"]).login, "login")
  9. def test_parse_args_LESSPASS_MASTER_PASSWORD_env_variable(self):
  10. with patch.dict("os.environ", {"LESSPASS_MASTER_PASSWORD": "password"}):
  11. self.assertEqual(parse_args([]).master_password, "password")
  12. def test_parse_args_master_password(self):
  13. self.assertEqual(
  14. parse_args(["site", "login", "masterpassword"]).master_password,
  15. "masterpassword",
  16. )
  17. def test_parse_args_l(self):
  18. self.assertTrue(parse_args(["site", "-l"]).l)
  19. self.assertTrue(parse_args(["site", "--lowercase"]).l)
  20. def test_parse_args_u(self):
  21. self.assertTrue(parse_args(["site", "-u"]).u)
  22. self.assertTrue(parse_args(["site", "--uppercase"]).u)
  23. def test_parse_args_d(self):
  24. self.assertTrue(parse_args(["site", "-d"]).d)
  25. self.assertTrue(parse_args(["site", "--digits"]).d)
  26. def test_parse_args_s(self):
  27. self.assertTrue(parse_args(["site", "-s"]).s)
  28. self.assertTrue(parse_args(["site", "--symbols"]).s)
  29. def test_parse_args_lu(self):
  30. args = parse_args(["site", "-lu"])
  31. self.assertTrue(args.l)
  32. self.assertTrue(args.u)
  33. self.assertFalse(args.d)
  34. self.assertFalse(args.s)
  35. def test_parse_args_lud(self):
  36. args = parse_args(["site", "-lud"])
  37. self.assertTrue(args.l)
  38. self.assertTrue(args.u)
  39. self.assertTrue(args.d)
  40. self.assertFalse(args.s)
  41. def test_parse_args_luds(self):
  42. args = parse_args(["site", "-luds"])
  43. self.assertTrue(args.l)
  44. self.assertTrue(args.u)
  45. self.assertTrue(args.d)
  46. self.assertTrue(args.s)
  47. def test_parse_args_no_lowercase(self):
  48. self.assertTrue(parse_args(["site", "--no-lowercase"]).nl)
  49. def test_parse_args_no_uppercase(self):
  50. self.assertTrue(parse_args(["site", "--no-uppercase"]).nu)
  51. def test_parse_args_no_digits(self):
  52. self.assertTrue(parse_args(["site", "--no-digits"]).nd)
  53. def test_parse_args_no_symbols(self):
  54. self.assertTrue(parse_args(["site", "--no-symbols"]).ns)
  55. def test_parse_args_length_default(self):
  56. self.assertEqual(parse_args(["site"]).length, 16)
  57. def test_parse_args_length_long(self):
  58. self.assertEqual(parse_args(["site", "--length", "8"]).length, 8)
  59. def test_parse_args_length_short(self):
  60. self.assertEqual(parse_args(["site", "-L6"]).length, 6)
  61. self.assertEqual(parse_args(["site", "-L", "12"]).length, 12)
  62. def test_parse_args_counter_default(self):
  63. self.assertEqual(parse_args(["site"]).counter, 1)
  64. def test_parse_args_counter_long(self):
  65. self.assertEqual(parse_args(["site", "--counter", "2"]).counter, 2)
  66. def test_parse_args_counter_short(self):
  67. self.assertEqual(parse_args(["site", "-C99"]).counter, 99)
  68. self.assertEqual(parse_args(["site", "-C", "100"]).counter, 100)
  69. def test_parse_args_clipboard_default(self):
  70. self.assertFalse(parse_args(["site"]).clipboard)
  71. def test_parse_args_clipboard_long(self):
  72. self.assertTrue(parse_args(["site", "--copy"]).clipboard)
  73. def test_parse_args_clipboard_short(self):
  74. self.assertTrue(parse_args(["site", "-c"]).clipboard)
  75. def test_parse_args_prompt_long(self):
  76. self.assertTrue(parse_args(["--prompt"]).prompt)
  77. def test_parse_args_prompt_short(self):
  78. self.assertTrue(parse_args(["-p"]).prompt)
  79. def test_parse_args_exclude_default(self):
  80. self.assertEqual(parse_args(["site"]).exclude, None)
  81. def test_parse_args_exclude(self):
  82. self.assertEqual(parse_args(["site", "--exclude", "!@$*+-"]).exclude, "!@$*+-")
  83. def test_parse_args_exclude_single_and_double_quote(self):
  84. self.assertEqual(parse_args(["site", "--exclude", "\"'"]).exclude, "\"'")
  85. def test_parse_no_fingerprint(self):
  86. self.assertTrue(parse_args(["site", "--no-fingerprint"]).no_fingerprint)
  87. self.assertFalse(parse_args(["site"]).no_fingerprint)
  88. def test_parse_args_save_path(self):
  89. self.assertEqual(
  90. parse_args(["--save", "/tmp/profiles.json"]).save_path, "/tmp/profiles.json"
  91. )
  92. self.assertEqual(parse_args(["site"]).save_path, None)
  93. with patch.dict("os.environ", {"XDG_CONFIG_HOME": "/tmp"}):
  94. self.assertEqual(
  95. parse_args(["--save"]).save_path, "/tmp/lesspass/profiles.json"
  96. )
  97. def test_parse_args_load_path(self):
  98. self.assertEqual(
  99. parse_args(["--load", "/tmp/profiles.json"]).load_path, "/tmp/profiles.json"
  100. )
  101. self.assertEqual(parse_args(["site"]).load_path, None)
  102. def test_parse_args_config_home_path(self):
  103. self.assertTrue(parse_args([]).config_home_path.endswith("/.config/lesspass"))
  104. def test_parse_args_XDG_CONFIG_HOME_env_variable(self):
  105. with patch.dict("os.environ", {"XDG_CONFIG_HOME": "/tmp"}):
  106. self.assertEqual(parse_args([]).config_home_path, "/tmp/lesspass")
  107. def test_parse_args_default_base_url(self):
  108. self.assertEqual(parse_args([]).url, "https://api.lesspass.com/")
  109. def test_parse_args_default_base_url(self):
  110. self.assertEqual(
  111. parse_args(["--url", "https://example.org/"]).url, "https://example.org/"
  112. )
  113. def test_nrt_parse_url_add_trailing_slash(self):
  114. self.assertEqual(
  115. parse_args(["--url", "https://example.org"]).url, "https://example.org/"
  116. )
  117. def test_export(self):
  118. self.assertEqual(
  119. parse_args(["--export", "/tmp/export.csv"]).export_file_path,
  120. "/tmp/export.csv",
  121. )
  122. def test_logout(self):
  123. self.assertTrue(parse_args(["--logout"]).logout)