blob: 0e3079319549bf0f72a7865c57e7e9ae2b77313c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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"}))))
|