UserTest.ktAnnotations: Test, Autowired
Classes: UserTest
Supertype(s): AbstractTestBase
Functions (8): afterAll, testUserDO, testGetUserDisplayname, testSaveAndUpdate, testPasswordHandling, testPasswordQuality, testUniqueUsernameDO, createTestUser
Properties (28): groupService, configurationDao, passwordQualityService, userGroupCache, userPasswordDao, user, user1, groupnames, group, admin, user, user, id, user, id, passwordObj, minPwLenEntry, passwordQualityMessages, user, userId1, userId2, dbUser, user, STRONGOLDPW, MESSAGE_KEY_PASSWORD_MIN_LENGTH_ERROR...
Imports: 11 packages
Package: org.projectforge.business.user
package org.projectforge.business.user
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.projectforge.business.group.service.GroupService
import org.projectforge.business.password.PasswordQualityService
import org.projectforge.framework.configuration.ConfigurationDao
import org.projectforge.framework.configuration.ConfigurationParam
import org.projectforge.framework.i18n.I18nKeyAndParams
import org.projectforge.framework.persistence.user.entities.PFUserDO
import org.projectforge.business.test.AbstractTestBase
import org.springframework.beans.factory.annotation.Autowired
import java.io.Serializable
class UserTest : AbstractTestBase() {
@Autowired
private lateinit var groupService: GroupService
@Autowired
private lateinit var configurationDao: ConfigurationDao
@Autowired
private lateinit var passwordQualityService: PasswordQualityService
@Autowired
private lateinit var userGroupCache: UserGroupCache
@Autowired
private lateinit var userPasswordDao: UserPasswordDao
override fun afterAll() {
recreateDataBase()
}
@Test
fun testUserDO() {
logon(TEST_ADMIN_USER)
val user = userService.getInternalByUsername(TEST_ADMIN_USER)
Assertions.assertEquals(user.username, TEST_ADMIN_USER)
val user1 = getUser("user1")
val groupnames = groupService.getGroupnames(user1.id)
Assertions.assertEquals("group1; group2", groupnames, "Groupnames")
Assertions.assertEquals(true, userGroupCache.isUserMemberOfGroup(user1.id, getGroupId("group1")))
Assertions.assertEquals(false, userGroupCache.isUserMemberOfGroup(user1.id, getGroupId("group3")))
val group = groupService.getGroup(getGroupId("group1"))
Assertions.assertEquals("group1", group.name)
val admin = getUser(ADMIN)
Assertions.assertEquals(true, userGroupCache.isUserMemberOfAdminGroup(admin.id), "Administrator")
Assertions.assertEquals(false, userGroupCache.isUserMemberOfAdminGroup(user1.id), "Not administrator")
}
@Test
fun testGetUserDisplayname() {
val user = PFUserDO()
user.username = "hurzel"
Assertions.assertEquals("hurzel", user.userDisplayName, "getUserDisplayname")
user.lastname = "Reinhard"
Assertions.assertEquals("Reinhard", user.getFullname(), "getFullname")
Assertions.assertEquals("Reinhard (hurzel)", user.userDisplayName, "getUserDisplayname")
user.firstname = "Kai"
Assertions.assertEquals("Kai Reinhard", user.getFullname(), "getFullname")
Assertions.assertEquals("Kai Reinhard (hurzel)", user.userDisplayName, "getUserDisplayname")
}
@Test
fun testSaveAndUpdate() {
logon(TEST_ADMIN_USER)
var user = PFUserDO()
user.username = "UserTest"
user.description = "Description"
val id: Serializable = userService.insert(user, false)
user = userService.find(id, false)
Assertions.assertEquals("UserTest", user.username)
Assertions.assertEquals("Description", user.description)
user.description = "Description\ntest"
userService.update(user)
user = userService.find(id, false)
Assertions.assertEquals("Description\ntest", user.description)
userService.update(user)
user = userService.find(id, false)
}
@Test
fun testPasswordHandling() {
val user = PFUserDO()
user.username = "UserTest-Passwords"
user.description = "Description"
val id = userService.insert(user, false)
userPasswordDao.encryptAndSavePassword(id, "secret".toCharArray(), false)
val passwordObj = userPasswordDao.internalGetByUserId(id)
Assertions.assertNotNull(passwordObj!!.passwordHash) // Not SHA, should be ignored.
Assertions.assertTrue(passwordObj.passwordHash!!.startsWith("SHA{"))
}
/**
* Test password quality.
*/
@Test
fun testPasswordQuality() {
val minPwLenEntry = configurationDao.getEntry(ConfigurationParam.MIN_PASSWORD_LENGTH)!!
minPwLenEntry.longValue = 10
configurationDao.update(minPwLenEntry, checkAccess = false)
var passwordQualityMessages = passwordQualityService.checkPasswordQuality(STRONGOLDPW, null)
Assertions.assertTrue(
passwordQualityMessages.contains(
I18nKeyAndParams(
MESSAGE_KEY_PASSWORD_MIN_LENGTH_ERROR, 10
)
),
"Empty password not allowed."
)
passwordQualityMessages = passwordQualityService.checkPasswordQuality(STRONGOLDPW, "".toCharArray())
Assertions.assertTrue(
passwordQualityMessages.contains(
I18nKeyAndParams(
MESSAGE_KEY_PASSWORD_MIN_LENGTH_ERROR, 10
)
),
// ... (truncated, total 251 lines)
868d6abb7 2025 -> 2026 63081666f Source file headers: 2024-> 2025. 176cb32d7 WIP: Gradle f09327286 Migration stuff in progress... (all tests of all packages: OK). 3c42485eb Migration stuff in progress... (all tests of all packages: OK).