diff --git a/src/test/scala/service/AccountServiceSpec.scala b/src/test/scala/service/AccountServiceSpec.scala index 4375fc8..344f8e3 100644 --- a/src/test/scala/service/AccountServiceSpec.scala +++ b/src/test/scala/service/AccountServiceSpec.scala @@ -1,79 +1,79 @@ -//package service -// -//import org.specs2.mutable.Specification -//import java.util.Date -//import model.GroupMember -// -//class AccountServiceSpec extends Specification with ServiceSpecBase { -// -// "AccountService" should { -// val RootMailAddress = "root@localhost" -// -// "getAllUsers" in { withTestDB{ -// AccountService.getAllUsers() must be like{ -// case List(model.Account("root", "root", RootMailAddress, _, true, _, _, _, None, None, false, false)) => ok -// } -// }} -// -// "getAccountByUserName" in { withTestDB{ -// AccountService.getAccountByUserName("root") must beSome.like{ -// case user => user.userName must_== "root" -// } -// -// AccountService.getAccountByUserName("invalid user name") must beNone -// }} -// -// "getAccountByMailAddress" in { withTestDB{ -// AccountService.getAccountByMailAddress(RootMailAddress) must beSome -// }} -// -// "updateLastLoginDate" in { withTestDB{ -// val root = "root" -// def user() = -// AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists")) -// -// user().lastLoginDate must beNone -// val date1 = new Date -// AccountService.updateLastLoginDate(root) -// user().lastLoginDate must beSome.like{ case date => -// date must be_>(date1) -// } -// val date2 = new Date -// Thread.sleep(1000) -// AccountService.updateLastLoginDate(root) -// user().lastLoginDate must beSome.like{ case date => -// date must be_>(date2) -// } -// }} -// -// "updateAccount" in { withTestDB{ -// val root = "root" -// def user() = -// AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists")) -// -// val newAddress = "new mail address" -// AccountService.updateAccount(user().copy(mailAddress = newAddress)) -// user().mailAddress must_== newAddress -// }} -// -// "group" in { withTestDB { -// val group1 = "group1" -// val user1 = "root" -// AccountService.createGroup(group1, None) -// -// AccountService.getGroupMembers(group1) must_== Nil -// AccountService.getGroupsByUserName(user1) must_== Nil -// -// AccountService.updateGroupMembers(group1, List((user1, true))) -// -// AccountService.getGroupMembers(group1) must_== List(GroupMember(group1, user1, true)) -// AccountService.getGroupsByUserName(user1) must_== List(group1) -// -// AccountService.updateGroupMembers(group1, Nil) -// -// AccountService.getGroupMembers(group1) must_== Nil -// AccountService.getGroupsByUserName(user1) must_== Nil -// }} -// } -//} -// +package service + +import org.specs2.mutable.Specification +import java.util.Date +import model.GroupMember + +class AccountServiceSpec extends Specification with ServiceSpecBase { + + "AccountService" should { + val RootMailAddress = "root@localhost" + + "getAllUsers" in { withTestDB{ + AccountService.getAllUsers() must be like{ + case List(model.Account("root", "root", RootMailAddress, _, true, _, _, _, None, None, false, false)) => ok + } + }} + + "getAccountByUserName" in { withTestDB{ + AccountService.getAccountByUserName("root") must beSome.like{ + case user => user.userName must_== "root" + } + + AccountService.getAccountByUserName("invalid user name") must beNone + }} + + "getAccountByMailAddress" in { withTestDB{ + AccountService.getAccountByMailAddress(RootMailAddress) must beSome + }} + + "updateLastLoginDate" in { withTestDB{ + val root = "root" + def user() = + AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists")) + + user().lastLoginDate must beNone + val date1 = new Date + AccountService.updateLastLoginDate(root) + user().lastLoginDate must beSome.like{ case date => + date must be_>(date1) + } + val date2 = new Date + Thread.sleep(1000) + AccountService.updateLastLoginDate(root) + user().lastLoginDate must beSome.like{ case date => + date must be_>(date2) + } + }} + + "updateAccount" in { withTestDB{ + val root = "root" + def user() = + AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists")) + + val newAddress = "new mail address" + AccountService.updateAccount(user().copy(mailAddress = newAddress)) + user().mailAddress must_== newAddress + }} + + "group" in { withTestDB { + val group1 = "group1" + val user1 = "root" + AccountService.createGroup(group1, None) + + AccountService.getGroupMembers(group1) must_== Nil + AccountService.getGroupsByUserName(user1) must_== Nil + + AccountService.updateGroupMembers(group1, List((user1, true))) + + AccountService.getGroupMembers(group1) must_== List(GroupMember(group1, user1, true)) + AccountService.getGroupsByUserName(user1) must_== List(group1) + + AccountService.updateGroupMembers(group1, Nil) + + AccountService.getGroupMembers(group1) must_== Nil + AccountService.getGroupsByUserName(user1) must_== Nil + }} + } +} + diff --git a/src/test/scala/service/ServiceSpecBase.scala b/src/test/scala/service/ServiceSpecBase.scala index 7c8b33c..855c9f8 100644 --- a/src/test/scala/service/ServiceSpecBase.scala +++ b/src/test/scala/service/ServiceSpecBase.scala @@ -1,25 +1,25 @@ -//package service -// -//import scala.slick.session.Database -//import util.ControlUtil._ -//import java.sql.DriverManager -//import org.apache.commons.io.FileUtils -//import scala.util.Random -//import java.io.File -// -//trait ServiceSpecBase { -// -// def withTestDB[A](action: => A): A = { -// util.FileUtil.withTmpDir(new File(FileUtils.getTempDirectory(), Random.alphanumeric.take(10).mkString)){ dir => -// val (url, user, pass) = (s"jdbc:h2:${dir}", "sa", "sa") -// org.h2.Driver.load() -// using(DriverManager.getConnection(url, user, pass)){ conn => -// servlet.AutoUpdate.versions.reverse.foreach(_.update(conn)) -// } -// Database.forURL(url, user, pass).withSession { -// action -// } -// } -// } -// -//} +package service + +import scala.slick.session.Database +import util.ControlUtil._ +import java.sql.DriverManager +import org.apache.commons.io.FileUtils +import scala.util.Random +import java.io.File + +trait ServiceSpecBase { + + def withTestDB[A](action: => A): A = { + util.FileUtil.withTmpDir(new File(FileUtils.getTempDirectory(), Random.alphanumeric.take(10).mkString)){ dir => + val (url, user, pass) = (s"jdbc:h2:${dir}", "sa", "sa") + org.h2.Driver.load() + using(DriverManager.getConnection(url, user, pass)){ conn => + servlet.AutoUpdate.versions.reverse.foreach(_.update(conn)) + } + Database.forURL(url, user, pass).withSession { + action + } + } + } + +}