diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/auth-source-pass-tests.el | 264 |
1 files changed, 160 insertions, 104 deletions
diff --git a/test/lisp/auth-source-pass-tests.el b/test/lisp/auth-source-pass-tests.el index 1539d9611f6..2c28f799453 100644 --- a/test/lisp/auth-source-pass-tests.el +++ b/test/lisp/auth-source-pass-tests.el | |||
| @@ -63,14 +63,19 @@ | |||
| 63 | This function is intended to be set to `auth-source-debug`." | 63 | This function is intended to be set to `auth-source-debug`." |
| 64 | (add-to-list 'auth-source-pass--debug-log (apply #'format msg) t)) | 64 | (add-to-list 'auth-source-pass--debug-log (apply #'format msg) t)) |
| 65 | 65 | ||
| 66 | (defvar auth-source-pass--parse-log nil) | ||
| 67 | |||
| 66 | (defmacro auth-source-pass--with-store (store &rest body) | 68 | (defmacro auth-source-pass--with-store (store &rest body) |
| 67 | "Use STORE as password-store while executing BODY." | 69 | "Use STORE as password-store while executing BODY." |
| 68 | (declare (indent 1)) | 70 | (declare (indent 1)) |
| 69 | `(cl-letf (((symbol-function 'auth-source-pass-parse-entry) (lambda (entry) (cdr (cl-find entry ,store :key #'car :test #'string=))) ) | 71 | `(cl-letf (((symbol-function 'auth-source-pass-parse-entry) |
| 70 | ((symbol-function 'auth-source-pass-entries) (lambda () (mapcar #'car ,store))) | 72 | (lambda (entry) |
| 71 | ((symbol-function 'auth-source-pass--entry-valid-p) (lambda (_entry) t))) | 73 | (add-to-list 'auth-source-pass--parse-log entry) |
| 74 | (cdr (cl-find entry ,store :key #'car :test #'string=)))) | ||
| 75 | ((symbol-function 'auth-source-pass-entries) (lambda () (mapcar #'car ,store)))) | ||
| 72 | (let ((auth-source-debug #'auth-source-pass--debug) | 76 | (let ((auth-source-debug #'auth-source-pass--debug) |
| 73 | (auth-source-pass--debug-log nil)) | 77 | (auth-source-pass--debug-log nil) |
| 78 | (auth-source-pass--parse-log nil)) | ||
| 74 | ,@body))) | 79 | ,@body))) |
| 75 | 80 | ||
| 76 | (ert-deftest auth-source-pass-any-host () | 81 | (ert-deftest auth-source-pass-any-host () |
| @@ -88,125 +93,184 @@ This function is intended to be set to `auth-source-debug`." | |||
| 88 | ("bar")) | 93 | ("bar")) |
| 89 | (should-not (auth-source-pass-search :host "baz")))) | 94 | (should-not (auth-source-pass-search :host "baz")))) |
| 90 | 95 | ||
| 96 | (ert-deftest auth-source-pass-find-match-minimal-parsing () | ||
| 97 | (let ((store-contents | ||
| 98 | '(("baz" ("secret" . "baz password")) | ||
| 99 | ("baz:123" ("secret" . "baz:123 password")) | ||
| 100 | ("baz/foo" ("secret" . "baz/foo password")) | ||
| 101 | ("foo@baz" ("secret" . "foo@baz password")) | ||
| 102 | ("baz:123/foo" ("secret" . "baz:123/foo password")) | ||
| 103 | ("foo@baz:123" ("secret" . "foo@baz:123 password")) | ||
| 104 | ("bar.baz" ("secret" . "bar.baz password")) | ||
| 105 | ("bar.baz:123" ("secret" . "bar.baz:123 password")) | ||
| 106 | ("bar.baz/foo" ("secret" . "bar.baz/foo password")) | ||
| 107 | ("foo@bar.baz" ("secret" . "foo@bar.baz password")) | ||
| 108 | ("bar.baz:123/foo" ("secret" . "bar.baz:123/foo password")) | ||
| 109 | ("foo@bar.baz:123" ("secret" . "foo@bar.baz:123 password"))))) | ||
| 110 | (auth-source-pass--with-store store-contents | ||
| 111 | (auth-source-pass--find-match "bar.baz" "foo" "123") | ||
| 112 | (should (equal auth-source-pass--parse-log '("foo@bar.baz:123")))) | ||
| 113 | (auth-source-pass--with-store store-contents | ||
| 114 | (auth-source-pass--find-match "bar.baz" "foo" nil) | ||
| 115 | (should (equal auth-source-pass--parse-log '("foo@bar.baz")))) | ||
| 116 | (auth-source-pass--with-store store-contents | ||
| 117 | (auth-source-pass--find-match "bar.baz" nil "123") | ||
| 118 | (should (equal auth-source-pass--parse-log '("bar.baz:123")))) | ||
| 119 | (auth-source-pass--with-store store-contents | ||
| 120 | (auth-source-pass--find-match "bar.baz" nil nil) | ||
| 121 | (should (equal auth-source-pass--parse-log '("bar.baz")))) | ||
| 122 | (auth-source-pass--with-store store-contents | ||
| 123 | (auth-source-pass--find-match "baz" nil nil) | ||
| 124 | (should (equal auth-source-pass--parse-log '("baz")))))) | ||
| 91 | 125 | ||
| 92 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name () | 126 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name () |
| 93 | (auth-source-pass--with-store '(("foo")) | 127 | (auth-source-pass--with-store |
| 94 | (should (equal (auth-source-pass--find-match "foo" nil nil) | 128 | '(("foo" ("secret" . "foo password"))) |
| 95 | "foo")))) | 129 | (let ((result (auth-source-pass--find-match "foo" nil nil))) |
| 130 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 131 | "foo password"))))) | ||
| 96 | 132 | ||
| 97 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-part () | 133 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-part () |
| 98 | (auth-source-pass--with-store '(("foo")) | 134 | (auth-source-pass--with-store |
| 99 | (should (equal (auth-source-pass--find-match "https://foo" nil nil) | 135 | '(("foo" ("secret" . "foo password"))) |
| 100 | "foo")))) | 136 | (let ((result (auth-source-pass--find-match "https://foo" nil nil))) |
| 137 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 138 | "foo password"))))) | ||
| 101 | 139 | ||
| 102 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-ignoring-user () | 140 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-ignoring-user () |
| 103 | (auth-source-pass--with-store '(("foo")) | 141 | (auth-source-pass--with-store |
| 104 | (should (equal (auth-source-pass--find-match "https://SomeUser@foo" nil nil) | 142 | '(("foo" ("secret" . "foo password"))) |
| 105 | "foo")))) | 143 | (let ((result (auth-source-pass--find-match "https://SomeUser@foo" nil nil))) |
| 144 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 145 | "foo password"))))) | ||
| 106 | 146 | ||
| 107 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-with-user () | 147 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-with-user () |
| 108 | (auth-source-pass--with-store '(("SomeUser@foo")) | 148 | (auth-source-pass--with-store |
| 109 | (should (equal (auth-source-pass--find-match "https://SomeUser@foo" nil nil) | 149 | '(("SomeUser@foo" ("secret" . "SomeUser@foo password"))) |
| 110 | "SomeUser@foo")))) | 150 | (let ((result (auth-source-pass--find-match "https://SomeUser@foo" nil nil))) |
| 151 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 152 | "SomeUser@foo password"))))) | ||
| 111 | 153 | ||
| 112 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-prefer-full () | 154 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-prefer-full () |
| 113 | (auth-source-pass--with-store '(("SomeUser@foo") ("foo")) | 155 | (auth-source-pass--with-store |
| 114 | (should (equal (auth-source-pass--find-match "https://SomeUser@foo" nil nil) | 156 | '(("SomeUser@foo" ("secret" . "SomeUser@foo password")) |
| 115 | "SomeUser@foo")))) | 157 | ("foo" ("secret" . "foo password"))) |
| 158 | (let ((result (auth-source-pass--find-match "https://SomeUser@foo" nil nil))) | ||
| 159 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 160 | "SomeUser@foo password"))))) | ||
| 116 | 161 | ||
| 117 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-prefer-full-reversed () | 162 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-prefer-full-reversed () |
| 118 | (auth-source-pass--with-store '(("foo") ("SomeUser@foo")) | 163 | (auth-source-pass--with-store |
| 119 | (should (equal (auth-source-pass--find-match "https://SomeUser@foo" nil nil) | 164 | '(("foo" ("secret" . "foo password")) |
| 120 | "SomeUser@foo")))) | 165 | ("SomeUser@foo" ("secret" . "SomeUser@foo password"))) |
| 121 | 166 | (let ((result (auth-source-pass--find-match "https://SomeUser@foo" nil nil))) | |
| 122 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-without-subdomain () | 167 | (should (equal (auth-source-pass--get-attr "secret" result) |
| 168 | "SomeUser@foo password"))))) | ||
| 169 | |||
| 170 | (ert-deftest auth-source-pass-matching-entries-name-without-subdomain () | ||
| 123 | (auth-source-pass--with-store '(("bar.com")) | 171 | (auth-source-pass--with-store '(("bar.com")) |
| 124 | (should (equal (auth-source-pass--find-match "foo.bar.com" nil nil) | 172 | (should (equal (auth-source-pass--matching-entries "foo.bar.com" nil nil) |
| 125 | "bar.com")))) | 173 | '(nil ("bar.com") nil))))) |
| 126 | 174 | ||
| 127 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-without-subdomain-with-user () | 175 | (ert-deftest auth-source-pass-matching-entries-name-without-subdomain-with-user () |
| 128 | (auth-source-pass--with-store '(("someone@bar.com")) | 176 | (auth-source-pass--with-store '(("someone@bar.com")) |
| 129 | (should (equal (auth-source-pass--find-match "foo.bar.com" "someone" nil) | 177 | (should (equal (auth-source-pass--matching-entries "foo.bar.com" "someone" nil) |
| 130 | "someone@bar.com")))) | 178 | '(nil nil nil ("someone@bar.com") nil nil nil nil nil))))) |
| 131 | 179 | ||
| 132 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-without-subdomain-with-bad-user () | 180 | (ert-deftest auth-source-pass-matching-entries-name-without-subdomain-with-bad-user () |
| 133 | (auth-source-pass--with-store '(("someoneelse@bar.com")) | 181 | (auth-source-pass--with-store '(("someoneelse@bar.com")) |
| 134 | (should (equal (auth-source-pass--find-match "foo.bar.com" "someone" nil) | 182 | (should (equal (auth-source-pass--matching-entries "foo.bar.com" "someone" nil) |
| 135 | nil)))) | 183 | '(nil nil nil nil nil nil nil nil nil))))) |
| 136 | 184 | ||
| 137 | (ert-deftest auth-source-pass-find-match-matching-at-entry-name-without-subdomain-prefer-full () | 185 | (ert-deftest auth-source-pass-matching-entries-name-without-subdomain-prefer-full () |
| 138 | (auth-source-pass--with-store '(("bar.com") ("foo.bar.com")) | 186 | (auth-source-pass--with-store '(("bar.com") ("foo.bar.com")) |
| 139 | (should (equal (auth-source-pass--find-match "foo.bar.com" nil nil) | 187 | (should (equal (auth-source-pass--matching-entries "foo.bar.com" nil nil) |
| 140 | "foo.bar.com")))) | 188 | '(("foo.bar.com") ("bar.com") nil))))) |
| 141 | 189 | ||
| 142 | (ert-deftest auth-source-pass-dont-match-at-folder-name () | 190 | (ert-deftest auth-source-pass-dont-match-at-folder-name () |
| 143 | (auth-source-pass--with-store '(("foo.bar.com/foo")) | 191 | (auth-source-pass--with-store '(("foo.bar.com/foo")) |
| 144 | (should (equal (auth-source-pass--find-match "foo.bar.com" nil nil) | 192 | (should (equal (auth-source-pass--matching-entries "foo.bar.com" nil nil) |
| 145 | nil)))) | 193 | '(nil nil nil))))) |
| 146 | 194 | ||
| 147 | (ert-deftest auth-source-pass-find-match-matching-host-port-and-subdir-user () | 195 | (ert-deftest auth-source-pass-matching-entries-host-port-and-subdir-user () |
| 148 | (auth-source-pass--with-store '(("bar.com:443/someone")) | 196 | (auth-source-pass--with-store '(("bar.com:443/someone")) |
| 149 | (should (equal (auth-source-pass--find-match "bar.com" "someone" "443") | 197 | (should (equal (auth-source-pass--matching-entries "bar.com" "someone" "443") |
| 150 | "bar.com:443/someone")))) | 198 | '(nil ("bar.com:443/someone") nil nil nil nil |
| 199 | nil nil nil nil nil nil))))) | ||
| 151 | 200 | ||
| 152 | (ert-deftest auth-source-pass-find-match-matching-host-port-and-subdir-user-with-custom-separator () | 201 | (ert-deftest auth-source-pass-matching-entries-host-port-and-subdir-user-with-custom-separator () |
| 153 | (let ((auth-source-pass-port-separator "#")) | 202 | (let ((auth-source-pass-port-separator "#")) |
| 154 | (auth-source-pass--with-store '(("bar.com#443/someone")) | 203 | (auth-source-pass--with-store '(("bar.com#443/someone")) |
| 155 | (should (equal (auth-source-pass--find-match "bar.com" "someone" "443") | 204 | (should (equal (auth-source-pass--matching-entries "bar.com" "someone" "443") |
| 156 | "bar.com#443/someone"))))) | 205 | '(nil ("bar.com#443/someone") nil nil nil nil |
| 157 | 206 | nil nil nil nil nil nil)))))) | |
| 158 | (ert-deftest auth-source-pass-find-match-matching-extracting-user-from-host () | 207 | |
| 159 | (auth-source-pass--with-store '(("foo.com/bar")) | 208 | (ert-deftest auth-source-pass-matching-entries-extracting-user-from-host () |
| 160 | (should (equal (auth-source-pass--find-match "https://bar@foo.com" nil nil) | 209 | (auth-source-pass--with-store |
| 161 | "foo.com/bar")))) | 210 | '(("foo.com/bar" ("secret" . "foo.com/bar password"))) |
| 162 | 211 | (let ((result (auth-source-pass--find-match "https://bar@foo.com" nil nil))) | |
| 163 | (ert-deftest auth-source-pass-search-with-user-first () | 212 | (should (equal (auth-source-pass--get-attr "secret" result) |
| 213 | "foo.com/bar password"))))) | ||
| 214 | |||
| 215 | (ert-deftest auth-source-pass-matching-entries-with-user-first () | ||
| 164 | (auth-source-pass--with-store '(("foo") ("user@foo")) | 216 | (auth-source-pass--with-store '(("foo") ("user@foo")) |
| 165 | (should (equal (auth-source-pass--find-match "foo" "user" nil) | 217 | (should (equal (auth-source-pass--matching-entries "foo" "user" nil) |
| 166 | "user@foo")) | 218 | '(("user@foo") nil ("foo")))) |
| 167 | (auth-source-pass--should-have-message-containing "Found 1 match"))) | 219 | (auth-source-pass--should-have-message-containing "found: (\"user@foo\" \"foo\""))) |
| 168 | 220 | ||
| 169 | (ert-deftest auth-source-pass-give-priority-to-desired-user () | 221 | (ert-deftest auth-source-pass-give-priority-to-desired-user () |
| 170 | (auth-source-pass--with-store '(("foo") ("subdir/foo" ("user" . "someone"))) | 222 | (auth-source-pass--with-store |
| 171 | (should (equal (auth-source-pass--find-match "foo" "someone" nil) | 223 | '(("foo" ("secret" . "foo password")) |
| 172 | "subdir/foo")) | 224 | ("subdir/foo" ("secret" . "subdir/foo password") ("user" . "someone"))) |
| 173 | (auth-source-pass--should-have-message-containing "Found 2 matches") | 225 | (let ((result (auth-source-pass--find-match "foo" "someone" nil))) |
| 174 | (auth-source-pass--should-have-message-containing "matching user field"))) | 226 | (should (equal (auth-source-pass--get-attr "secret" result) |
| 227 | "subdir/foo password")) | ||
| 228 | (should (equal (auth-source-pass--get-attr "user" result) | ||
| 229 | "someone"))) | ||
| 230 | (auth-source-pass--should-have-message-containing "found: (\"foo\" \"subdir/foo\""))) | ||
| 175 | 231 | ||
| 176 | (ert-deftest auth-source-pass-give-priority-to-desired-user-reversed () | 232 | (ert-deftest auth-source-pass-give-priority-to-desired-user-reversed () |
| 177 | (auth-source-pass--with-store '(("foo" ("user" . "someone")) ("subdir/foo")) | 233 | (auth-source-pass--with-store |
| 178 | (should (equal (auth-source-pass--find-match "foo" "someone" nil) | 234 | '(("foo" ("secret" . "foo password") ("user" . "someone")) |
| 179 | "foo")) | 235 | ("subdir/foo" ("secret" . "subdir/foo password"))) |
| 180 | (auth-source-pass--should-have-message-containing "Found 2 matches") | 236 | (let ((result (auth-source-pass--find-match "foo" "someone" nil))) |
| 181 | (auth-source-pass--should-have-message-containing "matching user field"))) | 237 | (should (equal (auth-source-pass--get-attr "secret" result) |
| 238 | "foo password"))) | ||
| 239 | (auth-source-pass--should-have-message-containing "found: (\"foo\" \"subdir/foo\""))) | ||
| 182 | 240 | ||
| 183 | (ert-deftest auth-source-pass-return-first-when-several-matches () | 241 | (ert-deftest auth-source-pass-return-first-when-several-matches () |
| 184 | (auth-source-pass--with-store '(("foo") ("subdir/foo")) | 242 | (auth-source-pass--with-store |
| 185 | (should (equal (auth-source-pass--find-match "foo" nil nil) | 243 | '(("foo" ("secret" . "foo password")) |
| 186 | "foo")) | 244 | ("subdir/foo" ("secret" . "subdir/foo password"))) |
| 187 | (auth-source-pass--should-have-message-containing "Found 2 matches") | 245 | (let ((result (auth-source-pass--find-match "foo" nil nil))) |
| 188 | (auth-source-pass--should-have-message-containing "the first one"))) | 246 | (should (equal (auth-source-pass--get-attr "secret" result) |
| 189 | 247 | "foo password"))) | |
| 190 | (ert-deftest auth-source-pass-make-divansantana-happy () | 248 | (auth-source-pass--should-have-message-containing "found: (\"foo\" \"subdir/foo\""))) |
| 249 | |||
| 250 | (ert-deftest auth-source-pass-matching-entries-make-divansantana-happy () | ||
| 191 | (auth-source-pass--with-store '(("host.com")) | 251 | (auth-source-pass--with-store '(("host.com")) |
| 192 | (should (equal (auth-source-pass--find-match "smtp.host.com" "myusername@host.co.za" nil) | 252 | (should (equal (auth-source-pass--matching-entries "smtp.host.com" "myusername@host.co.za" nil) |
| 193 | "host.com")))) | 253 | '(nil nil nil nil nil ("host.com") nil nil nil))))) |
| 194 | 254 | ||
| 195 | (ert-deftest auth-source-pass-find-host-without-port () | 255 | (ert-deftest auth-source-pass-find-host-without-port () |
| 196 | (auth-source-pass--with-store '(("host.com")) | 256 | (auth-source-pass--with-store |
| 197 | (should (equal (auth-source-pass--find-match "host.com:8888" "someuser" nil) | 257 | '(("host.com" ("secret" . "host.com password"))) |
| 198 | "host.com")))) | 258 | (let ((result (auth-source-pass--find-match "host.com:8888" "someuser" nil))) |
| 259 | (should (equal (auth-source-pass--get-attr "secret" result) | ||
| 260 | "host.com password"))))) | ||
| 199 | 261 | ||
| 200 | (ert-deftest auth-source-pass-find-host-with-port () | 262 | (ert-deftest auth-source-pass-matching-entries-host-with-port () |
| 201 | (auth-source-pass--with-store '(("host.com:443")) | 263 | (auth-source-pass--with-store '(("host.com:443")) |
| 202 | (should (equal (auth-source-pass--find-match "host.com" "someuser" "443") | 264 | (should (equal (auth-source-pass--matching-entries "host.com" "someuser" "443") |
| 203 | "host.com:443")))) | 265 | '(nil nil nil nil ("host.com:443") nil |
| 266 | nil nil nil nil nil nil))))) | ||
| 204 | 267 | ||
| 205 | (ert-deftest auth-source-pass-find-host-with-custom-port-separator () | 268 | (ert-deftest auth-source-pass-matching-entries-with-custom-port-separator () |
| 206 | (let ((auth-source-pass-port-separator "#")) | 269 | (let ((auth-source-pass-port-separator "#")) |
| 207 | (auth-source-pass--with-store '(("host.com#443")) | 270 | (auth-source-pass--with-store '(("host.com#443")) |
| 208 | (should (equal (auth-source-pass--find-match "host.com" "someuser" "443") | 271 | (should (equal (auth-source-pass--matching-entries "host.com" "someuser" "443") |
| 209 | "host.com#443"))))) | 272 | '(nil nil nil nil ("host.com#443") nil |
| 273 | nil nil nil nil nil nil)))))) | ||
| 210 | 274 | ||
| 211 | (defmacro auth-source-pass--with-store-find-foo (store &rest body) | 275 | (defmacro auth-source-pass--with-store-find-foo (store &rest body) |
| 212 | "Use STORE while executing BODY. \"foo\" is the matched entry." | 276 | "Use STORE while executing BODY. \"foo\" is the matched entry." |
| @@ -218,7 +282,8 @@ This function is intended to be set to `auth-source-debug`." | |||
| 218 | ,@body))) | 282 | ,@body))) |
| 219 | 283 | ||
| 220 | (ert-deftest auth-source-pass-build-result-return-parameters () | 284 | (ert-deftest auth-source-pass-build-result-return-parameters () |
| 221 | (auth-source-pass--with-store-find-foo '(("foo")) | 285 | (auth-source-pass--with-store-find-foo |
| 286 | '(("foo" ("secret" . "foo password"))) | ||
| 222 | (let ((result (auth-source-pass--build-result "foo" 512 "user"))) | 287 | (let ((result (auth-source-pass--build-result "foo" 512 "user"))) |
| 223 | (should (equal (plist-get result :port) 512)) | 288 | (should (equal (plist-get result :port) 512)) |
| 224 | (should (equal (plist-get result :user) "user"))))) | 289 | (should (equal (plist-get result :user) "user"))))) |
| @@ -238,7 +303,9 @@ This function is intended to be set to `auth-source-debug`." | |||
| 238 | (ert-deftest auth-source-pass-build-result-passes-full-host-to-find-match () | 303 | (ert-deftest auth-source-pass-build-result-passes-full-host-to-find-match () |
| 239 | (let (passed-host) | 304 | (let (passed-host) |
| 240 | (cl-letf (((symbol-function 'auth-source-pass--find-match) | 305 | (cl-letf (((symbol-function 'auth-source-pass--find-match) |
| 241 | (lambda (host _user _port) (setq passed-host host)))) | 306 | (lambda (host _user _port) |
| 307 | (setq passed-host host) | ||
| 308 | nil))) | ||
| 242 | (auth-source-pass--build-result "https://user@host.com:123" nil nil) | 309 | (auth-source-pass--build-result "https://user@host.com:123" nil nil) |
| 243 | (should (equal passed-host "https://user@host.com:123")) | 310 | (should (equal passed-host "https://user@host.com:123")) |
| 244 | (auth-source-pass--build-result "https://user@host.com" nil nil) | 311 | (auth-source-pass--build-result "https://user@host.com" nil nil) |
| @@ -249,27 +316,16 @@ This function is intended to be set to `auth-source-debug`." | |||
| 249 | (should (equal passed-host "user@host.com:443"))))) | 316 | (should (equal passed-host "user@host.com:443"))))) |
| 250 | 317 | ||
| 251 | (ert-deftest auth-source-pass-only-return-entries-that-can-be-open () | 318 | (ert-deftest auth-source-pass-only-return-entries-that-can-be-open () |
| 252 | (cl-letf (((symbol-function 'auth-source-pass-entries) | 319 | (auth-source-pass--with-store |
| 253 | (lambda () '("foo.site.com" "bar.site.com" "mail/baz.site.com/scott"))) | 320 | '(("foo.site.com" ("secret" . "foo.site.com password")) |
| 254 | ((symbol-function 'auth-source-pass--entry-valid-p) | 321 | ("bar.site.com") ; An entry name with no data is invalid |
| 255 | ;; only foo.site.com and "mail/baz.site.com/scott" are valid | 322 | ("mail/baz.site.com/scott" ("secret" . "mail/baz.site.com/scott password"))) |
| 256 | (lambda (entry) (member entry '("foo.site.com" "mail/baz.site.com/scott"))))) | 323 | (should (equal (auth-source-pass--find-match "foo.site.com" "someuser" nil) |
| 257 | (should (equal (auth-source-pass--find-all-by-entry-name "foo.site.com" "someuser") | 324 | '(("secret" . "foo.site.com password")))) |
| 258 | '("foo.site.com"))) | 325 | (should (equal (auth-source-pass--find-match "bar.site.com" "someuser" nil) |
| 259 | (should (equal (auth-source-pass--find-all-by-entry-name "bar.site.com" "someuser") | 326 | nil)) |
| 260 | '())) | 327 | (should (equal (auth-source-pass--find-match "baz.site.com" "scott" nil) |
| 261 | (should (equal (auth-source-pass--find-all-by-entry-name "baz.site.com" "scott") | 328 | '(("secret" . "mail/baz.site.com/scott password")))))) |
| 262 | '("mail/baz.site.com/scott"))))) | ||
| 263 | |||
| 264 | (ert-deftest auth-source-pass-entry-is-not-valid-when-unreadable () | ||
| 265 | (cl-letf (((symbol-function 'auth-source-pass--read-entry) | ||
| 266 | (lambda (entry) | ||
| 267 | ;; only foo is a valid entry | ||
| 268 | (if (string-equal entry "foo") | ||
| 269 | "password" | ||
| 270 | nil)))) | ||
| 271 | (should (auth-source-pass--entry-valid-p "foo")) | ||
| 272 | (should-not (auth-source-pass--entry-valid-p "bar")))) | ||
| 273 | 329 | ||
| 274 | (ert-deftest auth-source-pass-can-start-from-auth-source-search () | 330 | (ert-deftest auth-source-pass-can-start-from-auth-source-search () |
| 275 | (auth-source-pass--with-store '(("gitlab.com" ("user" . "someone"))) | 331 | (auth-source-pass--with-store '(("gitlab.com" ("user" . "someone"))) |