From 2ca092c7dbab8ae84ad5020d16f82861dbcf62ba Mon Sep 17 00:00:00 2001 From: Ashley Ellis Date: Fri, 3 Feb 2017 15:24:34 -0500 Subject: [PATCH] Only add namespace the first time a key is created Otherwise the namespace is appended each time the session is updated --- lib/redbird/plug/session/redis.ex | 9 ++++----- test/mix/tasks/redbird/delete_all_sessions_test.exs | 11 ++++++----- test/redbird_test.exs | 11 +++++------ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/lib/redbird/plug/session/redis.ex b/lib/redbird/plug/session/redis.ex index d7459ec..4f2cde0 100644 --- a/lib/redbird/plug/session/redis.ex +++ b/lib/redbird/plug/session/redis.ex @@ -22,16 +22,15 @@ defmodule Plug.Session.REDIS do end def put(conn, nil, data, init_options) do - put(conn, generate_random_key(), data, init_options) + put(conn, add_namespace(generate_random_key()), data, init_options) end - def put(_conn, redis_key, data, init_options) do - key = add_namespace(redis_key) + def put(_conn, namespaced_key, data, init_options) do setex(%{ - key: key, + key: namespaced_key, value: data, seconds: session_expiration(init_options) }) - key + namespaced_key end def delete(_conn, redis_key, _kinit_options) do diff --git a/test/mix/tasks/redbird/delete_all_sessions_test.exs b/test/mix/tasks/redbird/delete_all_sessions_test.exs index 6bab3cd..630b6a0 100644 --- a/test/mix/tasks/redbird/delete_all_sessions_test.exs +++ b/test/mix/tasks/redbird/delete_all_sessions_test.exs @@ -9,10 +9,11 @@ defmodule Mix.Tasks.Redbird.DeleteAllSessionsTest do end test "deletes all redbird session keys" do - key = "redis_session" conn = %{} options = [] - REDIS.put(conn, key, %{foo: :bar}, options) + key = REDIS.put(conn, nil, %{foo: :bar}, options) + + Mix.Tasks.Redbird.DeleteAllSessions.run([]) assert {nil, %{}} = REDIS.get(conn, key, options) end @@ -20,12 +21,12 @@ defmodule Mix.Tasks.Redbird.DeleteAllSessionsTest do test "deletes user defined namespaced session keys" do Application.put_env(:redbird, :key_namespace, "test_") conn = %{} - key = "redis_session" options = [] - REDIS.put(conn, key, %{foo: :bar}, options) + key = REDIS.put(conn, nil, %{foo: :bar}, options) Mix.Tasks.Redbird.DeleteAllSessions.run([]) - assert {nil, %{}} = REDIS.get(conn, "test_" <> key, options) + assert {nil, %{}} = REDIS.get(conn, key, options) + Application.delete_env(:redbird, :key_namespace) end end diff --git a/test/redbird_test.exs b/test/redbird_test.exs index a84471a..4a79290 100644 --- a/test/redbird_test.exs +++ b/test/redbird_test.exs @@ -100,11 +100,10 @@ defmodule RedbirdTest do test "redbird_session is appended to key names by default" do conn = %{} - key = "redis_session" options = [] - REDIS.put(conn, key, %{foo: :bar}, options) + key = REDIS.put(conn, nil, %{foo: :bar}, options) - assert {"redbird_session_redis_session", %{foo: :bar}} = REDIS.get(conn, "redbird_session_" <> key, options) + assert key =~ "redbird_session_" end test "user can set their own key namespace" do @@ -112,10 +111,10 @@ defmodule RedbirdTest do Redbird.Redis.keys("test_*") |> Redbird.Redis.del conn = %{} - key = "redis_session" options = [] - REDIS.put(conn, key, %{foo: :bar}, options) + key = REDIS.put(conn, nil, %{foo: :bar}, options) - assert {"test_redis_session", %{foo: :bar}} = REDIS.get(conn, "test_" <> key, options) + assert key =~ "test_" + Application.delete_env(:redbird, :key_namespace) end end