Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import controllers.{UserController, Session}
- import database.Database
- import models.User
- import org.scalatest.BeforeAndAfter
- import org.scalatestplus.play.PlaySpec
- import play.api.http.MimeTypes
- import play.api.libs.json.Json
- import play.api.test.Helpers._
- import play.api.test._
- /**
- * Created by skripnik_ma on 25.01.16.
- */
- class UserControllerSpec extends PlaySpec with BeforeAndAfter {
- before {
- Database.init
- }
- after {
- Database.dropAllRecords
- }
- val userLogin = "dumbdude13"
- val userMail = "reserved@gmail.com"
- val userPassword = "iamactuallyfromgreece"
- val app = FakeApplication()
- val controller = new UserController
- "register method" should {
- "return json with user id" in {
- val user = Json.obj(("login", userLogin), ("email", userMail), ("password", userPassword))
- running(app) {
- val request = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- user)
- val result = controller.register.apply(request)
- assert(status(result) == OK)
- assert(contentType(result).contains(MimeTypes.JSON))
- assert(contentAsJson(result).toString().matches("\\{\"id\":\"#\\d+:\\d+\"\\}"))
- }
- }
- "return json with userRegistrationError" in {
- val user = Json.obj(("login", userLogin), ("email", userMail), ("password", userPassword))
- running(app) {
- val request = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- user)
- controller.register.apply(request)
- val result = controller.register.apply(request)
- assert(status(result) == BAD_REQUEST)
- assert(contentType(result).contains(MimeTypes.JSON))
- assert(contentAsJson(result) == Json.obj(
- "errors" -> Json.arr(
- Json.obj("data" -> "null"),
- Json.obj("message" -> "User with this login or email already exists"),
- Json.obj("code" -> "userRegistrationError")
- )))
- }
- }
- "return json with jsonFormatError message" in {
- val user = Json.obj(("w", userLogin), ("email", userMail), ("password", userPassword))
- running(app) {
- val request = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- user)
- val result = controller.register.apply(request)
- assert(status(result) == BAD_REQUEST)
- assert(contentType(result).contains(MimeTypes.JSON))
- }
- }
- }
- "login method" should {
- "log in user and start valid session and return it's token in the json object" in {
- val olduser = Json.obj(("login", userLogin), ("email", userMail), ("password", userPassword))
- val user = Json.obj(("username", userMail), ("password", userPassword))
- running(app) {
- val registerRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- olduser)
- controller.register.apply(registerRequest)
- val loginRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.login.url,
- FakeHeaders(),
- user)
- val result = controller.login.apply(loginRequest)
- val logeduser = User.getByLogin(userLogin)
- assert(status(result) == OK)
- assert(contentType(result).contains(MimeTypes.JSON))
- assert(contentAsJson(result).toString.matches("""\{"token":"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}","id":"#\d+:\d+"\}"""))
- assert(logeduser == Session.valid((contentAsJson(result) \ "token").get.toString.replaceAll("\"", "")).get)
- }
- }
- "return json with authentification error" in {
- val olduser = Json.obj(("login", userLogin), ("email", userMail), ("password", userPassword))
- val baduser = Json.obj(("username", userMail), ("password", "iamfromfrance"))
- running(app) {
- val registerRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- olduser)
- controller.register.apply(registerRequest)
- }
- val loginRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.login.url,
- FakeHeaders(),
- baduser)
- val result = controller.login.apply(loginRequest)
- assert(status(result) == BAD_REQUEST)
- assert(contentType(result).contains(MimeTypes.JSON))
- assert(contentAsJson(result) == Json.obj(
- "errors" -> Json.arr(
- Json.obj("data" -> "null"),
- Json.obj("message" -> "Login or password is incorrect"),
- Json.obj("code" -> "authenticationError")
- )))
- }
- }
- "logout method" should {
- "log user out" in {
- val olduser = Json.obj(("login", userLogin), ("email", userMail), ("password", userPassword))
- val user = Json.obj(("username", userMail), ("password", userPassword))
- running(app) {
- val registerRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.register.url,
- FakeHeaders(),
- olduser)
- controller.register.apply(registerRequest)
- val loginRequest = FakeRequest(Helpers.POST,
- controllers.routes.UserController.login.url,
- FakeHeaders(),
- user)
- val loginResult = controller.login.apply(loginRequest)
- val correctToken = (contentAsJson(loginResult) \ "token").get.toString.replaceAll("\"", "")
- val logoutRequest = FakeRequest(Helpers.GET,
- "/auth/logout",
- FakeHeaders(Seq(("Token", correctToken))),
- "")
- val result = route(logoutRequest).get
- assert(status(result) == OK)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement