public virtual ActionResult Post(SignOnForm model) { if (model == null) { return(HttpNotFound()); } if (!ModelState.IsValid) { return(View(model)); } // get the establishment for this email address var establishment = _services.QueryProcessor.Execute( new GetEstablishmentByEmailQuery(model.EmailAddress) { EagerLoad = new Expression <Func <Establishment, object> >[] { e => e.SamlSignOn, } } ); PushToSamlSso(establishment, model.ReturnUrl); // wait for the authn response return(new EmptyResult()); }
public void ReturnsView_WhenModelState_IsInvalid() { var services = CreateSignOnServices(); var controller = new SignOnController(services); controller.ModelState.AddModelError("SomeProperty", "SomeMessage"); var model = new SignOnForm { EmailAddress = "invalid email" }; var result = controller.Post(model); result.ShouldNotBeNull(); result.ShouldBeType <ViewResult>(); var viewResult = (ViewResult)result; viewResult.ViewName.ShouldEqual(string.Empty); viewResult.Model.ShouldNotBeNull(); viewResult.Model.ShouldBeType <SignOnForm>(); var form = (SignOnForm)viewResult.Model; form.ShouldEqual(model); form.EmailAddress.ShouldEqual(model.EmailAddress); form.ReturnUrl.ShouldEqual(model.ReturnUrl); }
public virtual ActionResult Get(string returnUrl) { // detect SAML SSO from skin cookie var skin = HttpContext.SkinCookie(); if (!string.IsNullOrWhiteSpace(skin)) { // get the establishment for this skin var establishment = _services.QueryProcessor.Execute( new GetEstablishmentByUrlQuery(skin) { EagerLoad = new Expression<Func<Establishment, object>>[] { e => e.SamlSignOn, } } ); if (establishment != null && establishment.HasSamlSignOn()) { PushToSamlSso(establishment, returnUrl); // wait for the authn response return new EmptyResult(); } } var model = new SignOnForm(HttpContext, returnUrl); return View(model); }
public virtual ActionResult Get(string returnUrl) { // detect SAML SSO from skin cookie var skin = HttpContext.SkinCookie(); if (!string.IsNullOrWhiteSpace(skin)) { // get the establishment for this skin var establishment = _services.QueryProcessor.Execute( new GetEstablishmentByUrlQuery(skin) { EagerLoad = new Expression <Func <Establishment, object> >[] { e => e.SamlSignOn, } } ); if (establishment != null && establishment.HasSamlSignOn()) { PushToSamlSso(establishment, returnUrl); // wait for the authn response return(new EmptyResult()); } } var model = new SignOnForm(HttpContext, returnUrl); return(View(model)); }
public void IsInvalidWhen_IsWhiteSpace() { var validator = new SignOnValidator(null); var model = new SignOnForm { EmailAddress = " \t " }; var results = validator.Validate(model); results.IsValid.ShouldBeFalse(); results.Errors.Count.ShouldBeInRange(1, int.MaxValue); var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName); error.ShouldNotBeNull(); // ReSharper disable PossibleNullReferenceException error.ErrorMessage.ShouldEqual( SignOnValidator.FailedBecauseEmailAddressWasEmpty); // ReSharper restore PossibleNullReferenceException }
public virtual ActionResult Post(SignOnForm model) { if (model == null) return HttpNotFound(); if (!ModelState.IsValid) return View(model); // get the establishment for this email address var establishment = _services.QueryProcessor.Execute( new GetEstablishmentByEmailQuery(model.EmailAddress) { EagerLoad = new Expression<Func<Establishment, object>>[] { e => e.SamlSignOn, } } ); // update the provider metadata _services.CommandHandler.Handle( new UpdateSamlSignOnMetadataCommand { SamlSignOn = establishment.SamlSignOn, } ); // clear the email from temp data TempData.SigningEmailAddress(null); // send the authn request _services.SamlServiceProvider.SendAuthnRequest( establishment.SamlSignOn.SsoLocation, establishment.SamlSignOn.SsoBinding.AsSaml2SsoBinding(), _services.ConfigurationManager.SamlRealServiceProviderEntityId, model.ReturnUrl ?? Url.Action(MVC.Identity.MyHome.Get()), HttpContext ); // wait for the authn response return new EmptyResult(); }
public void ThenIShouldSeeTheSignonWindow() { signOnForm = new SignOnForm(); }
public virtual ActionResult Get(string returnUrl) { var model = new SignOnForm(HttpContext, returnUrl); return View(model); }
public void ReturnsView_WhenModelState_IsInvalid() { var services = CreateSignOnServices(); var controller = new SignOnController(services); controller.ModelState.AddModelError("SomeProperty", "SomeMessage"); var model = new SignOnForm { EmailAddress = "invalid email" }; var result = controller.Post(model); result.ShouldNotBeNull(); result.ShouldBeType<ViewResult>(); var viewResult = (ViewResult)result; viewResult.ViewName.ShouldEqual(string.Empty); viewResult.Model.ShouldNotBeNull(); viewResult.Model.ShouldBeType<SignOnForm>(); var form = (SignOnForm)viewResult.Model; form.ShouldEqual(model); form.EmailAddress.ShouldEqual(model.EmailAddress); form.ReturnUrl.ShouldEqual(model.ReturnUrl); }
public void Implements_IReturnUrl() { var model = new SignOnForm(); model.ShouldImplement<IReturnUrl>(); }
public virtual ActionResult Post(SignOnForm model) { if (model == null) return HttpNotFound(); if (!ModelState.IsValid) return View(model); // get the establishment for this email address var establishment = _services.QueryProcessor.Execute( new GetEstablishmentByEmailQuery(model.EmailAddress) { EagerLoad = new Expression<Func<Establishment, object>>[] { e => e.SamlSignOn, } } ); PushToSamlSso(establishment, model.ReturnUrl); // wait for the authn response return new EmptyResult(); }
public virtual JsonResult ValidateEmailAddress( [CustomizeValidator(Properties = SignOnForm.EmailAddressPropertyName)] SignOnForm model) { // form is valid unless email address is eligible return(ValidateRemote(SignOnForm.EmailAddressPropertyName)); }
public void IsValidWhen_IsValidEmailAddress_AndBelongsToMemberEstablishment() { var establishment = new Establishment { IsMember = true, EmailDomains = new[] { new EstablishmentEmailDomain { Value = "@domain.tld", } } }; var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize(); entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable); var validator = new SignOnValidator(entities.Object); var model = new SignOnForm { EmailAddress = "*****@*****.**" }; var results = validator.Validate(model); var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName); error.ShouldBeNull(); }
public void IsInvalidWhen_MatchingEstablishment_IsNotMember() { const string emailAddress = "*****@*****.**"; var establishment = new Establishment { IsMember = false, EmailDomains = new[] { new EstablishmentEmailDomain { Value = "@domain.tld", } } }; var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize(); entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable); var validator = new SignOnValidator(entities.Object); var model = new SignOnForm { EmailAddress = emailAddress }; var results = validator.Validate(model); results.IsValid.ShouldBeFalse(); results.Errors.Count.ShouldBeInRange(1, int.MaxValue); var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName); error.ShouldNotBeNull(); // ReSharper disable PossibleNullReferenceException error.ErrorMessage.ShouldEqual(string.Format( SignOnValidator.FailedBecauseEstablishmentIsNotEligible, emailAddress)); // ReSharper restore PossibleNullReferenceException }