delete-session now also calls on-expiry when it deletes something

This commit is contained in:
Gered 2022-01-04 19:20:17 -05:00
parent 1384c52d75
commit 8228408082
2 changed files with 25 additions and 1 deletions

View file

@ -113,7 +113,15 @@
key))
(delete-session [_ key]
(swap! session-atom dissoc key)
(if on-expiry
; if we have an on-expiry listener, we need to check if we actually removed the entry
; and then call on-expiry
(let [[old new] (swap-vals! session-atom dissoc key)]
(if (and (contains? old key)
(not (contains? new key)))
(on-expiry key (-> old (get key) :value) :deleted)))
; if there's no on-expiry listener, just do the delete
(swap! session-atom dissoc key))
nil))
(defn- sweeper-thread

View file

@ -320,4 +320,20 @@
(is (>= keep-time-diff 800))))
(stop as)))
(deftest expiry-listener-triggered-when-delete-session-removes-entry
(let [expired (atom nil)
as (aging-memory-store 1 {:on-expiry #(reset! expired [%1 %2 %3])})]
(write-session as "foo" {:foo 1})
(is (= (read-session as "foo") {:foo 1}))
(is (nil? @expired))
(delete-session as "foo")
(is (= ["foo" {:foo 1} :deleted] @expired))
(is (nil? (read-session as "foo")))))
(deftest expiry-listener-not-triggered-when-delete-session-called-for-non-existent-key
(let [expired (atom nil)
as (aging-memory-store 1 {:on-expiry #(reset! expired [%1 %2 %3])})]
(delete-session as "foo")
(is (nil? @expired))))
#_(run-tests)