using BasicDotnetTemplate.MainProject.Services; using BasicDotnetTemplate.MainProject.Models.Api.Data.User; using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; namespace BasicDotnetTemplate.MainProject.Tests; [TestClass] public class UserService_Tests { private static User? _user; private static Role? _role; [TestMethod] public void Inizialize() { try { var _userService = TestUtils.CreateUserService(); if (_userService != null) { Assert.IsInstanceOfType(_userService, typeof(UserService)); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task GetUserByUsernameAndPassword_Null() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); var testString = "test"; if (_userService != null) { var user = await _userService.GetUserByUsernameAndPassword(testString, testString); Assert.IsTrue(user == null); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } // TODO // [TestMethod] public async Task GetUserByUsernameAndPassword_Success() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); var testEmail = "test@email.it"; var testPassword = "password"; if (_userService != null) { var user = await _userService.GetUserByUsernameAndPassword(testEmail, testPassword); Assert.IsTrue(user != null); Assert.IsTrue(user.Email == testEmail); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task CheckIfEmailIsValid_EmailNotExists() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var valid = await _userService.CheckIfEmailIsValid(_expectedUser?.Email ?? String.Empty); Assert.IsTrue(valid); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task CreateUserData() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); CreateUserRequestData data = new CreateUserRequestData() { FirstName = _expectedUser?.FirstName ?? String.Empty, LastName = _expectedUser?.LastName ?? String.Empty, Email = _expectedUser?.Email ?? String.Empty }; Role role = new Role() { Name = _expectedUser?.Role?.Name ?? String.Empty, IsNotEditable = _expectedUser?.Role?.IsNotEditable ?? false, Guid = _expectedUser?.Role?.Guid ?? String.Empty }; if (_userService != null) { var user = await _userService.CreateUserAsync(data, role); Assert.IsInstanceOfType(user, typeof(User)); Assert.IsNotNull(user); Assert.IsTrue(_expectedUser?.FirstName == user.FirstName); Assert.IsTrue(_expectedUser?.LastName == user.LastName); Assert.IsTrue(_expectedUser?.Email == user.Email); Assert.IsTrue(_expectedUser?.Role?.Name == user.Role?.Name); _user = user; _role = user.Role; } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task CheckIfEmailIsValid_EmailCurrentUser() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var valid = await _userService.CheckIfEmailIsValid(_expectedUser?.Email ?? String.Empty, _user?.Guid ?? String.Empty); Assert.IsTrue(valid); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task CheckIfEmailIsValid_EmailAlreadyExists() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var valid = await _userService.CheckIfEmailIsValid(_expectedUser?.Email ?? String.Empty); Assert.IsFalse(valid); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task GetUserByIdAsync() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var user = await _userService.GetUserByIdAsync(_user?.Id ?? 0); Assert.IsNotNull(user); Assert.IsTrue(user.Id == _user?.Id); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task GetUserByGuidAsync() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var user = await _userService.GetUserByGuidAsync(_user?.Guid ?? String.Empty); Assert.IsNotNull(user); Assert.IsTrue(user.Guid == _user?.Guid); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestMethod] public async Task DeleteUser() { try { var _expectedUser = ModelsInit.CreateUser(); var _userService = TestUtils.CreateUserService(); var _roleService = TestUtils.CreateRoleService(); if (_userService != null) { var user = await _userService.GetUserByGuidAsync(_user?.Guid ?? String.Empty); Assert.IsNotNull(user); var deleted = await _userService.DeleteUserAsync(user); Assert.IsTrue(deleted); } else { Assert.Fail($"UserService is null"); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); Assert.Fail($"An exception was thrown: {ex}"); } } [TestCleanup] public static async Task CleanupAsync() { var _roleService = TestUtils.CreateRoleService(); var role = await _roleService?.GetRoleByGuidAsync(_role?.Guid ?? String.Empty); Assert.IsNotNull(role); var deleted = await _roleService?.DeleteRoleAsync(role); Assert.IsTrue(deleted); } }