Тестирование usermanager создает пользователя, но свойство хэша пароля имеет значение null
я работаю с Microsoft.AspNetCore.Идентичность.UserManager и я пытаюсь издеваться над созданием нового пользователя. На самом деле он действительно создает нового пользователя с именем пользователя, электронной почтой и т. д., Но свойство хэша пароля по-прежнему равно нулю.
Вот как я настроил макет usermanager с некоторыми дополнительными настройками:
var store = new Mock>(); var validator = new UserValidator(); var passValidator = new PasswordValidator(); var mgr = new Mock>(store.Object, null, null, null, null, null, null, null, null); mgr.Object.UserValidators.Add(validator); mgr.Object.PasswordValidators.Add(passValidator); mgr.Object.PasswordHasher = new PasswordHasher(); mgr.Object.Options = AuthenticationRules.DefaultAuthenticationRules(); List users= new List(); mgr.Setup(x => x.DeleteAsync(It.IsAny())).ReturnsAsync(IdentityResult.Success); mgr.Setup(x => x.CreateAsync(It.IsAny(), It.IsAny())).ReturnsAsync(IdentityResult.Success).Callback((x, y) => users.Add(x)); mgr.Setup(x => x.UpdateAsync(It.IsAny())).ReturnsAsync(IdentityResult.Success);
'DefaultAuthenticationRules' возвращает это:
public static IdentityOptions DefaultAuthenticationRules( IdentityOptions identityOptions = null) { if(identityOptions == null) identityOptions = new IdentityOptions(); identityOptions.User.RequireUniqueEmail = true; identityOptions.Password.RequireNonAlphanumeric = false; identityOptions.Password.RequiredUniqueChars = 0; return identityOptions; }
Затем я передаю объект mgr.Object методу, который обрабатывает создание нового пользователя, где "объект" - это _userManager
var creationResult = await _userManager.CreateAsync(_user, _registrationModel.Password); if (!creationResult.Succeeded) return false; return true;
_registrationModel.Пароль заполняется.
Так что теперь при установке добавления нового пользователя в обратный вызов в список пользователей пользователь заполняется без хэша пароля. Я не совсем понимаю, чего мне здесь не хватает. Я что-то упустил в mgr.Подстава?
Что я уже пробовал:
Я попытался создать параметры идентификации и создать настройку для него, а затем добавить его в качестве параметра, например:
var options = new Mock>(); var idOptions = AuthenticationRules.DefaultAuthenticationRules(); options.Setup(o => o.Value).Returns(idOptions); var mgr = new Mock>(store.Object, options.Object, null, null, null, null, null, null, null);
Но свойство passwordhash по-прежнему является нулевым для пользователя.
Заранее спасибо.
Заранее спасибо