@@ -127,4 +127,51 @@ defmodule Plug.SessionTest do
127127 opts = Plug.Session . init ( store: :ets , key: "foobar" , table: :some_table )
128128 assert opts . store == Plug.Session.ETS
129129 end
130+
131+ test "init_test_session/2" do
132+ conn = conn ( :get , "/" ) |> init_test_session ( foo: "bar" )
133+ assert get_session ( conn , :foo ) == "bar"
134+
135+ conn = fetch_session ( conn )
136+ assert get_session ( conn , :foo ) == "bar"
137+
138+ conn = put_session ( conn , :bar , "foo" )
139+ assert get_session ( conn , :bar ) == "foo"
140+
141+ conn = delete_session ( conn , :bar )
142+ refute get_session ( conn , :bar )
143+
144+ conn = clear_session ( conn )
145+ refute get_session ( conn , :foo )
146+ end
147+
148+ test "init_test_session/2 merges values when called after Plug.Session" do
149+ conn = conn ( :get , "/" ) |> fetch_cookies
150+
151+ opts = Plug.Session . init ( store: ProcessStore , key: "foobar" )
152+ conn = Plug.Session . call ( conn , opts ) |> fetch_session
153+ conn = conn |> put_session ( :foo , "bar" ) |> put_session ( :bar , "foo" )
154+ conn = init_test_session ( conn , bar: "bar" , other: "other" )
155+
156+ assert get_session ( conn , :foo ) == "bar"
157+ assert get_session ( conn , :other ) == "other"
158+ assert get_session ( conn , :bar ) == "bar"
159+ end
160+
161+ test "init_test_session/2 merges values when called before Plug.Session" do
162+ opts = Plug.Session . init ( store: ProcessStore , key: "foobar" )
163+
164+ conn = conn ( :get , "/" ) |> fetch_cookies
165+ conn = Plug.Session . call ( conn , opts ) |> fetch_session
166+ conn = conn |> put_session ( :foo , "bar" ) |> put_session ( :bar , "foo" )
167+ conn = send_resp ( conn , 200 , "" )
168+
169+ conn = conn ( :get , "/" ) |> recycle_cookies ( conn )
170+ conn = init_test_session ( conn , bar: "bar" , other: "other" )
171+ conn = Plug.Session . call ( conn , opts ) |> fetch_session
172+
173+ assert get_session ( conn , :foo ) == "bar"
174+ assert get_session ( conn , :other ) == "other"
175+ assert get_session ( conn , :bar ) == "bar"
176+ end
130177end
0 commit comments