Skip to content

Instantly share code, notes, and snippets.

@craigbro
Last active December 10, 2015 18:58
Show Gist options
  • Save craigbro/4477860 to your computer and use it in GitHub Desktop.
Save craigbro/4477860 to your computer and use it in GitHub Desktop.
example for clj-http wrapper for testing web apps
(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