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 }