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);
        }
Esempio n. 2
0
 // 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"));
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }