public void BindModel_ReturnsExpectedFacebookRedirectContext() { FacebookConfiguration config = new FacebookConfiguration(); config.AppId = "123456"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookRedirectContextModelBinder redirectContextBinder = new FacebookRedirectContextModelBinder(config); ControllerContext controllerContext = MockHelpers.CreateControllerContext( null, new NameValueCollection { { "originUrl", "https://apps.facebook.com/123456/home/index" }, { "permissions", "email,user_likes" } } ); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookRedirectContext context = Assert.IsType <FacebookRedirectContext>( redirectContextBinder.BindModel(controllerContext, modelBindingContext) ); Assert.Equal("https://apps.facebook.com/123456/home/index", context.OriginUrl); // Redirect URL should not have any permissions on it. That's handled by the authorization filter. Assert.Equal( "https://www.facebook.com/dialog/oauth?redirect_uri=https%3A%2F%2Fapps.facebook.com%2F123456%2Fhome%2Findex&client_id=123456", context.RedirectUrl ); Assert.Equal(2, context.RequiredPermissions.Length); Assert.Equal("email", context.RequiredPermissions[0]); Assert.Equal("user_likes", context.RequiredPermissions[1]); Assert.Same(config, context.Configuration); }
// This action will handle the redirects from FacebookAuthorizeFilter when // the app doesn't have all the required permissions specified in the FacebookAuthorizeAttribute. // The path to this action is defined under appSettings (in Web.config) with the key 'Facebook:AuthorizationRedirectPath'. public ActionResult Permissions(FacebookRedirectContext context) { if (ModelState.IsValid) { return(View(context)); } return(View("Error")); }
public void BindModel_ReturnsInvalidModelState_WhenOriginUrlIsNull() { FacebookConfiguration config = new FacebookConfiguration(); config.AppId = "123456"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookRedirectContextModelBinder redirectContextBinder = new FacebookRedirectContextModelBinder(config); ControllerContext controllerContext = MockHelpers.CreateControllerContext( null, new NameValueCollection { { "permissions", "email,user_likes" } }); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookRedirectContext context = Assert.IsType <FacebookRedirectContext>(redirectContextBinder.BindModel(controllerContext, modelBindingContext)); Assert.False(modelBindingContext.ModelState.IsValid); }
public void BindModel_ReturnsInvalidModelState_WhenPermissionsIsNull() { FacebookConfiguration config = new FacebookConfiguration(); config.AppId = "123456"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookRedirectContextModelBinder redirectContextBinder = new FacebookRedirectContextModelBinder(config); ControllerContext controllerContext = ContextHelpers.CreateControllerContext( null, new NameValueCollection { { "originUrl", "https://apps.facebook.com/123456/home/index" } }); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookRedirectContext context = Assert.IsType <FacebookRedirectContext>(redirectContextBinder.BindModel(controllerContext, modelBindingContext)); Assert.False(modelBindingContext.ModelState.IsValid); }