From 9f19d32f546d2f1016e2d55f575431ec85a61b2a Mon Sep 17 00:00:00 2001 From: Roar Date: Thu, 23 Apr 2026 20:37:59 +0200 Subject: [PATCH] Updated UserTest 100% coverage. --- .../team6/models/user/UserTest.java | 498 ++++++++++++++++-- 1 file changed, 454 insertions(+), 44 deletions(-) diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/user/UserTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/user/UserTest.java index 0c9cc93..d2a7c57 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/user/UserTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/user/UserTest.java @@ -5,11 +5,12 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import java.util.UUID; + class UserTest { @Nested class constructorTests { - private final String validDisplayName = "Name"; private final String validUsername = "username"; private final String validEmail = "Email@gmail.com"; private final String validPassword = "Password"; @@ -17,35 +18,6 @@ class constructorTests { private final Settings validSettings = new Settings(); private final Inbox validInbox = new Inbox(); - @Test - void shouldThrowIfDisplayNameIsNull() { - assertThrows( - IllegalArgumentException.class, - () -> - new User( - null, - validUsername, - validEmail, - validPassword, - validRole, - validSettings, - validInbox)); - } - - @Test - void shouldThrowIfDisplayNameIsBlank() { - assertThrows( - IllegalArgumentException.class, - () -> - new User( - " ", - validUsername, - validEmail, - validPassword, - validRole, - validSettings, - validInbox)); - } @Test void shouldThrowIfUsernameIsNull() { @@ -53,7 +25,6 @@ void shouldThrowIfUsernameIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, null, validEmail, validPassword, @@ -68,7 +39,6 @@ void shouldThrowIfUsernameIsBlank() { IllegalArgumentException.class, () -> new User( - validDisplayName, " ", validEmail, validPassword, @@ -86,7 +56,6 @@ void shouldThrowIfEmailIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, null, validPassword, @@ -101,7 +70,6 @@ void shouldThrowIfEmailIsBlank() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, " ", validPassword, @@ -116,7 +84,6 @@ void shouldThrowIfEmailDoesNotContainAt() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, "test.gmail.com", validPassword, @@ -131,7 +98,6 @@ void shouldThrowIfEmailDoesNotContainPeriod() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, "test@gmailcom", validPassword, @@ -147,7 +113,6 @@ void shouldThrowIfPasswordIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, validEmail, null, @@ -162,7 +127,6 @@ void shouldThrowIfRoleIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, validEmail, validPassword, @@ -177,7 +141,6 @@ void shouldThrowIfPasswordIsBlank() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, validEmail, " ", @@ -192,7 +155,6 @@ void shouldThrowIfSettingsIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, validEmail, validPassword, @@ -207,7 +169,6 @@ void shouldThrowIfInboxIsNull() { IllegalArgumentException.class, () -> new User( - validDisplayName, validUsername, validEmail, validPassword, @@ -220,7 +181,6 @@ void shouldThrowIfInboxIsNull() { void shouldCreateUser() { User user = new User( - validDisplayName, validUsername, validEmail, validPassword, @@ -229,12 +189,462 @@ void shouldCreateUser() { validInbox); assertAll( - () -> assertEquals(validDisplayName, user.getDisplayName()), () -> assertEquals(validUsername, user.getUsername()), () -> assertEquals(validEmail, user.getEmail()), () -> assertEquals(validRole, user.getRole()), () -> assertEquals(validSettings, user.getSettings()), () -> assertEquals(validInbox, user.getInbox())); } + + @Test + void shouldBeCorrectPassword() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertTrue(user.checkPassword(validPassword)); + } + + @Test + void getPasswordHashShouldNotBePlaintext() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + String hash = user.getPasswordHash(); + + assertNotEquals(hash, validPassword); + } + + @Test + void getPasswordHashShouldUseSalt() { + User user1 = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + User user2 = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertNotEquals(user1.getPasswordHash(), user2.getPasswordHash()); + } + + @Test + void setNullUsernameShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setUsername(null)); + } + + @Test + void setBlankUsernameShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setUsername(" ")); + } + + @Test + void setUserNameShouldBeCorrect() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + String newUsername = "usernamer123"; + + user.setUsername(newUsername); + + assertEquals(newUsername, user.getUsername()); + } + + @Test + void setEmailShouldChangeEmail() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + String newEmail = "email@email.com"; + user.setEmail(newEmail); + + assertEquals(newEmail, user.getEmail()); + } + + @Test + void setNullEmailShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setEmail(null) + ); + } + + @Test + void setBlankEmailShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setEmail(" ") + ); + } + + @Test + void setEmailNotContainingAtSymbolShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setEmail("email.email.com") + ); + } + + @Test + void setEmailNotContainingPeriodShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setEmail("email@emailcom") + ); + } + + @Test + void setPasswordShouldChangePassword() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + String newPassword = "p@ssword"; + user.setPassword(newPassword); + + assertTrue(user.checkPassword(newPassword)); + assertFalse(user.checkPassword(validPassword)); + } + + @Test + void setSettingsShouldChangeSettings() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + Settings newSettings = new Settings(); + user.setSettings(newSettings); + + assertSame(newSettings, user.getSettings()); + } + + @Test + void setSettingsNullShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setSettings(null) + ); + } + + @Test + void setInboxShouldChangeInbox() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + Inbox newInbox = new Inbox(); + user.setInbox(newInbox); + + assertSame(newInbox, user.getInbox()); + } + + @Test + void setNullInboxShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setInbox(null) + ); + } + + @Test + void setRoleShouldChangeRole() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + user.setRole(Role.ADMIN); + + assertSame(Role.ADMIN, user.getRole()); + } + + @Test + void setNullRoleShouldThrow() { + User user = + new User( + validUsername, + validEmail, + validPassword, + validRole, + validSettings, + validInbox); + + assertThrows( + IllegalArgumentException.class, + () -> user.setRole(null) + ); + } } -} \ No newline at end of file + + @Nested + class secondConstructorTests { + private final UUID validUUID = UUID.randomUUID(); + private final String validUsername = "username"; + private final String validEmail = "Email@gmail.com"; + private final String validPassword = "Password"; + private final Role validRole = Role.NORMAL_USER; + + @Test + void shouldThrowIfUUIDIsNull() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + null, + validUsername, validEmail, + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfUUIDIsBlank() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + " ", + validUsername, + validEmail, + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfUsernameIsNull() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + null, + validEmail, + validPassword, + validRole.toString())); + + } + + @Test + void shouldThrowIfUsernameIsBlank() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + " ", + validEmail, + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfEmailIsNull() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + validUsername, + null, + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfEmailIsBlank() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + validUsername, + " ", + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfEmailDoesNotContainAtSymbol() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + validUsername, + "emailemail.com", + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfEmailDoesNotContainPeriod() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + validUsername, + "email@emailcom", + validPassword, + validRole.toString())); + } + + @Test + void shouldThrowIfRoleIsNull() { + assertThrows( + IllegalArgumentException.class, + () -> + new User( + validUUID.toString(), + validUsername, + validEmail, + validPassword, + null)); + } + + @Test + void shouldCreateUser() { + User user = + new User( + validUUID.toString(), + validUsername, + validEmail, + validPassword, + validRole.toString()); + + assertAll( + () -> assertEquals(validUUID, user.getId()), + () -> assertEquals(validUsername, user.getUsername()), + () -> assertEquals(validEmail, user.getEmail()), + () -> assertEquals(validRole, user.getRole())); + } + } + +}