Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to manipulate Session, Request and Response for test in play2.0

Hi I had an authentication service which works on Request (some Header-Data and Cookie), Response (to set or delete a cookie) and session (Store userId and rememberMe-information).

In play 1.x it was easy to fake Request, Response, Cookie and Session. It could be easily set with Session.current().set(new Session()). In play 2.0 this doesn't work anymore.

How can I add a cookie to a request? How could I manipulate the session? I saw there exists FakeApplication and FakeRequest but I didn't get it, how to work with them.

Any hint is appreciated.

like image 656
niels Avatar asked Apr 30 '12 09:04

niels


2 Answers

It was not ready for Play 2.0, but in Play 2.1 (and in current master) you’ll be able to write:

fakeRequest(GET, "/foo")
    .withSession("bar", "baz")
    .withCookies(cookie("bah", "toto"));
like image 166
Julien Richard-Foy Avatar answered Nov 11 '22 09:11

Julien Richard-Foy


It's possible to do it similar to play1.x. The central point is the Context. Furthermore you must create a DummyRequest which implements the methods you need. Then it's possible to create the following

final Request request = new DummyRequest();
Context.current.set(new Context(request, new HashMap <String, String>(), 
        new HashMap <String, String>()));

in your test you can get Context.current().session(), Context.current().response() or Context.current().request().

You can see here an test-example.

like image 4
niels Avatar answered Nov 11 '22 09:11

niels