* lisp/auth-source.el (auth-source-secrets-create): Use ´apply'.
(auth-source-secrets-saver): Handle `auth-source-save-behavior'
equal t.
* lisp/net/secrets.el (secrets-get-items): Do not call
`secrets-open-session' here ...
(top): ... but here.
* test/lisp/auth-source-tests.el
(auth-source-test-secrets-create-secret): Bind
`auth-source-save-behavior' to t. Cleanup.
* test/lisp/net/secrets-tests.el (secrets-test00-availability):
After loading secets.el, a session is already opened.
(secrets-test02-collections, secrets-test03-items)
(secrets-test04-search): Open a new session.
(secret (plist-get artificial :secret))
(secret (if (functionp secret) (funcall secret) secret)))
(lambda ()
- (apply 'auth-source-secrets-saver collection item secret args))))
+ (auth-source-secrets-saver collection item secret args))))
(list artificial)))
Respects `auth-source-save-behavior'."
(let ((prompt (format "Save auth info to secrets collection %s? " collection))
(done (not (eq auth-source-save-behavior 'ask)))
+ (doit (eq auth-source-save-behavior t))
(bufname "*auth-source Help*")
- doit k)
+ k)
(while (not done)
(setq k (auth-source-read-char-choice prompt '(?y ?n ?N ??)))
(cl-case k
(defun secrets-get-items (collection-path)
"Return the object paths of all available items in COLLECTION-PATH."
(unless (secrets-empty-path collection-path)
- (secrets-open-session)
(dbus-get-property
:session secrets-service collection-path
secrets-interface-collection "Items")))
(when (dbus-ping :session secrets-service 100)
+ (secrets-open-session)
+
;; We must reset all variables, when there is a new instance of the
;; "org.freedesktop.secrets" service.
(dbus-register-signal
;; The "session" collection is temporary for the lifetime of the
;; Emacs process. Therefore, we don't care to delete it.
(let ((auth-sources '((:source (:secrets "session"))))
+ (auth-source-save-behavior t)
(host (md5 (concat (prin1-to-string process-environment)
(current-time-string))))
(passwd (md5 (concat (prin1-to-string process-environment)
(funcall auth-passwd)
auth-passwd))
(should (string-equal (plist-get auth-info :user) (user-login-name)))
- (should (string-equal auth-passwd passwd))))
+ (should (string-equal (plist-get auth-info :host) host))
+ (should (string-equal auth-passwd passwd))
+
+ ;; Cleanup.
+ ;; Should use `auth-source-delete' when implemented for :secrets backend.
+ (secrets-delete-item
+ "session"
+ (format "%s@%s" (plist-get auth-info :user) (plist-get auth-info :host)))))
(provide 'auth-source-tests)
;;; auth-source-tests.el ends here
:expected-result (if secrets-enabled :passed :failed)
(should secrets-enabled)
(should (dbus-ping :session secrets-service))
- ;; We do not test when there's an open session.
- (should (secrets-empty-path secrets-session-path)))
+
+ ;; Exit.
+ (secrets--test-close-all-sessions))
(defun secrets--test-get-all-sessions ()
"Return all object paths for existing secrets sessions."
(unwind-protect
(progn
+ (should (secrets-open-session))
+
;; There must be at least the collections "Login" and "session".
(should (member "Login" (secrets-list-collections)))
(should (member "session" (secrets-list-collections)))
(unwind-protect
(let (item-path)
+ (should (secrets-open-session))
+
;; There shall be no items in the "session" collection.
(should-not (secrets-list-items "session"))
;; There shall be items in the "Login" collection.
(unwind-protect
(progn
+ (should (secrets-open-session))
+
;; There shall be no items in the "session" collection.
(should-not (secrets-list-items "session"))