Skip to content

Commit 2306232

Browse files
authored
Rails: add support for setting session in specs (#823)
1 parent 954b273 commit 2306232

File tree

4 files changed

+41
-10
lines changed

4 files changed

+41
-10
lines changed

spec/app_spec.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,17 @@
4040
end
4141

4242
it "does not redirect when user is authenticated" do
43-
user = create(:user)
43+
login_as(create(:user))
4444

45-
get("/news", {}, "rack.session" => { user_id: user.id })
45+
get("/news")
4646

4747
expect(last_response).not_to be_redirect
4848
end
4949

5050
it "redirects '/' to '/news'" do
51-
user = create(:user)
51+
login_as(create(:user))
5252

53-
get("/", {}, "rack.session" => { user_id: user.id })
53+
get("/")
5454

5555
expect(last_response).to be_redirect
5656
expect(last_response.headers["Location"]).to end_with("/news")

spec/controllers/sessions_controller_spec.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,24 @@
4141
user = create(:user)
4242

4343
params = { password: user.password }
44-
post "/login", params, "rack.session" => { redirect_to: "/archive" }
44+
session[:redirect_to] = "/archive"
45+
post "/login", params
4546

4647
expect(URI.parse(last_response.location).path).to eq("/archive")
4748
end
4849
end
4950

5051
describe "#destroy" do
5152
it "clears the session" do
52-
get "/logout", {}, "rack.session" => { userid: 1 }
53+
session[:user_id] = 1
54+
get "/logout"
5355

5456
expect(session[:user_id]).to be_nil
5557
end
5658

5759
it "redirects to the root page" do
58-
get "/logout", {}, "rack.session" => { userid: 1 }
60+
session[:user_id] = 1
61+
get "/logout"
5962

6063
expect(URI.parse(last_response.location).path).to eq("/")
6164
end

spec/controllers/tutorials_controller_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
let(:feeds) { [instance_double(Feed), instance_double(Feed)] }
1111

1212
it "displays the tutorial and completes setup" do
13-
user = create(:user)
13+
login_as(create(:user))
1414

15-
get "/setup/tutorial", {}, { "rack.session" => { user_id: user.id } }
15+
get "/setup/tutorial"
1616

1717
page = last_response.body
1818
expect(page).to have_tag("#mark-all-instruction")

spec/support/controller_helpers.rb

+29-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,35 @@ def app
77
Stringer
88
end
99

10+
alias old_get get
11+
def get(path, params = {}, env = {})
12+
old_get(path, params, env.merge("rack.session" => session))
13+
@session = last_request.env["rack.session"]
14+
end
15+
16+
alias old_post post
17+
def post(path, params = {}, env = {})
18+
old_post(path, params, env.merge("rack.session" => session))
19+
@session = last_request.env["rack.session"]
20+
end
21+
22+
alias old_put put
23+
def put(path, params = {}, env = {})
24+
old_put(path, params, env.merge("rack.session" => session))
25+
@session = last_request.env["rack.session"]
26+
end
27+
28+
alias old_delete delete
29+
def delete(path, params = {}, env = {})
30+
old_delete(path, params, env.merge("rack.session" => session))
31+
@session = last_request.env["rack.session"]
32+
end
33+
34+
def login_as(user)
35+
session[:user_id] = user.id
36+
end
37+
1038
def session
11-
last_request.env["rack.session"]
39+
@session ||= {}
1240
end
1341
end

0 commit comments

Comments
 (0)