Last active
December 10, 2015 18:58
-
-
Save craigbro/4477860 to your computer and use it in GitHub Desktop.
example for clj-http wrapper for testing web apps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn test-url [url & {:keys [login password require-auth] | |
:or {login "admin" | |
password "cha" | |
require-auth true}}] | |
(let [sess (session-for-root root-url)] | |
(when require-auth | |
(is (= (normalize-url sess "/login") | |
(last (:trace-redirects | |
(:last-response (session-get sess url))))) | |
"Request not redirected to login when unauthenticated.")) | |
(-> (session-login sess login password) | |
(session-get url) | |
(is-success)))) | |
(defn session-login [session login password] | |
(-> session | |
;; hit the login page | |
(session-get "/login") | |
;; save our cookie! | |
(preserve-cookies) | |
;; capture the csrf token | |
(session-set :csrf-token | |
(last-response) | |
:body | |
(ensoup) | |
(select-first "#_csrf-token") | |
(get-attr "value")) | |
;; now post to login to authenticate that session | |
(->> | |
((fn [s] | |
(session-post s "/login" | |
{:multipart | |
{"_csrf-token" | |
(:csrf-token s) | |
"login" login | |
"password" password} | |
})))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment