mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +01:00
106 lines
4.3 KiB
Scala
106 lines
4.3 KiB
Scala
package view
|
|
|
|
import java.util.Date
|
|
|
|
import org.specs2.mutable._
|
|
import service.RequestCache
|
|
import model.Account
|
|
import service.SystemSettingsService.SystemSettings
|
|
import twirl.api.Html
|
|
|
|
class AvatarImageProviderSpec extends Specification {
|
|
|
|
implicit val context = app.Context("", None, null)
|
|
|
|
"getAvatarImageHtml" should {
|
|
"show Gravatar image for no image account if gravatar integration is enabled" in {
|
|
val provider = new AvatarImageProviderImpl(Some(createAccount(None)), createSystemSettings(true))
|
|
|
|
provider.toHtml("user", 20).toString mustEqual
|
|
"<img src=\"https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?s=20\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"show uploaded image even if gravatar integration is enabled" in {
|
|
val provider = new AvatarImageProviderImpl(Some(createAccount(Some("icon.png"))), createSystemSettings(true))
|
|
|
|
provider.toHtml("user", 20).toString mustEqual
|
|
"<img src=\"/user/_avatar\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"show local image for no image account if gravatar integration is disabled" in {
|
|
val provider = new AvatarImageProviderImpl(Some(createAccount(None)), createSystemSettings(false))
|
|
|
|
provider.toHtml("user", 20).toString mustEqual
|
|
"<img src=\"/user/_avatar\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"show Gravatar image for specified mail address if gravatar integration is enabled" in {
|
|
val provider = new AvatarImageProviderImpl(None, createSystemSettings(true))
|
|
|
|
provider.toHtml("user", 20, "hoge@hoge.com").toString mustEqual
|
|
"<img src=\"https://www.gravatar.com/avatar/4712f9b0e63f56ad952ad387eaa23b9c?s=20\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"show unknown image for unknown user if gravatar integration is enabled" in {
|
|
val provider = new AvatarImageProviderImpl(None, createSystemSettings(true))
|
|
|
|
provider.toHtml("user", 20).toString mustEqual
|
|
"<img src=\"/_unknown/_avatar\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"show unknown image for specified mail address if gravatar integration is disabled" in {
|
|
val provider = new AvatarImageProviderImpl(None, createSystemSettings(false))
|
|
|
|
provider.toHtml("user", 20, "hoge@hoge.com").toString mustEqual
|
|
"<img src=\"/_unknown/_avatar\" class=\"avatar\" style=\"width: 20px; height: 20px;\" />"
|
|
}
|
|
|
|
"add tooltip if it's enabled" in {
|
|
val provider = new AvatarImageProviderImpl(None, createSystemSettings(false))
|
|
|
|
provider.toHtml("user", 20, "hoge@hoge.com", true).toString mustEqual
|
|
"<img src=\"/_unknown/_avatar\" class=\"avatar\" style=\"width: 20px; height: 20px;\" data-toggle=\"tooltip\" title=\"user\"/>"
|
|
}
|
|
}
|
|
|
|
private def createAccount(image: Option[String]) =
|
|
Account(
|
|
userName = "user",
|
|
fullName = "user@localhost",
|
|
mailAddress = "",
|
|
password = "",
|
|
isAdmin = false,
|
|
url = None,
|
|
registeredDate = new Date(),
|
|
updatedDate = new Date(),
|
|
lastLoginDate = None,
|
|
image = image,
|
|
isGroupAccount = false,
|
|
isRemoved = false)
|
|
|
|
private def createSystemSettings(useGravatar: Boolean) =
|
|
SystemSettings(
|
|
baseUrl = None,
|
|
allowAccountRegistration = false,
|
|
gravatar = useGravatar,
|
|
notification = false,
|
|
smtp = None,
|
|
ldapAuthentication = false,
|
|
ldap = None)
|
|
|
|
/**
|
|
* Adapter to test AvatarImageProviderImpl.
|
|
*/
|
|
class AvatarImageProviderImpl(account: Option[Account], settings: SystemSettings)
|
|
extends AvatarImageProvider with RequestCache {
|
|
|
|
def toHtml(userName: String, size: Int, mailAddress: String = "", tooltip: Boolean = false)
|
|
(implicit context: app.Context): Html = getAvatarImageHtml(userName, size, mailAddress, tooltip)
|
|
|
|
override def getAccountByMailAddress(mailAddress: String)(implicit context: app.Context): Option[Account] = account
|
|
override def getAccountByUserName(userName: String)(implicit context: app.Context): Option[Account] = account
|
|
override def getSystemSettings()(implicit context: app.Context): SystemSettings = settings
|
|
}
|
|
|
|
}
|