public void AddValidation_WithActionControllerArea_CallsUrlHelperWithExpectedValues() { // Arrange var attribute = new RemoteAttribute("Action", "Controller", "Test") { HttpMethod = "POST", }; var url = "/Test/Controller/Action"; var urlHelper = new MockUrlHelper(url, routeName: null); var context = GetValidationContext(urlHelper); // Act attribute.AddValidation(context); // Assert Assert.Collection( context.Attributes, kvp => { Assert.Equal("data-val", kvp.Key); Assert.Equal("true", kvp.Value); }, kvp => { Assert.Equal("data-val-remote", kvp.Key); Assert.Equal("'Length' is invalid.", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-additionalfields", kvp.Key); Assert.Equal("*.Length", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-type", kvp.Key); Assert.Equal("POST", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-url", kvp.Key); Assert.Equal(url, kvp.Value); }); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(3, routeDictionary.Count); Assert.Equal("Action", routeDictionary["action"] as string); Assert.Equal("Controller", routeDictionary["controller"] as string); Assert.Equal("Test", routeDictionary["area"] as string); }
public void GetClientValidationRules_WithActionControllerArea_CallsUrlHelperWithExpectedValues() { // Arrange var attribute = new RemoteAttribute("Action", "Controller", "Test") { HttpMethod = "POST", }; var url = "/Test/Controller/Action"; var urlHelper = new MockUrlHelper(url, routeName: null); var context = GetValidationContext(urlHelper); // Act & Assert var rule = Assert.Single(attribute.GetClientValidationRules(context)); Assert.Equal("remote", rule.ValidationType); Assert.Equal("'Length' is invalid.", rule.ErrorMessage); Assert.Equal(3, rule.ValidationParameters.Count); Assert.Equal("*.Length", rule.ValidationParameters["additionalfields"]); Assert.Equal("POST", rule.ValidationParameters["type"]); Assert.Equal(url, rule.ValidationParameters["url"]); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(3, routeDictionary.Count); Assert.Equal("Action", routeDictionary["action"] as string); Assert.Equal("Controller", routeDictionary["controller"] as string); Assert.Equal("Test", routeDictionary["area"] as string); }
public void GetUrl_WhenUrlHelperReturnsNull_Throws() { // Arrange var testableAttribute = new TestablePageRemoteAttribute { PageName = "Foo", PageHandler = "Bar" }; var ambientValues = new RouteValueDictionary { ["page"] = "/Page" }; var routeData = new RouteData(ambientValues) { Routers = { Mock.Of <IRouter>() } }; var urlHelper = new MockUrlHelper(url: null) { ActionContext = GetActionContext(new ServiceCollection().BuildServiceProvider(), routeData) }; var validationContext = GetValidationContext(urlHelper); // Act && Assert ExceptionAssert.Throws <InvalidOperationException>( () => testableAttribute.InvokeGetUrl(validationContext), Resources.RemoteAttribute_NoUrlFound); }
public void GetUrl_WhenPageNameIsNotSet_WillUsePageNameFromAmbientValues() { // Arrange var testableAttribute = new TestablePageRemoteAttribute() { PageHandler = "Handler" }; var ambientValues = new RouteValueDictionary { ["page"] = "/Page" }; var routeData = new RouteData(ambientValues) { Routers = { Mock.Of <IRouter>() } }; var urlHelper = new MockUrlHelper(url: "/Page?handler=Handler") { ActionContext = GetActionContext(new ServiceCollection().BuildServiceProvider(), routeData) }; var validationContext = GetValidationContext(urlHelper); // Act var actualUrl = testableAttribute.InvokeGetUrl(validationContext); // Assert Assert.Equal("/Page?handler=Handler", actualUrl); }
private static ClientModelValidationContext GetValidationContext( string url, IModelMetadataProvider metadataProvider = null) { var urlHelper = new MockUrlHelper(url, routeName: null); return(GetValidationContext(urlHelper, localizerFactory: null, metadataProvider: metadataProvider)); }
protected override void Given() { var url = "Home/Index"; UrlActionContext actualContext = null; MockUrlHelper.Setup(h => h.Action(It.IsAny <UrlActionContext>())).Returns(url).Callback <UrlActionContext>(c => actualContext = c).Verifiable("Url.Action was never called"); _mockReportService.Setup(s => s.GetReport(It.IsAny <string>(), It.IsAny <string>())).Throws(new Exception("get report Error")); }
private static ClientModelValidationContext GetValidationContextWithLocalizerFactory( string url, IModelMetadataProvider metadataProvider = null) { var urlHelper = new MockUrlHelper(url, routeName: null); var localizerFactory = new Mock <IStringLocalizerFactory>(MockBehavior.Strict); return(GetValidationContext(urlHelper, localizerFactory.Object, metadataProvider)); }
public void ForgotPasswordTest() { var controller = new AccountController(); controller.Settings = new Models.Settings(); var mockUrlHelper = new MockUrlHelper(MockRequestContext()); mockUrlHelper.ActionCallback = (a, c, r, p) => { return(string.Format("{0}://{1}/{2}/{3}/{4}", p, c, a, r["userId"], r["code"])); }; controller.Url = mockUrlHelper; var context = CreateMockContext(controller, "ForgotPassword"); var user = new ApplicationUser { Id = NewGuid(), Email = "*****@*****.**" }; var token = Extensions.String.Random(); string resultUserId = null; string resultSubject = null; string resultBody = null; controller.SignInManager = MockApplicationSignInManager(); controller.RoleManager = CreateRoleManager(); controller.UserManager = MockApplicationUserManager((mock) => { mock.Setup(x => x.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(user); mock.Setup(x => x.IsEmailConfirmedAsync(It.IsAny <string>())).ReturnsAsync(true); mock.Setup(x => x.GeneratePasswordResetTokenAsync(It.IsAny <string>())).ReturnsAsync(token); mock.Setup(x => x.SendEmailAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(Task.FromResult(user)) .Callback <string, string, string>((userId, subject, body) => { resultUserId = userId; resultSubject = subject; resultBody = body; }); }); var model = new ForgotPasswordViewModel { Email = user.Email }; var asyncresult = controller.ForgotPassword(model); var result = asyncresult.Result; Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); var redirResult = (RedirectToRouteResult)result; Assert.AreEqual("ForgotPasswordConfirmation", redirResult.RouteValues["action"]); Assert.AreEqual(user.Id, resultUserId); Assert.AreEqual("Reset Password", resultSubject); Assert.IsTrue(resultBody.Contains(token)); Assert.IsTrue(resultBody.Contains(user.Email)); }
protected override void Given() { base.Given(); MockUrlHelper .Setup( m => m.Action( It.Is <UrlActionContext>( ctx => ctx.Action.Equals("Edit", StringComparison.OrdinalIgnoreCase) && ctx.Controller.Equals("Report", StringComparison.OrdinalIgnoreCase)) )) .Returns( ExpectedUrl); }
public void GetUrl_WithRoute_CallsUrlHelperWithExpectedValues() { // Arrange var routeName = "RouteName"; var testableRemoteAttribute = new TestableRemoteAttribute(routeName); var url = "/my/URL"; var urlHelper = new MockUrlHelper(url, routeName); var context = GetValidationContext(urlHelper); // Act var actualUrl = testableRemoteAttribute.InvokeGetUrl(context); // Assert Assert.Equal(url, actualUrl); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Empty(routeDictionary); }
public void GetUrl_WithActionController_CallsUrlHelperWithExpectedValues() { // Arrange var testableRemoteAttribute = new TestableRemoteAttribute("Action", "Controller"); var url = "/Controller/Action"; var urlHelper = new MockUrlHelper(url, routeName: null); var context = GetValidationContext(urlHelper); // Act var actualUrl = testableRemoteAttribute.InvokeGetUrl(context); // Assert Assert.Equal(url, actualUrl); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(2, routeDictionary.Count); Assert.Equal("Action", routeDictionary["action"] as string); Assert.Equal("Controller", routeDictionary["controller"] as string); }
public void GetClientValidationRules_WithRoute_CallsUrlHelperWithExpectedValues() { // Arrange var routeName = "RouteName"; var attribute = new RemoteAttribute(routeName); var url = "/my/URL"; var urlHelper = new MockUrlHelper(url, routeName); var context = GetValidationContext(urlHelper); // Act & Assert var rule = Assert.Single(attribute.GetClientValidationRules(context)); Assert.Equal("remote", rule.ValidationType); Assert.Equal("'Length' is invalid.", rule.ErrorMessage); Assert.Equal(2, rule.ValidationParameters.Count); Assert.Equal("*.Length", rule.ValidationParameters["additionalfields"]); Assert.Equal(url, rule.ValidationParameters["url"]); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Empty(routeDictionary); }
public void AddValidation_WithRoute_CallsUrlHelperWithExpectedValues() { // Arrange var routeName = "RouteName"; var attribute = new RemoteAttribute(routeName); var url = "/my/URL"; var urlHelper = new MockUrlHelper(url, routeName); var context = GetValidationContext(urlHelper); // Act attribute.AddValidation(context); // Assert Assert.Collection( context.Attributes, kvp => { Assert.Equal("data-val", kvp.Key); Assert.Equal("true", kvp.Value); }, kvp => { Assert.Equal("data-val-remote", kvp.Key); Assert.Equal("'Length' is invalid.", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-additionalfields", kvp.Key); Assert.Equal("*.Length", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-url", kvp.Key); Assert.Equal(url, kvp.Value); }); var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Empty(routeDictionary); }
public void GetUrl_CallsUrlHelperWithExpectedValues() { // Arrange var testableAttribute = new TestablePageRemoteAttribute { PageName = "Foo", PageHandler = "Bar" }; var ambientValues = new RouteValueDictionary() { ["page"] = "/Foo" }; var routeData = new RouteData(ambientValues) { Routers = { Mock.Of <IRouter>() } }; var urlHelper = new MockUrlHelper(url: "/Foo?handler=Bar") { ActionContext = GetActionContext(new ServiceCollection().BuildServiceProvider(), routeData) }; var validationContext = GetValidationContext(urlHelper); // Act testableAttribute.InvokeGetUrl(validationContext); // Assert var routeDictionary = Assert.IsType <RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(2, routeDictionary.Count); Assert.Equal("/Foo", routeDictionary["page"] as string); Assert.Equal("Bar", routeDictionary["handler"] as string); }
public void GetClientValidationRules_WithActionControllerArea_CallsUrlHelperWithExpectedValues() { // Arrange var attribute = new RemoteAttribute("Action", "Controller", "Test") { HttpMethod = "POST", }; var url = "/Test/Controller/Action"; var urlHelper = new MockUrlHelper(url, routeName: null); var context = GetValidationContext(urlHelper); // Act & Assert var rule = Assert.Single(attribute.GetClientValidationRules(context)); Assert.Equal("remote", rule.ValidationType); Assert.Equal("'Length' is invalid.", rule.ErrorMessage); Assert.Equal(3, rule.ValidationParameters.Count); Assert.Equal("*.Length", rule.ValidationParameters["additionalfields"]); Assert.Equal("POST", rule.ValidationParameters["type"]); Assert.Equal(url, rule.ValidationParameters["url"]); var routeDictionary = Assert.IsType<RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(3, routeDictionary.Count); Assert.Equal("Action", routeDictionary["action"] as string); Assert.Equal("Controller", routeDictionary["controller"] as string); Assert.Equal("Test", routeDictionary["area"] as string); }
public void GetClientValidationRules_WithRoute_CallsUrlHelperWithExpectedValues() { // Arrange var routeName = "RouteName"; var attribute = new RemoteAttribute(routeName); var url = "/my/URL"; var urlHelper = new MockUrlHelper(url, routeName); var context = GetValidationContext(urlHelper); // Act & Assert var rule = Assert.Single(attribute.GetClientValidationRules(context)); Assert.Equal("remote", rule.ValidationType); Assert.Equal("'Length' is invalid.", rule.ErrorMessage); Assert.Equal(2, rule.ValidationParameters.Count); Assert.Equal("*.Length", rule.ValidationParameters["additionalfields"]); Assert.Equal(url, rule.ValidationParameters["url"]); var routeDictionary = Assert.IsType<RouteValueDictionary>(urlHelper.RouteValues); Assert.Empty(routeDictionary); }
private static ClientModelValidationContext GetValidationContext(string url) { var urlHelper = new MockUrlHelper(url, routeName: null); return(GetValidationContext(urlHelper)); }
private static ClientModelValidationContext GetValidationContext( string url, IModelMetadataProvider metadataProvider = null) { var urlHelper = new MockUrlHelper(url, routeName: null); return GetValidationContext(urlHelper, localizerFactory: null, metadataProvider: metadataProvider); }
public void AddValidation_WithRoute_CallsUrlHelperWithExpectedValues() { // Arrange var routeName = "RouteName"; var attribute = new RemoteAttribute(routeName); var url = "/my/URL"; var urlHelper = new MockUrlHelper(url, routeName); var context = GetValidationContext(urlHelper); // Act attribute.AddValidation(context); // Assert Assert.Collection( context.Attributes, kvp => { Assert.Equal("data-val", kvp.Key); Assert.Equal("true", kvp.Value); }, kvp => { Assert.Equal("data-val-remote", kvp.Key); Assert.Equal("'Length' is invalid.", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-additionalfields", kvp.Key); Assert.Equal("*.Length", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-url", kvp.Key); Assert.Equal(url, kvp.Value); }); var routeDictionary = Assert.IsType<RouteValueDictionary>(urlHelper.RouteValues); Assert.Empty(routeDictionary); }
public void AddValidation_WithActionController_PropertiesSet_CallsUrlHelperWithExpectedValues() { // Arrange var attribute = new RemoteAttribute("Action", "Controller") { HttpMethod = "POST", AdditionalFields = "Password,ConfirmPassword", }; var url = "/Controller/Action"; var urlHelper = new MockUrlHelper(url, routeName: null); var context = GetValidationContext(urlHelper); // Act attribute.AddValidation(context); // Assert Assert.Collection( context.Attributes, kvp => { Assert.Equal("data-val", kvp.Key); Assert.Equal("true", kvp.Value); }, kvp => { Assert.Equal("data-val-remote", kvp.Key); Assert.Equal("'Length' is invalid.", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-additionalfields", kvp.Key); Assert.Equal("*.Length,*.Password,*.ConfirmPassword", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-type", kvp.Key); Assert.Equal("POST", kvp.Value); }, kvp => { Assert.Equal("data-val-remote-url", kvp.Key); Assert.Equal(url, kvp.Value); }); var routeDictionary = Assert.IsType<RouteValueDictionary>(urlHelper.RouteValues); Assert.Equal(2, routeDictionary.Count); Assert.Equal("Action", routeDictionary["action"] as string); Assert.Equal("Controller", routeDictionary["controller"] as string); }
private static ClientModelValidationContext GetValidationContextWithLocalizerFactory( string url, IModelMetadataProvider metadataProvider = null) { var urlHelper = new MockUrlHelper(url, routeName: null); var localizerFactory = new Mock<IStringLocalizerFactory>(MockBehavior.Strict); return GetValidationContext(urlHelper, localizerFactory.Object, metadataProvider); }