aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lisp/auth-source-pass-tests.el54
1 files changed, 50 insertions, 4 deletions
diff --git a/test/lisp/auth-source-pass-tests.el b/test/lisp/auth-source-pass-tests.el
index 6455c3393d5..c54936c3f92 100644
--- a/test/lisp/auth-source-pass-tests.el
+++ b/test/lisp/auth-source-pass-tests.el
@@ -548,6 +548,44 @@ machine x.com port 42 password b
548 '((:host "x.com" :secret "a") 548 '((:host "x.com" :secret "a")
549 (:host "x.com" :port 42 :secret "b"))))))) 549 (:host "x.com" :port 42 :secret "b")))))))
550 550
551;; The query requires a user and doesn't specify a user to match against.
552;; The only entry matching the host lacks a user, so the search fails.
553
554(ert-deftest auth-source-pass-extra-query-keywords--req-noparam-miss-netrc ()
555 (ert-with-temp-file netrc-file
556 :text "machine foo password a\n"
557 (let ((auth-sources (list netrc-file))
558 (auth-source-do-cache nil))
559 (should-not (auth-source-search :host "foo" :require '(:user) :max 2)))))
560
561(ert-deftest auth-source-pass-extra-query-keywords--req-noparam-miss ()
562 (let ((auth-source-pass-extra-query-keywords t))
563 (auth-source-pass--with-store '(("foo" (secret . "a")))
564 (auth-source-pass-enable)
565 (should-not (auth-source-search :host "foo" :require '(:user) :max 2)))))
566
567;; The query requires a user but does not provide a reference value to
568;; match against. An entry matching the host that specifies a user is
569;; selected because any user will do.
570(ert-deftest auth-source-pass-extra-query-keywords--req-param-netrc ()
571 (ert-with-temp-file netrc-file
572 :text "machine foo login bob password a\n"
573 (let* ((auth-sources (list netrc-file))
574 (auth-source-do-cache nil)
575 (results (auth-source-search :host "foo" :require '(:user))))
576 (dolist (result results)
577 (setf (plist-get result :secret) (auth-info-password result)))
578 (should (equal results '((:host "foo" :user "bob" :secret "a")))))))
579
580(ert-deftest auth-source-pass-extra-query-keywords--req-param ()
581 (let ((auth-source-pass-extra-query-keywords t))
582 (auth-source-pass--with-store '(("foo/bob" (secret . "a")))
583 (auth-source-pass-enable)
584 (let ((results (auth-source-search :host "foo" :require '(:user))))
585 (dolist (result results)
586 (setf (plist-get result :secret) (auth-info-password result)))
587 (should (equal results '((:host "foo" :user "bob" :secret "a"))))))))
588
551;; No entry has the requested port, but :port is required, so search fails. 589;; No entry has the requested port, but :port is required, so search fails.
552 590
553(ert-deftest auth-source-pass-extra-query-keywords--wild-port-req-miss-netrc () 591(ert-deftest auth-source-pass-extra-query-keywords--wild-port-req-miss-netrc ()
@@ -629,14 +667,22 @@ machine Libera.Chat password b
629 '((:host "Libera.Chat" :secret "b"))))))) 667 '((:host "Libera.Chat" :secret "b")))))))
630 668
631 669
632;; A retrieved store entry mustn't be nil regardless of whether its 670;; An effectively empty entry in the store returns nothing but the
633;; path contains port or user components. 671;; :host field matching the given host parameter.
672
673(ert-deftest auth-source-pass-extra-query-keywords--netrc-baseline ()
674 (ert-with-temp-file netrc-file
675 :text "machine foo\n"
676 (let* ((auth-sources (list netrc-file))
677 (auth-source-do-cache nil)
678 (results (auth-source-search :host "foo")))
679 (should (equal results '((:host "foo")))))))
634 680
635(ert-deftest auth-source-pass-extra-query-keywords--baseline () 681(ert-deftest auth-source-pass-extra-query-keywords--baseline ()
636 (let ((auth-source-pass-extra-query-keywords t)) 682 (let ((auth-source-pass-extra-query-keywords t))
637 (auth-source-pass--with-store '(("x.com")) 683 (auth-source-pass--with-store '(("foo"))
638 (auth-source-pass-enable) 684 (auth-source-pass-enable)
639 (should-not (auth-source-search :host "x.com"))))) 685 (should (equal (auth-source-search :host "foo") '((:host "foo")))))))
640 686
641;; Output port type (int or string) matches that of input parameter. 687;; Output port type (int or string) matches that of input parameter.
642 688