mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 14:35:52 +01:00
Merged branch master into scalatest
This commit is contained in:
@@ -1 +1 @@
|
|||||||
sbt.version=0.13.8
|
sbt.version=0.13.9
|
||||||
|
|||||||
Binary file not shown.
2
sbt.bat
2
sbt.bat
@@ -1,2 +1,2 @@
|
|||||||
set SCRIPT_DIR=%~dp0
|
set SCRIPT_DIR=%~dp0
|
||||||
java %JAVA_OPTS% -Dsbt.log.noformat=true -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar "%SCRIPT_DIR%\sbt-launch-0.13.8.jar" %*
|
java %JAVA_OPTS% -Dsbt.log.noformat=true -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar "%SCRIPT_DIR%\sbt-launch-0.13.9.jar" %*
|
||||||
|
|||||||
2
sbt.sh
2
sbt.sh
@@ -1,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
java $JAVA_OPTS -Dsbt.log.noformat=true -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar `dirname $0`/sbt-launch-0.13.8.jar "$@"
|
java $JAVA_OPTS -Dsbt.log.noformat=true -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar `dirname $0`/sbt-launch-0.13.9.jar "$@"
|
||||||
|
|||||||
@@ -225,6 +225,13 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
|
|||||||
def avatarLink(userName: String, size: Int, mailAddress: String = "", tooltip: Boolean = false)(implicit context: Context): Html =
|
def avatarLink(userName: String, size: Int, mailAddress: String = "", tooltip: Boolean = false)(implicit context: Context): Html =
|
||||||
userWithContent(userName, mailAddress)(avatar(userName, size, tooltip, mailAddress))
|
userWithContent(userName, mailAddress)(avatar(userName, size, tooltip, mailAddress))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates the avatar link to the account page.
|
||||||
|
* If user does not exist or disabled, this method returns avatar image without link.
|
||||||
|
*/
|
||||||
|
def avatarLink(commit: JGitUtil.CommitInfo, size: Int)(implicit context: Context): Html =
|
||||||
|
userWithContent(commit.authorName, commit.authorEmailAddress)(avatar(commit, size))
|
||||||
|
|
||||||
private def userWithContent(userName: String, mailAddress: String = "", styleClass: String = "")(content: Html)(implicit context: Context): Html =
|
private def userWithContent(userName: String, mailAddress: String = "", styleClass: String = "")(content: Html)(implicit context: Context): Html =
|
||||||
(if(mailAddress.isEmpty){
|
(if(mailAddress.isEmpty){
|
||||||
getAccountByUserName(userName)
|
getAccountByUserName(userName)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div>Groups</div>
|
<div>Groups</div>
|
||||||
@groupNames.map { groupName =>
|
@groupNames.map { groupName =>
|
||||||
<a href="@url(groupName)">@avatar(groupName, 36, tooltip = true)</a>
|
@avatarLink(groupName, 36, tooltip = true)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
@if(comment.fileName.isDefined){filename="@comment.fileName.get"}
|
@if(comment.fileName.isDefined){filename="@comment.fileName.get"}
|
||||||
@if(comment.newLine.isDefined){newline="@comment.newLine.get"}
|
@if(comment.newLine.isDefined){newline="@comment.newLine.get"}
|
||||||
@if(comment.oldLine.isDefined){oldline="@comment.oldLine.get"}>
|
@if(comment.oldLine.isDefined){oldline="@comment.oldLine.get"}>
|
||||||
<div class="issue-avatar-image">@avatar(comment.commentedUserName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(comment.commentedUserName, 48)</div>
|
||||||
<div class="panel- panel-default commit-comment-box commit-comment-@comment.commentId">
|
<div class="panel- panel-default commit-comment-box commit-comment-@comment.commentId">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
@user(comment.commentedUserName, styleClass="username strong")
|
@user(comment.commentedUserName, styleClass="username strong")
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
@if(loginAccount.isDefined){
|
@if(loginAccount.isDefined){
|
||||||
<hr/><br/>
|
<hr/><br/>
|
||||||
<form method="POST" validate="true">
|
<form method="POST" validate="true">
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
<div class="panel panel-default issue-comment-box">
|
<div class="panel panel-default issue-comment-box">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
@helper.html.preview(
|
@helper.html.preview(
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
@import gitbucket.core.view.helpers._
|
@import gitbucket.core.view.helpers._
|
||||||
@import gitbucket.core.model.CommitComment
|
@import gitbucket.core.model.CommitComment
|
||||||
@if(issue.isDefined){
|
@if(issue.isDefined){
|
||||||
<div class="issue-avatar-image">@avatar(issue.get.openedUserName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(issue.get.openedUserName, 48)</div>
|
||||||
<div class="panel panel-default issue-comment-box">
|
<div class="panel panel-default issue-comment-box">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
@user(issue.get.openedUserName, styleClass="username strong") <span class="muted">commented @helper.html.datetimeago(issue.get.registeredDate)</span>
|
@user(issue.get.openedUserName, styleClass="username strong") <span class="muted">commented @helper.html.datetimeago(issue.get.registeredDate)</span>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
case comment: gitbucket.core.model.IssueComment => {
|
case comment: gitbucket.core.model.IssueComment => {
|
||||||
@if(comment.action != "close" && comment.action != "reopen" && comment.action != "delete_branch"
|
@if(comment.action != "close" && comment.action != "reopen" && comment.action != "delete_branch"
|
||||||
&& comment.action != "commit" && comment.action != "refer"){
|
&& comment.action != "commit" && comment.action != "refer"){
|
||||||
<div class="issue-avatar-image">@avatar(comment.commentedUserName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(comment.commentedUserName, 48)</div>
|
||||||
<div class="panel panel-default issue-comment-box" id="comment-@comment.commentId">
|
<div class="panel panel-default issue-comment-box" id="comment-@comment.commentId">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
@user(comment.commentedUserName, styleClass="username strong")
|
@user(comment.commentedUserName, styleClass="username strong")
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<form action="@url(repository)/issues/new" method="POST" validate="true" class="form-group">
|
<form action="@url(repository)/issues/new" method="POST" validate="true" class="form-group">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
<div class="panel panel-default issue-box">
|
<div class="panel panel-default issue-box">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<span id="error-title" class="error"></span>
|
<span id="error-title" class="error"></span>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<li><a href="@url(repository)/tree/@commit.id" style="line-height: 16px;"><i class="octicon octicon-code link"></i></a></li>
|
<li><a href="@url(repository)/tree/@commit.id" style="line-height: 16px;"><i class="octicon octicon-code link"></i></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div>
|
<div>
|
||||||
<div class="commit-avatar-image">@avatar(commit, 40)</div>
|
<div class="commit-avatar-image">@avatarLink(commit, 40)</div>
|
||||||
<div>
|
<div>
|
||||||
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
||||||
@if(commit.description.isDefined){
|
@if(commit.description.isDefined){
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<form method="POST" action="@path/@originRepository.owner/@originRepository.name/pulls/new" validate="true">
|
<form method="POST" action="@path/@originRepository.owner/@originRepository.name/pulls/new" validate="true">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
<div class="panel panel-default issue-box">
|
<div class="panel panel-default issue-box">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<span class="error" id="error-title"></span>
|
<span class="error" id="error-title"></span>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
@if(!fileName.isDefined){<hr/><br/>}
|
@if(!fileName.isDefined){<hr/><br/>}
|
||||||
<form method="POST" validate="true" style="max-width: 874px;">
|
<form method="POST" validate="true" style="max-width: 874px;">
|
||||||
@if(!fileName.isDefined){
|
@if(!fileName.isDefined){
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
}
|
}
|
||||||
<div class="panel panel-default issue-comment-box">
|
<div class="panel panel-default issue-comment-box">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
<li><a href="@url(repository)/tree/@commit.id" style="line-height: 16px;"><i class="octicon octicon-code link"></i></a></li>
|
<li><a href="@url(repository)/tree/@commit.id" style="line-height: 16px;"><i class="octicon octicon-code link"></i></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div>
|
<div>
|
||||||
<div class="commit-avatar-image">@avatar(commit, 40)</div>
|
<div class="commit-avatar-image">@avatarLink(commit, 40)</div>
|
||||||
<div>
|
<div>
|
||||||
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
<a href="@url(repository)/commit/@commit.id" class="commit-message" style="font-weight: bold;">@link(commit.summary, repository)</a>
|
||||||
@if(commit.description.isDefined){
|
@if(commit.description.isDefined){
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
<div class="box issue-comment-box">
|
<div class="box issue-comment-box">
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div class="issue-avatar-image">@avatar(loginAccount.get.userName, 48)</div>
|
<div class="issue-avatar-image">@avatarLink(loginAccount.get.userName, 48)</div>
|
||||||
<div class="panel panel-default issue-comment-box">
|
<div class="panel panel-default issue-comment-box">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
@if(originRepository.isDefined){
|
@if(originRepository.isDefined){
|
||||||
@avatar(originRepository.get.owner, 20)
|
@avatar(originRepository.get.owner, 20)
|
||||||
<span@if(repository.owner == originRepository.get.owner){ class="highlight"}>
|
<span@if(repository.owner == originRepository.get.owner){ class="highlight"}>
|
||||||
<a href="@url(originRepository.get)">@originRepository.get.owner</a> / <a href="@path/@originRepository.get.owner/@originRepository.get.name">@originRepository.get.name</a>
|
<a href="@url(originRepository.get.owner)">@originRepository.get.owner</a> / <a href="@path/@originRepository.get.owner/@originRepository.get.name">@originRepository.get.name</a>
|
||||||
</span>
|
</span>
|
||||||
} else {
|
} else {
|
||||||
@avatar(repository.repository.originUserName.get, 20)
|
@avatar(repository.repository.originUserName.get, 20)
|
||||||
|
|||||||
@@ -1099,6 +1099,10 @@ a.issue-title {
|
|||||||
background-color: #6cc644;
|
background-color: #6cc644;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.label-important {
|
||||||
|
background-color: #bd2c00;
|
||||||
|
}
|
||||||
|
|
||||||
ul.label-list {
|
ul.label-list {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 0px;
|
padding-left: 0px;
|
||||||
|
|||||||
@@ -1,91 +1,78 @@
|
|||||||
package gitbucket.core.service
|
package gitbucket.core.service
|
||||||
|
|
||||||
import gitbucket.core.model._
|
import gitbucket.core.model._
|
||||||
|
import org.scalatest.FunSuite
|
||||||
import org.specs2.mutable.Specification
|
|
||||||
|
|
||||||
import java.util.Date
|
|
||||||
|
|
||||||
|
|
||||||
class AccessTokenServiceSpec extends Specification with ServiceSpecBase {
|
class AccessTokenServiceSpec extends FunSuite with ServiceSpecBase {
|
||||||
|
|
||||||
"AccessTokenService" should {
|
test("generateAccessToken") { withTestDB { implicit session =>
|
||||||
"generateAccessToken" in { withTestDB { implicit session =>
|
assert(AccessTokenService.generateAccessToken("root", "note") match {
|
||||||
AccessTokenService.generateAccessToken("root", "note") must be like{
|
case (id, token) => id != 0
|
||||||
case (id, token) if id != 0 => ok
|
})
|
||||||
}
|
}}
|
||||||
}}
|
|
||||||
|
|
||||||
"getAccessTokens" in { withTestDB { implicit session =>
|
test("getAccessTokens") { withTestDB { implicit session =>
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
||||||
val tokenHash = AccessTokenService.tokenToHash(token)
|
val tokenHash = AccessTokenService.tokenToHash(token)
|
||||||
|
|
||||||
AccessTokenService.getAccessTokens("root") must be like{
|
assert(AccessTokenService.getAccessTokens("root") == List(AccessToken(`id`, "root", `tokenHash`, "note")))
|
||||||
case List(AccessToken(`id`, "root", `tokenHash`, "note")) => ok
|
}}
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
"getAccessTokens(root) get root's tokens" in { withTestDB { implicit session =>
|
test("getAccessTokens(root) get root's tokens") { withTestDB { implicit session =>
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
||||||
val tokenHash = AccessTokenService.tokenToHash(token)
|
val tokenHash = AccessTokenService.tokenToHash(token)
|
||||||
val user2 = generateNewAccount("user2")
|
val user2 = generateNewAccount("user2")
|
||||||
AccessTokenService.generateAccessToken("user2", "note2")
|
AccessTokenService.generateAccessToken("user2", "note2")
|
||||||
|
|
||||||
AccessTokenService.getAccessTokens("root") must be like{
|
assert(AccessTokenService.getAccessTokens("root") == List(AccessToken(`id`, "root", `tokenHash`, "note")))
|
||||||
case List(AccessToken(`id`, "root", `tokenHash`, "note")) => ok
|
}}
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
"deleteAccessToken" in { withTestDB { implicit session =>
|
test("deleteAccessToken") { withTestDB { implicit session =>
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
||||||
val user2 = generateNewAccount("user2")
|
val user2 = generateNewAccount("user2")
|
||||||
AccessTokenService.generateAccessToken("user2", "note2")
|
AccessTokenService.generateAccessToken("user2", "note2")
|
||||||
|
|
||||||
AccessTokenService.deleteAccessToken("root", id)
|
AccessTokenService.deleteAccessToken("root", id)
|
||||||
|
|
||||||
AccessTokenService.getAccessTokens("root") must beEmpty
|
assert(AccessTokenService.getAccessTokens("root").isEmpty)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
"getAccountByAccessToken" in { withTestDB { implicit session =>
|
test("getAccountByAccessToken") { withTestDB { implicit session =>
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("root", "note")
|
||||||
AccessTokenService.getAccountByAccessToken(token) must beSome.like {
|
assert(AccessTokenService.getAccountByAccessToken(token) match {
|
||||||
case user => user.userName must_== "root"
|
case Some(user) => user.userName == "root"
|
||||||
}
|
})
|
||||||
}}
|
}}
|
||||||
|
|
||||||
"getAccountByAccessToken don't get removed account" in { withTestDB { implicit session =>
|
test("getAccountByAccessToken don't get removed account") { withTestDB { implicit session =>
|
||||||
val user2 = generateNewAccount("user2")
|
val user2 = generateNewAccount("user2")
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("user2", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("user2", "note")
|
||||||
AccountService.updateAccount(user2.copy(isRemoved=true))
|
AccountService.updateAccount(user2.copy(isRemoved=true))
|
||||||
|
|
||||||
AccessTokenService.getAccountByAccessToken(token) must beEmpty
|
assert(AccessTokenService.getAccountByAccessToken(token).isEmpty)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
"generateAccessToken create uniq token" in { withTestDB { implicit session =>
|
test("generateAccessToken create uniq token") { withTestDB { implicit session =>
|
||||||
val tokenIt = List("token1","token1","token1","token2").iterator
|
val tokenIt = List("token1","token1","token1","token2").iterator
|
||||||
val service = new AccessTokenService{
|
val service = new AccessTokenService{
|
||||||
override def makeAccessTokenString:String = tokenIt.next
|
override def makeAccessTokenString:String = tokenIt.next
|
||||||
}
|
}
|
||||||
|
|
||||||
service.generateAccessToken("root", "note1") must like{
|
assert(service.generateAccessToken("root", "note1")._2 == "token1")
|
||||||
case (_, "token1") => ok
|
assert(service.generateAccessToken("root", "note2")._2 == "token2")
|
||||||
}
|
}}
|
||||||
service.generateAccessToken("root", "note2") must like{
|
|
||||||
case (_, "token2") => ok
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
"when update Account.userName then AccessToken.userName changed" in { withTestDB { implicit session =>
|
test("when update Account.userName then AccessToken.userName changed") { withTestDB { implicit session =>
|
||||||
val user2 = generateNewAccount("user2")
|
val user2 = generateNewAccount("user2")
|
||||||
val (id, token) = AccessTokenService.generateAccessToken("user2", "note")
|
val (id, token) = AccessTokenService.generateAccessToken("user2", "note")
|
||||||
import gitbucket.core.model.Profile._
|
import gitbucket.core.model.Profile._
|
||||||
import profile.simple._
|
import profile.simple._
|
||||||
Accounts.filter(_.userName === "user2".bind).map(_.userName).update("user3")
|
Accounts.filter(_.userName === "user2".bind).map(_.userName).update("user3")
|
||||||
|
|
||||||
AccessTokenService.getAccountByAccessToken(token) must beSome.like {
|
assert(AccessTokenService.getAccountByAccessToken(token) match {
|
||||||
case user => user.userName must_== "user3"
|
case Some(user) => user.userName == "user3"
|
||||||
}
|
})
|
||||||
}}
|
}}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,79 +1,71 @@
|
|||||||
package gitbucket.core.service
|
package gitbucket.core.service
|
||||||
|
|
||||||
import gitbucket.core.model.{Account, GroupMember}
|
import gitbucket.core.model.{Account, GroupMember}
|
||||||
import org.specs2.mutable.Specification
|
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
import org.scalatest.FunSuite
|
||||||
|
|
||||||
class AccountServiceSpec extends Specification with ServiceSpecBase {
|
class AccountServiceSpec extends FunSuite with ServiceSpecBase {
|
||||||
|
|
||||||
"AccountService" should {
|
val RootMailAddress = "root@localhost"
|
||||||
val RootMailAddress = "root@localhost"
|
|
||||||
|
|
||||||
"getAllUsers" in { withTestDB { implicit session =>
|
test("getAllUsers") { withTestDB { implicit session =>
|
||||||
AccountService.getAllUsers() must be like{
|
assert(AccountService.getAllUsers() match {
|
||||||
case List(Account("root", "root", RootMailAddress, _, true, _, _, _, None, None, false, false)) => ok
|
case List(Account("root", "root", RootMailAddress, _, true, _, _, _, None, None, false, false)) => true
|
||||||
}
|
case _ => false
|
||||||
}}
|
})
|
||||||
|
}}
|
||||||
|
|
||||||
"getAccountByUserName" in { withTestDB { implicit session =>
|
test("getAccountByUserName") { withTestDB { implicit session =>
|
||||||
AccountService.getAccountByUserName("root") must beSome.like {
|
assert(AccountService.getAccountByUserName("root").get.userName == "root")
|
||||||
case user => user.userName must_== "root"
|
assert(AccountService.getAccountByUserName("invalid user name").isEmpty)
|
||||||
}
|
}}
|
||||||
|
|
||||||
AccountService.getAccountByUserName("invalid user name") must beNone
|
test("getAccountByMailAddress") { withTestDB { implicit session =>
|
||||||
}}
|
assert(AccountService.getAccountByMailAddress(RootMailAddress).isDefined)
|
||||||
|
}}
|
||||||
|
|
||||||
"getAccountByMailAddress" in { withTestDB { implicit session =>
|
test("updateLastLoginDate") { withTestDB { implicit session =>
|
||||||
AccountService.getAccountByMailAddress(RootMailAddress) must beSome
|
val root = "root"
|
||||||
}}
|
def user() = AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists"))
|
||||||
|
|
||||||
"updateLastLoginDate" in { withTestDB { implicit session =>
|
assert(user().lastLoginDate.isEmpty)
|
||||||
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
|
||||||
val date1 = new Date
|
AccountService.updateLastLoginDate(root)
|
||||||
AccountService.updateLastLoginDate(root)
|
assert(user().lastLoginDate.get.compareTo(date1) > 0)
|
||||||
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 { implicit session =>
|
val date2 = new Date
|
||||||
val root = "root"
|
Thread.sleep(1000)
|
||||||
def user() =
|
AccountService.updateLastLoginDate(root)
|
||||||
AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists"))
|
assert(user().lastLoginDate.get.compareTo(date2) > 0)
|
||||||
|
}}
|
||||||
|
|
||||||
val newAddress = "new mail address"
|
test("updateAccount") { withTestDB { implicit session =>
|
||||||
AccountService.updateAccount(user().copy(mailAddress = newAddress))
|
val root = "root"
|
||||||
user().mailAddress must_== newAddress
|
def user() = AccountService.getAccountByUserName(root).getOrElse(sys.error(s"user $root does not exists"))
|
||||||
}}
|
|
||||||
|
|
||||||
"group" in { withTestDB { implicit session =>
|
val newAddress = "new mail address"
|
||||||
val group1 = "group1"
|
AccountService.updateAccount(user().copy(mailAddress = newAddress))
|
||||||
val user1 = "root"
|
assert(user().mailAddress == newAddress)
|
||||||
AccountService.createGroup(group1, None)
|
}}
|
||||||
|
|
||||||
AccountService.getGroupMembers(group1) must_== Nil
|
test("group") { withTestDB { implicit session =>
|
||||||
AccountService.getGroupsByUserName(user1) must_== Nil
|
val group1 = "group1"
|
||||||
|
val user1 = "root"
|
||||||
|
AccountService.createGroup(group1, None)
|
||||||
|
|
||||||
AccountService.updateGroupMembers(group1, List((user1, true)))
|
assert(AccountService.getGroupMembers(group1) == Nil)
|
||||||
|
assert(AccountService.getGroupsByUserName(user1) == Nil)
|
||||||
|
|
||||||
AccountService.getGroupMembers(group1) must_== List(GroupMember(group1, user1, true))
|
AccountService.updateGroupMembers(group1, List((user1, true)))
|
||||||
AccountService.getGroupsByUserName(user1) must_== List(group1)
|
|
||||||
|
|
||||||
AccountService.updateGroupMembers(group1, Nil)
|
assert(AccountService.getGroupMembers(group1) == List(GroupMember(group1, user1, true)))
|
||||||
|
assert(AccountService.getGroupsByUserName(user1) == List(group1))
|
||||||
|
|
||||||
AccountService.getGroupMembers(group1) must_== Nil
|
AccountService.updateGroupMembers(group1, Nil)
|
||||||
AccountService.getGroupsByUserName(user1) must_== Nil
|
|
||||||
}}
|
assert(AccountService.getGroupMembers(group1) == Nil)
|
||||||
}
|
assert(AccountService.getGroupsByUserName(user1) == Nil)
|
||||||
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user