public async void ConfirmNewEmail_SuccessfulConfirmation() { User user = new User() { Id = memberId, Email = "*****@*****.**" }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub.Setup(um => um.FindByIdAsync(memberId)).ReturnsAsync(user); userManagerStub.Setup(um => um.ConfirmEmailAsync(It.IsAny<Guid>(), It.IsAny<string>())).ReturnsAsync(IdentityResult.Success); userManagerStub.Setup(um => um.UpdateSecurityStampAsync(It.IsAny<Guid>())).ReturnsAsync(IdentityResult.Success); dbStub.Setup(db => db.UserStore).Returns(userStoreStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); ManageController controller = new ManageController(userManagerStub.Object, null, dbStub.Object, null, null) { ControllerContext = context.Object }; var result = await controller.ConfirmNewEmail(user.Id, "string"); Assert.That(result != null); }
public async void ConfirmNewEmail_EmptyGuid() { ManageController controller = new ManageController(null, null, null, null, null); var result = await controller.ConfirmNewEmail(Guid.Empty, "string"); Assert.That(result != null); }
public void ChangePasswordGET_WhenCalled_ReturnsView() { ManageController controller = new ManageController(userManager: null, signInManager: null, veilDataAccess: null, idGetter: null, stripeService: null); var result = controller.ChangePassword(); Assert.That(result != null); Assert.That(result.ViewName, Is.Empty.Or.EqualTo(nameof(ManageController.ChangePassword))); }
public async void ChangePassword_SuccessfulChange() { ChangePasswordViewModel passwordModel = new ChangePasswordViewModel() { OldPassword = "******", NewPassword = "******", }; User user = new User() { Id = memberId, Email = "*****@*****.**", NewEmail = "*****@*****.**" }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IAuthenticationManager> authenticationManagerStub = new Mock<IAuthenticationManager>(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub.Setup(um => um.FindByIdAsync(memberId)).ReturnsAsync(user); userManagerStub.Setup(um => um.ChangePasswordAsync(It.IsAny<Guid>(), It.IsAny<string>(), It.IsAny<string>())) .ReturnsAsync(IdentityResult.Success); dbStub.Setup(db => db.UserStore).Returns(userStoreStub.Object); Mock<VeilSignInManager> signInManagerMock = new Mock<VeilSignInManager>(userManagerStub.Object, authenticationManagerStub.Object); signInManagerMock.Setup(sm => sm.SignInAsync(It.IsAny<User>(), It.IsAny<bool>(), It.IsAny<bool>())).Returns(Task.FromResult(0)); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(memberId); ManageController controller = new ManageController(userManagerStub.Object, signInManagerMock.Object, dbStub.Object, idGetterStub.Object, null) { ControllerContext = context.Object }; var result = await controller.ChangePassword(passwordModel) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); }
public async void ManagePlatforms_ReturnsMatchingModel() { Member member = new Member { UserId = memberId, FavoritePlatforms = new List<Platform> { new Platform { PlatformCode = "TPlat", PlatformName = "Test Platform" } } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); ManageController controller = new ManageController( userManager: null, signInManager: null, veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: null) { ControllerContext = context.Object }; var result = await controller.ManagePlatforms() as ViewResult; Assert.That(result != null); var model = (List<Platform>) result.Model; Assert.That(model.Count, Is.EqualTo(1)); Assert.That(model[0].PlatformCode, Is.EqualTo("TPlat")); }
public async void ConfirmNewEmail_IdentityResultFails() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub.Setup(um => um.ConfirmEmailAsync(It.IsAny<Guid>(), It.IsAny<string>())).ReturnsAsync(IdentityResult.Failed()); dbStub.Setup(db => db.UserStore).Returns(userStoreStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); ManageController controller = new ManageController(userManagerStub.Object, null, dbStub.Object, null, null) { ControllerContext = context.Object }; var result = await controller.ConfirmNewEmail(memberId, "string"); Assert.That(result != null); }
public async void ConfirmNewEmail_ConfirmEmailReturnsFailedIdentityResult_AddsErrorsToModelErrors() { string[] identityErrors = { "Error 1", "Error 2", "Error 3" }; IdentityResult failedResult = IdentityResult.Failed(identityErrors); User user = new User() { Id = memberId, Email = "*****@*****.**" }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub. Setup(um => um.ConfirmEmailAsync(It.IsAny<Guid>(), It.IsAny<string>())). ReturnsAsync(failedResult); dbStub. Setup(db => db.UserStore). Returns(userStoreStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); ManageController controller = new ManageController(userManagerStub.Object, null, dbStub.Object, null, null) { ControllerContext = context.Object }; await controller.ConfirmNewEmail(user.Id, "string"); Assert.That(controller.ModelState.Count, Is.EqualTo(1)); Assert.That(controller.ModelState.First().Value.Errors.Count, Is.EqualTo(identityErrors.Length)); }
public void ConfirmNewEmail_UserIsNullThrows() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub.Setup(um => um.FindByIdAsync(memberId)).ReturnsAsync(null); userManagerStub.Setup(um => um.ConfirmEmailAsync(It.IsAny<Guid>(), It.IsAny<string>())).ReturnsAsync(IdentityResult.Success); userManagerStub.Setup(um => um.UpdateSecurityStampAsync(It.IsAny<Guid>())).ReturnsAsync(IdentityResult.Success); dbStub.Setup(db => db.UserStore).Returns(userStoreStub.Object); ManageController controller = new ManageController(userManagerStub.Object, null, dbStub.Object, null, null); Assert.That(async () => await controller.ConfirmNewEmail(memberId, "string"), Throws.InvalidOperationException); }
public async void ChangePassword_InvalidModelState() { ChangePasswordViewModel passwordModel = new ChangePasswordViewModel(); ManageController controller = new ManageController(null, null, null, null, null); controller.ModelState.AddModelError("error", "this is an error"); var result = await controller.ChangePassword(passwordModel); Assert.That(result != null); }
public async void ChangePassword_ThrowsDbEntityValidationException() { ChangePasswordViewModel passwordModel = new ChangePasswordViewModel() { NewPassword = "******", OldPassword = "******" }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<IUserStore<User, Guid>> userStoreStub = new Mock<IUserStore<User, Guid>>(); Mock<VeilUserManager> userManagerStub = new Mock<VeilUserManager>(dbStub.Object, null /*messageService*/, null /*dataProtectionProvider*/); userManagerStub.Setup(um => um.ChangePasswordAsync(It.IsAny<Guid>(), It.IsAny<string>(), It.IsAny<string>())) .ThrowsAsync(new DbEntityValidationException()); dbStub.Setup(db => db.UserStore).Returns(userStoreStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(memberId); ManageController controller = new ManageController(userManagerStub.Object, null, dbStub.Object, idGetterStub.Object, null) { ControllerContext = context.Object }; var result = await controller.ChangePassword(passwordModel); Assert.That(result != null); }
public async void ManageTags_AddingTags_ReturnsUpdatedModel() { List<Tag> tags = new List<Tag> { new Tag { Name = "Test Tag" }, new Tag { Name = "Second Tag" } }; List<string> tagStrings = new List<string> { "Test Tag", "Second Tag" }; Member member = new Member { UserId = memberId, FavoriteTags = new List<Tag> { tags[0] } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Tag>> tagDbSetStub = TestHelpers.GetFakeAsyncDbSet(tags.AsQueryable()); dbStub.Setup(db => db.Tags).Returns(tagDbSetStub.Object); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); ManageController controller = new ManageController(userManager: null, signInManager: null, veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: null) { ControllerContext = context.Object }; await controller.ManageTags(tagStrings); Assert.That(member.FavoriteTags.Count, Is.EqualTo(2)); Assert.That(member.FavoriteTags.Any(t => t.Name == "Test Tag")); Assert.That(member.FavoriteTags.Any(t => t.Name == "Second Tag")); }
public async void ManagePlatforms_NullClearsPlatforms_ReturnsUpdatedModel() { List<Platform> platforms = new List<Platform> { new Platform { PlatformCode = "TPlat", PlatformName = "Test Platform" }, new Platform { PlatformCode = "2Plat", PlatformName = "Second Platform" } }; Member member = new Member { UserId = memberId, FavoritePlatforms = platforms }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Platform>> platformDbSetStub = TestHelpers.GetFakeAsyncDbSet( platforms.AsQueryable()); dbStub.Setup(db => db.Platforms).Returns(platformDbSetStub.Object); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); ManageController controller = new ManageController( userManager: null, signInManager: null, veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: null) { ControllerContext = context.Object }; await controller.ManagePlatforms(null); Assert.That(member.FavoritePlatforms.Count, Is.EqualTo(0)); }