aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mastodon-auth.el19
-rw-r--r--test/mastodon-auth-tests.el16
2 files changed, 26 insertions, 9 deletions
diff --git a/lisp/mastodon-auth.el b/lisp/mastodon-auth.el
index 1f4adaf..a35dc5a 100644
--- a/lisp/mastodon-auth.el
+++ b/lisp/mastodon-auth.el
@@ -135,18 +135,21 @@ Authenticates with email address and password. Neither are not stored."
("password" . ,passwd)
("scope" . "read write follow")))))
+(defun mastodon-auth--token ()
+ "Return `mastodon--api-token-string'."
+ mastodon--api-token-string)
+
(defun mastodon--access-token ()
"Return `mastodon--api-token-string'.
If not set, retrieves token with `mastodon--get-access-token'."
- (if mastodon--api-token-string
- mastodon--api-token-string
- (progn
- (mastodon--get-access-token)
- (while (not mastodon--api-token-string)
- (sleep-for 1)
- (mastodon--access-token))
- mastodon--api-token-string)))
+ (or (mastodon-auth--token)
+ (progn
+ (mastodon--get-access-token)
+ (or (mastodon-auth--token)
+ (progn
+ (sleep-for 2)
+ (mastodon--access-token))))))
(provide 'mastodon-auth)
;;; mastodon-auth.el ends here
diff --git a/test/mastodon-auth-tests.el b/test/mastodon-auth-tests.el
index 6e8b10c..7c2bb0c 100644
--- a/test/mastodon-auth-tests.el
+++ b/test/mastodon-auth-tests.el
@@ -103,7 +103,7 @@
(mastodon--get-access-token-triage "status")))
(ert-deftest mastodon-auth:get-access-token ()
- "Should POST auth data to retreive access token."
+ "Should POST auth data to retrieve access token."
(let ((client-app '(:client_id "id" :client_secret "secret")))
(with-mock
(mock (mastodon-auth--user-and-passwd) => (cons "email" "password"))
@@ -117,3 +117,17 @@
("password" . "password")
("scope" . "read write follow"))))
(mastodon--get-access-token))))
+
+(ert-deftest mastodon-auth:access-token:memoized ()
+ "Should return `mastodon--api-token-string' if set."
+ (with-mock
+ (mock (mastodon-auth--token) => "foobar")
+ (should (string= (mastodon--access-token) "foobar"))))
+
+(ert-deftest mastodon-auth:access-token:generated ()
+ "Should generate `mastodon--api-token-string' if not memoized."
+ (with-mock
+ (mock (mastodon-auth--token) => nil)
+ (mock (mastodon--get-access-token)
+ => (mock (mastodon-auth--token) => "foobar"))
+ (should (string= (mastodon--access-token) "foobar"))))