153 lines
4.8 KiB
C#
153 lines
4.8 KiB
C#
using BCrypt.Net;
|
|
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(ArgumentNullException))]
|
|
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");
|
|
}
|
|
|
|
}
|
|
} |