Files
studenthousedashboard/StudentHouseDashboard/Tests/UserManagerTest.cs
2023-06-09 11:51:42 +02:00

152 lines
4.7 KiB
C#

using Logic;
using Models;
using Tests.Mocks;
namespace Tests
{
[TestClass]
public class UserManagerTest
{
// constants
readonly string USER_NAME = "user";
readonly string USER_PASSWORD = "password";
[TestMethod]
public void AuthenticatedUserWrongPasswordTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
// Act
userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
User? result = userManager.AuthenticatedUser(USER_NAME, "incorrect");
// Assert
Assert.IsNull(result);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void AuthenticatedUserNullPasswordTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
// Act
userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
userManager.AuthenticatedUser(USER_NAME, null);
// Assert
// ArgumentNullException expected
}
[TestMethod]
public void AuthenticatedUserWrongNameTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
userManager.CreateUser(USER_NAME, USER_PASSWORD, UserRole.TENANT);
// Act
User? result = userManager.AuthenticatedUser("incorrect", USER_PASSWORD);
// Assert
Assert.IsNull(result);
}
[TestMethod]
public void AuthenticatedUserCorrectDetailsTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
User user = userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
// Act
User? result = userManager.AuthenticatedUser(USER_NAME, USER_PASSWORD);
// Assert
Assert.AreEqual(user, result);
}
[TestMethod]
public void CreateUserCorrectDetailsTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
int userId = 1;
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD);
User user = new User(userId, USER_NAME, hashedPassword, UserRole.TENANT);
// Act
User result = userManager.CreateUser(USER_NAME, hashedPassword, UserRole.TENANT);
// Assert
Assert.AreEqual(user.ID, result.ID);
Assert.AreEqual(user.Name, result.Name);
Assert.AreEqual(user.Password, result.Password);
Assert.AreEqual(user.Role, result.Role);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void CreateUserDuplicateNameTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
// Act
userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
// Assert
// ArgumentException expected
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void CreateUserEmptyNameTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
// Act
userManager.CreateUser("", BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
// Assert
// ArgumentException expected
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void CreateUserEmptyPasswordTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
// Act
userManager.CreateUser(USER_NAME, "", UserRole.TENANT);
// Assert
// ArgumentException expected
}
[TestMethod]
public void DisableUserTest()
{
// Arrange
UserManager userManager = new UserManager(new UserRepositoryFake());
User user = userManager.CreateUser(USER_NAME, BCrypt.Net.BCrypt.HashPassword(USER_PASSWORD), UserRole.TENANT);
// Act
userManager.DisableUser(user.ID);
// Assert
Assert.AreEqual(user.Name, $"Deleted User {user.ID}");
Assert.AreEqual(user.Password, "0");
}
}
}