public async Task CreateAsync_Should_Add_User_CorrectlyAsync(string username, string email, string password, PasswordHashSalt passwordHashSalt, string apiKey) { var user = default(UserModel); _apiKeyGenerator.GenerateNewApiKey().Returns(apiKey); _userRepository.IsUsernameExistAsync(username).Returns(false); _userRepository.IsEmailExistAsync(email).Returns(false); _passwordManager.GeneratePassword(password).Returns(passwordHashSalt); _userRepository.When(x => x.AddUserAsync(Arg.Any <UserModel>())).Do(x => user = (UserModel)x[0]); await _userServiceInstance.CreateAsync(username, password, email); Assert.IsNotNull(user); Assert.AreEqual(username, user.Username); Assert.AreEqual(email, user.Email); Assert.AreEqual(passwordHashSalt.PasswordHash, user.PasswordHash); Assert.AreEqual(passwordHashSalt.Salt, user.Salt); Assert.That(DateTime.UtcNow, Is.EqualTo(user.Created).Within(1).Seconds); Assert.That(DateTime.UtcNow, Is.EqualTo(user.Updated).Within(1).Seconds); Assert.AreEqual(apiKey, user.ApiKey); }