public void SendsMessageToGalleryOwnerWithEmailOnlyWhenUnauthenticated() { var messageService = new Mock<IMessageService>(); messageService.Setup(s => s.ReportAbuse( It.IsAny<MailAddress>(), It.IsAny<Package>(), "Mordor took my finger")); var package = new Package { PackageRegistration = new PackageRegistration { Id = "mordor" }, Version = "2.0.1" }; var packageSvc = new Mock<IPackageService>(); packageSvc.Setup(p => p.FindPackageByIdAndVersion("mordor", "2.0.1", true)).Returns(package); var httpContext = new Mock<HttpContextBase>(); httpContext.Setup(h => h.Request.IsAuthenticated).Returns(false); var controller = CreateController(packageSvc: packageSvc, messageSvc: messageService, httpContext: httpContext); var model = new ReportAbuseViewModel { Email = "*****@*****.**", Message = "Mordor took my finger." }; var result = controller.ReportAbuse("mordor", "2.0.1", model) as RedirectToRouteResult; Assert.NotNull(result); messageService.Verify(s => s.ReportAbuse( It.Is<MailAddress>(m => m.Address == "*****@*****.**"), package, "Mordor took my finger." )); }
public void SendsMessageToGalleryOwnerWithUserInfoWhenAuthenticated() { var messageService = new Mock<IMessageService>(); messageService.Setup(s => s.ReportAbuse( It.IsAny<MailAddress>(), It.IsAny<Package>(), "Mordor took my finger")); var package = new Package { PackageRegistration = new PackageRegistration { Id = "mordor" }, Version = "2.0.1" }; var packageSvc = new Mock<IPackageService>(); packageSvc.Setup(p => p.FindPackageByIdAndVersion("mordor", It.IsAny<string>(), true)).Returns(package); var httpContext = new Mock<HttpContextBase>(); httpContext.Setup(h => h.Request.IsAuthenticated).Returns(true); httpContext.Setup(h => h.User.Identity.Name).Returns("Frodo"); var userSvc = new Mock<IUserService>(); userSvc.Setup(u => u.FindByUsername("Frodo")).Returns(new User { EmailAddress = "*****@*****.**", Username = "******" }); var controller = CreateController(packageSvc: packageSvc, messageSvc: messageService, userSvc: userSvc, httpContext: httpContext); var model = new ReportAbuseViewModel { Message = "Mordor took my finger." }; var result = controller.ReportAbuse("mordor", "2.0.1", model) as RedirectToRouteResult; Assert.NotNull(result); userSvc.VerifyAll(); messageService.Verify(s => s.ReportAbuse( It.Is<MailAddress>(m => m.Address == "*****@*****.**" && m.DisplayName == "Frodo"), package, "Mordor took my finger." )); }