pyc-website

main website for pyc inc.

git clone https://9o.is/git/pyc-website.git

UserSpec.scala

(1915B)


      1 package inc.pyc
      2 package model
      3 
      4 class UserSpec extends BaseMongoSessionWordSpec {
      5   "User" should {
      6     "create, validate, save, and retrieve properly" in {
      7 
      8       val userPass = "testpass1"
      9       // create a new User instance
     10       val newUser = User.createRecord
     11         .email("test@liftweb.net")
     12 
     13       newUser.password(userPass)
     14 
     15       val errs = newUser.validate
     16       if (errs.length > 1) {
     17         fail("Validation error: "+errs.mkString(", "))
     18       }
     19 
     20       newUser.fname("First Name Test")
     21       newUser.lname("Last Name Test")
     22       newUser.username("Test")
     23       newUser.validate.length should equal (0)
     24 
     25       // save to db
     26       newUser.password.hashIt
     27       newUser.save()
     28 
     29       // retrieve from db and compare
     30       val userFromDb = User.find(newUser.id.get)
     31       userFromDb.isDefined should equal (true)
     32       userFromDb.map(u => u.id.get should equal (newUser.id.get))
     33     }
     34 
     35     "Support password properly" in {
     36 
     37       val userPass = "testpass2"
     38       // create a new User instance
     39       val newUser = User.createRecord
     40         .email("test2@liftweb.net")
     41         .fname("First Name Test2")
     42         .lname("Last Name Test2")
     43         .username("Test2")
     44         .password(userPass, true)
     45 
     46       // check password
     47       newUser.password.isMatch("xxxxx") should equal (false)
     48       newUser.password.isMatch(userPass) should equal (true)
     49 
     50       newUser.validate.length should equal (0)
     51 
     52       // save to db
     53       newUser.save()
     54 
     55       // retrieve from db and compare
     56       val userFromDb = User.find(newUser.id.get)
     57 
     58       userFromDb.isDefined should equal (true)
     59       userFromDb.map(u => {
     60         u.id.get should equal (newUser.id.get)
     61         u.password.isMatch("xxxxx") should equal (false)
     62         u.password.isMatch(userPass) should equal (true)
     63       })
     64     }
     65     
     66     // TODO: should handle login tokens
     67     // TODO: allow only required password types (or include it in should above)
     68   }
     69 }