Skip to content

Commit

Permalink
Fixed flash to not wipe out session if session is not set in response
Browse files Browse the repository at this point in the history
  • Loading branch information
weavejester committed Jul 4, 2010
1 parent 358c701 commit 0e31fa5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
7 changes: 4 additions & 3 deletions ring-core/src/ring/middleware/flash.clj
Expand Up @@ -15,6 +15,7 @@
:flash flash) :flash flash)
response (handler request) response (handler request)
session (if-let [flash (response :flash)] session (if-let [flash (response :flash)]
(assoc (response :session) :_flash flash) (assoc (response :session session) :_flash flash))]
session)] (if (or session (contains? response :session))
(assoc response :session session)))) (assoc response :session session)
response))))
12 changes: 12 additions & 0 deletions ring-core/test/ring/middleware/flash_test.clj
Expand Up @@ -22,3 +22,15 @@
response (handler {:session {:_flash message}})] response (handler {:session {:_flash message}})]
(is (nil? (:flash response))) (is (nil? (:flash response)))
(is (nil? (-> response :session :_flash))))) (is (nil? (-> response :session :_flash)))))

(deftest flash-doesnt-wipe-session
(let [message {:error "Could not save"}
handler (wrap-flash (constantly {:flash message}))
response (handler {:session {:foo "bar"}})]
(is (= (:session response) {:foo "bar", :_flash message}))))

(deftest flash-overwrites-nil-session
(let [message {:error "Could not save"}
handler (wrap-flash (constantly {:flash message, :session nil}))
response (handler {:session {:foo "bar"}})]
(is (= (:session response) {:_flash message}))))

0 comments on commit 0e31fa5

Please sign in to comment.