Hi there,
I am wondering if its possible to cause a scenario to fail if a session attribute is missing. This sounds relatively simple on the surface so let me add a simple scenario:
What I want to do is make a POST to /
with some data, and verify that a cookie is being set and I see a 200.
val postUserSignin = exec(http("POST Signin") .post("/") .formParam("username", "${username}") .check(status is 200) .exec(session => { // get cookie value from cookiejar on session - omitted for brevity session.set("cookieName", _) session }) .check(// check cookie value is set);
Unfortunately the POST includes a 301 redirect so the cookie isn’t in the standard set-cookie
header on the response. This means I need to get it from the session first.
Obviously the check above cannot be used here, I just added it for illustration. I have seen the session.markAsFailed
and exitHereIfFailed
but neither seem to work when added to the exec
, the scenario is marked as passed regardless, even if I always set session.markAsFailed
true every time.
In short, im stuck.
Fuller example including my cookie parsing, perhaps markAsFailed
is the answer and i’m just missing something obvious:
val postUserSignin = exec(http("POST Signin") .post("/") .formParam("username", "${username}") // other form params omitted for brevity .check(status is 200) .exec(session => { import io.gatling.http.cookie._ import com.ning.http.client.uri.Uri._ val newSession = (session("gatling.http.cookies").asOption[CookieJar].flatMap { cookieJar => val cookie = cookieJar.get(com.ning.http.client.uri.Uri.create("<THE URL>")).find(_.getName == "cookieName") cookie.map(session.set("cookieName", _)) }).getOrElse(session) newSession })
Any help would be greatly appreciated.