summaryrefslogtreecommitdiff
path: root/compojure-3.2/test/compojure/http/session_test.clj
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-02-10 01:08:44 -0500
committersostler <sbostler@gmail.com>2010-02-10 01:08:44 -0500
commitd3fcf8d56122514c3dcbac004fcf105a4e899352 (patch)
tree484ded214ddba3a6cc44e40d129fe1fc403e91fc /compojure-3.2/test/compojure/http/session_test.clj
parent079e2e9c1d3d5fb0f19515bfb566864565c43213 (diff)
Added custom compojure tree
Diffstat (limited to 'compojure-3.2/test/compojure/http/session_test.clj')
-rwxr-xr-xcompojure-3.2/test/compojure/http/session_test.clj73
1 files changed, 73 insertions, 0 deletions
diff --git a/compojure-3.2/test/compojure/http/session_test.clj b/compojure-3.2/test/compojure/http/session_test.clj
new file mode 100755
index 0000000..0e30793
--- /dev/null
+++ b/compojure-3.2/test/compojure/http/session_test.clj
@@ -0,0 +1,73 @@
+(ns compojure.http.session-test
+ (:use compojure.crypto
+ compojure.encodings
+ compojure.http.session
+ clojure.contrib.test-is)
+ (:import javax.crypto.spec.IvParameterSpec
+ javax.crypto.spec.SecretKeySpec))
+
+;; Memory sessions
+
+(deftest create-memory-session
+ (is (= (keys (create-session {:type :memory}))
+ [:id])))
+
+(deftest memory-session-cookie
+ (let [repo {:type :memory}
+ session (create-session repo)]
+ (is (= (session-cookie repo true session) (session :id)))
+ (is (nil? (session-cookie repo false session)))))
+
+(deftest read-memory-session
+ (binding [memory-sessions (ref {::mock-id ::mock-session})]
+ (is (= (read-session {:type :memory} ::mock-id)
+ ::mock-session))))
+
+(deftest write-memory-session
+ (binding [memory-sessions (ref {})]
+ (let [session (create-session {:type :memory})]
+ (write-session {:type :memory} session)
+ (is (= (memory-sessions (session :id))
+ session)))))
+
+(deftest destroy-memory-sessions
+ (let [mock-session {:id ::mock-id}]
+ (binding [memory-sessions (ref {::mock-id mock-session})]
+ (destroy-session {:type :memory} mock-session)
+ (is (not (contains? @memory-sessions ::mock-id))))))
+
+;; Cookie sessions
+
+(deftest create-cookie-session
+ (is (= (create-session {:type :cookie}) {})))
+
+;; Associating session with request
+
+(defmethod create-session ::mock [repository]
+ {:id :new})
+
+(defmethod read-session ::mock [repository id]
+ {:id :current})
+
+(deftest assoc-nil-session
+ (let [request (assoc-session {} {:type ::mock})]
+ (is (:new-session? request))
+ (is (= (:session request) {:id :new}))))
+
+(deftest assoc-expired-session
+ (let [session {:expires-at (timestamp-after 0)}
+ request (assoc-session {:session session} {:type ::mock})]
+ (is (:new-session? request))
+ (is (= (:session request) {:id :new}))))
+
+(deftest assoc-existing-session
+ (let [cookies {:compojure-session "current"}
+ request (assoc-session {:cookies cookies} {:type ::mock})]
+ (is (not (:new-session? request)))
+ (is (= (:session request) {:id :current}))))
+
+(deftest assoc-flash-data
+ (let [session {:flash {:message "test"}}
+ request (assoc-flash {:session session})]
+ (is (not (contains? (request :session) :flash)))
+ (is (= (request :flash) {:message "test"}))))