@@ -2,7 +2,14 @@ package kickstart.security
2
2
3
3
import com.natpryce.hamkrest.assertion.assertThat
4
4
import com.natpryce.hamkrest.present
5
+ import com.vtence.konstruct.Provider
6
+ import com.vtence.konstruct.a
7
+ import com.vtence.konstruct.make
8
+ import com.vtence.konstruct.with
5
9
import kickstart.db.AbstractDatabaseTest
10
+ import kickstart.security.UserMaker.password
11
+ import kickstart.security.UserMaker.user
12
+ import kickstart.security.UserMaker.username
6
13
import org.junit.jupiter.api.BeforeEach
7
14
import org.junit.jupiter.api.Test
8
15
import org.junit.jupiter.api.assertThrows
@@ -21,9 +28,9 @@ class UsersDatabaseTest : AbstractDatabaseTest() {
21
28
22
29
@Test
23
30
fun `round trips users` () {
24
- val samples = listOf (
25
- user
{ username
= " [email protected] " ; password
= " american" } ,
26
- user
{ username
= " [email protected] " ; password
= " british" }
31
+ val samples = make (
32
+ a( user
, with ( username
, " [email protected] " ), with ( password
, " american" )) ,
33
+ a( user
, with ( username
, " [email protected] " ), with ( password
, " british" )),
27
34
)
28
35
29
36
samples.forEach { assertCanBePersisted(it) }
@@ -32,9 +39,9 @@ class UsersDatabaseTest : AbstractDatabaseTest() {
32
39
@Test
33
40
fun `finds user by username` () {
34
41
persist(
35
- user
{ username
= " [email protected] " } ,
36
- user
{ username
= " [email protected] " } ,
37
- user
{ username
= " [email protected] " }
42
+ a( user
, with ( username
, " [email protected] " )) ,
43
+ a( user
, with ( username
, " [email protected] " )) ,
44
+ a( user
, with ( username
, " [email protected] " )),
38
45
)
39
46
val match
= db.findBy(
Username (
" [email protected] " ))
40
47
@@ -43,12 +50,12 @@ class UsersDatabaseTest : AbstractDatabaseTest() {
43
50
44
51
@Test
45
52
fun `refuses to add account if username is already taken` () {
46
- persist(user
{ username
= " [email protected] " } )
53
+ persist(
a( user
, with ( username
, " [email protected] " )), )
47
54
48
- assertThrows<
SQLException > {
db.add( user
{ username
= " [email protected] " }.build( )) }
55
+ assertThrows<
SQLException > {
persist(a( user
, with ( username
, " [email protected] " ) )) }
49
56
}
50
57
51
- private fun assertCanBePersisted (user : UserBuilder ) {
58
+ private fun assertCanBePersisted (user : User ) {
52
59
assertReloadsWithSameState(persisted(user))
53
60
}
54
61
@@ -57,13 +64,13 @@ class UsersDatabaseTest : AbstractDatabaseTest() {
57
64
assertThat(" persisted entity" , persisted, present(hasSameStateAs(original)))
58
65
}
59
66
60
- private fun persist (vararg users : UserBuilder ) {
61
- users.forEach { persisted(it) }
67
+ private fun persist (vararg users : Provider < User > ) {
68
+ users.forEach { persisted(it() ) }
62
69
}
63
70
64
- private fun persisted (user : UserBuilder ): User {
71
+ private fun persisted (user : User ): User {
65
72
return transaction {
66
- user.build(). also { db.add(it) }
73
+ db.add(user)
67
74
}
68
75
}
69
76
}
0 commit comments