|
Play Framework/Scala example source code file (ScalaResultsSpec.scala)
The ScalaResultsSpec.scala Play Framework example source code
/*
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package play.it.http
import play.api.test._
import play.api.mvc._
import play.api.mvc.Results._
object ScalaResultsSpec extends PlaySpecification {
"support session helper" in withApplication() {
Session.decode(" ").isEmpty must be_==(true)
val data = Map("user" -> "kiki", "langs" -> "fr:en:de")
val encodedSession = Session.encode(data)
val decodedSession = Session.decode(encodedSession)
decodedSession must_== Map("user" -> "kiki", "langs" -> "fr:en:de")
val Result(ResponseHeader(_, headers), _, _) =
Ok("hello").as("text/html")
.withSession("user" -> "kiki", "langs" -> "fr:en:de")
.withCookies(Cookie("session", "items"), Cookie("preferences", "blue"))
.discardingCookies(DiscardingCookie("logged"))
.withSession("user" -> "kiki", "langs" -> "fr:en:de")
.withCookies(Cookie("lang", "fr"), Cookie("session", "items2"))
val setCookies = Cookies.decode(headers("Set-Cookie")).map(c => c.name -> c).toMap
setCookies.size must be_==(5)
setCookies("session").value must be_==("items2")
setCookies("preferences").value must be_==("blue")
setCookies("lang").value must be_==("fr")
setCookies("logged").maxAge must beSome
setCookies("logged").maxAge.get must be_<=(-86000)
val playSession = Session.decodeFromCookie(setCookies.get(Session.COOKIE_NAME))
playSession.data must_== Map("user" -> "kiki", "langs" -> "fr:en:de")
}
"ignore session cookies that have been tampered with" in withApplication() {
val data = Map("user" -> "alice")
val encodedSession = Session.encode(data)
// Change a value in the session
val maliciousSession = encodedSession.replaceFirst("user=alice", "user=mallory")
val decodedSession = Session.decode(maliciousSession)
decodedSession must beEmpty
}
"support a custom application context" in {
"set session on right path" in withFooPath {
Cookies.decode(Ok.withSession("user" -> "alice").header.headers("Set-Cookie")).head.path must_== "/foo"
}
"discard session on right path" in withFooPath {
Cookies.decode(Ok.withNewSession.header.headers("Set-Cookie")).head.path must_== "/foo"
}
"set flash on right path" in withFooPath {
Cookies.decode(Ok.flashing("user" -> "alice").header.headers("Set-Cookie")).head.path must_== "/foo"
}
// flash cookie is discarded in PlayDefaultUpstreamHandler
}
"support a custom session domain" in {
"set session on right domain" in withFooDomain {
Cookies.decode(Ok.withSession("user" -> "alice").header.headers("Set-Cookie")).head.domain must beSome(".foo.com")
}
"discard session on right domain" in withFooDomain {
Cookies.decode(Ok.withNewSession.header.headers("Set-Cookie")).head.domain must beSome(".foo.com")
}
}
"support a secure session" in {
"set session as secure" in withSecureSession {
Cookies.decode(Ok.withSession("user" -> "alice").header.headers("Set-Cookie")).head.secure must_== true
}
"discard session as secure" in withSecureSession {
Cookies.decode(Ok.withNewSession.header.headers("Set-Cookie")).head.secure must_== true
}
}
def withApplication[T](config: (String, Any)*)(block: => T): T = running(
FakeApplication(additionalConfiguration = Map(config:_ *) + ("application.secret" -> "foo"))
)(block)
def withFooPath[T](block: => T) = withApplication("application.context" -> "/foo")(block)
def withFooDomain[T](block: => T) = withApplication("session.domain" -> ".foo.com")(block)
def withSecureSession[T](block: => T) = withApplication("session.secure" -> true)(block)
}
Other Play Framework source code examplesHere is a short list of links related to this Play Framework ScalaResultsSpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.