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);
        }
        public void OnAuthorization_RedirectsToAuthorizationRedirectPath_OnlyWhenUserDeniedGrantingPermissions(string requestUrl, string expectedRedirectUrl)
        {
            FacebookClient             client            = MockHelpers.CreateFacebookClient();
            IFacebookPermissionService permissionService = MockHelpers.CreatePermissionService(new[] { "" });
            FacebookConfiguration      config            = MockHelpers.CreateConfiguration(client, permissionService);

            config.AuthorizationRedirectPath = "~/home/permissions";
            FacebookAuthorizeFilter authorizeFilter = new FacebookAuthorizeFilter(config);
            AuthorizationContext    context         = new AuthorizationContext(
                MockHelpers.CreateControllerContext(new NameValueCollection
            {
                { "signed_request", "exampleSignedRequest" }
            },
                                                    null,
                                                    new Uri(requestUrl)),
                MockHelpers.CreateActionDescriptor(new[] { new FacebookAuthorizeAttribute("email") }));

            authorizeFilter.OnAuthorization(context);

            ContentResult result = Assert.IsAssignableFrom <JavaScriptRedirectResult>(context.Result);

            Assert.Equal("text/html", result.ContentType);
            Assert.Equal(
                String.Format("<script>window.top.location = '{0}';</script>", expectedRedirectUrl),
                result.Content);
        }
 public FacebookService(IOptions <FacebookConfiguration> options,
                        HttpClient client)
 {
     this.config  = options.Value;
     this.client  = client;
     this.Enabled = this.config.Enabled;
 }
        public void OnAuthorization_RedirectsToOAuthDialog_ForMissingPermissions()
        {
            FacebookClient             client            = MockHelpers.CreateFacebookClient();
            IFacebookPermissionService permissionService = MockHelpers.CreatePermissionService(
                new[] { "" }
                );
            FacebookConfiguration config = MockHelpers.CreateConfiguration(
                client,
                permissionService
                );
            FacebookAuthorizeFilter authorizeFilter = new FacebookAuthorizeFilter(config);
            AuthorizationContext    context         = new AuthorizationContext(
                MockHelpers.CreateControllerContext(
                    new NameValueCollection {
                { "signed_request", "exampleSignedRequest" }
            }
                    ),
                MockHelpers.CreateActionDescriptor(
                    new[] { new FacebookAuthorizeAttribute("email", "user_likes") }
                    )
                );

            authorizeFilter.OnAuthorization(context);

            ContentResult result = Assert.IsType <ShowPromptResult>(context.Result);

            Assert.Equal("text/html", result.ContentType);
            Assert.Equal(
                "<script>window.top.location = 'https://www.facebook.com/dialog/oauth?redirect_uri=example.com';</script>",
                result.Content
                );
        }
Пример #5
0
        public void AppUrl_FromAppId()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppId = "654321";
            Assert.Equal("https://apps.facebook.com/654321", config.AppUrl);
        }
        public void OnAuthorization_ThrowsArgumentNullException()
        {
            FacebookConfiguration   config          = MockHelpers.CreateConfiguration();
            FacebookAuthorizeFilter authorizeFilter = new FacebookAuthorizeFilter(config);

            Assert.ThrowsArgumentNull(() => authorizeFilter.OnAuthorization(null), "filterContext");
        }
        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);
        }
        public void BindModel_ReturnsExpectedFacebookContext_WhenSignedRequestComesFromQuery()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppSecret      = "3e29b24f825e737d97aed5eb62df5076";
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            FacebookContextModelBinder contextBinder     = new FacebookContextModelBinder(config);
            ControllerContext          controllerContext = MockHelpers.CreateControllerContext(
                null,
                new NameValueCollection
            {
                {
                    "signed_request",
                    "x1yDEgacN3N5iu23Ji8NLYp9LGO1-cUXKHTJQrMqzVQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzNTM5MTMyMDAsImlzc3VlZF9hdCI6MTM1MzkwNzQ5Miwib2F1dGhfdG9rZW4iOiJBQUFGUlJPcWtwZ01CQURBSjNQZk5vNldXMlJ5WkFSQ1hjU0daQlhpNTBLTG9wRzFwYmFwc2M2aThKY3h6WkFQN1pDSnlpcXVHYlc3WXlCam1aQjh0UWpyelZ2VTNrYm44b3N3WXR5czkzTWdaRFpEIiwidXNlciI6eyJjb3VudHJ5IjoidXMiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiIxNzgyNTkwMSJ9"
                }
            }
                );

            FacebookContext context = Assert.IsType <FacebookContext>(
                contextBinder.BindModel(controllerContext, new ModelBindingContext())
                );

            Assert.NotNull((object)context.SignedRequest);
            Assert.NotNull(context.AccessToken);
            Assert.Equal("17825901", context.UserId);
        }
Пример #9
0
        public static FacebookConfiguration CreateConfiguration(
            FacebookClient client = null,
            IFacebookPermissionService permissionService = null
            )
        {
            FacebookConfiguration config = new FacebookConfiguration();

            if (client == null)
            {
                config.ClientProvider = new DefaultFacebookClientProvider(config);
                config.AppId          = "DefaultAppId";
                config.AppSecret      = "DefaultAppSecret";
            }
            else
            {
                Mock <IFacebookClientProvider> clientProvider = new Mock <IFacebookClientProvider>();
                clientProvider.Setup(cp => cp.CreateClient()).Returns(client);
                config.ClientProvider = clientProvider.Object;
                config.AppId          = client.AppId ?? "DefaultAppId";
                config.AppSecret      = client.AppSecret ?? "DefaultAppSecret";
            }
            config.PermissionService =
                permissionService ?? new DefaultFacebookPermissionService(config);
            return(config);
        }
 public void AppUrl_FromAppNamespace()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     config.AppId = "654321";
     config.AppNamespace = "MyCustomApp";
     Assert.Equal("https://apps.facebook.com/MyCustomApp", config.AppUrl);
 }
Пример #11
0
        public void AppUrl_FromAppNamespace()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppId        = "654321";
            config.AppNamespace = "MyCustomApp";
            Assert.Equal("https://apps.facebook.com/MyCustomApp", config.AppUrl);
        }
 public void OnAuthorization_ThrowsArgumentNullException()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     FacebookAuthorizeFilter authorizeFilter = new FacebookAuthorizeFilter(config);
     Assert.ThrowsArgumentNull(
         () => authorizeFilter.OnAuthorization(null),
         "filterContext");
 }
Пример #13
0
 public CustomReturningAuthorizeFilter(FacebookConfiguration config,
                                       ActionResult promptPermissionHookResult,
                                       ActionResult deniedPermissionPromptHookResult)
     : base(config)
 {
     _promptPermissionHookResult       = promptPermissionHookResult;
     _deniedPermissionPromptHookResult = deniedPermissionPromptHookResult;
 }
Пример #14
0
 public AccountController(IUserService userService, IOptions <TokenConfiguration> tokenConfiguration,
                          IOptions <FacebookConfiguration> facebookConfiguration, SignInManager <User> signInManager)
 {
     _userService           = userService;
     _tokenConfiguration    = tokenConfiguration.Value;
     _signInManager         = signInManager;
     _facebookConfiguration = facebookConfiguration.Value;
 }
 public void AppUrl_FromCustomUrl()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     config.AppId = "654321";
     config.AppNamespace = "MyCustomApp";
     config.AppUrl = "http://apps.example.com/myapp";
     Assert.Equal("http://apps.example.com/myapp", config.AppUrl);
 }
Пример #16
0
        public void CannotCreateCookieRedirectPath_ThrowsArgumentException()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            Assert.ThrowsArgument(
                () => config.CannotCreateCookieRedirectPath = "Home/Permissions",
                "value"
                );
        }
        public void GetUserPermissions_ThrowsArgumentNullException()
        {
            FacebookConfiguration config = new FacebookConfiguration();
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            DefaultFacebookPermissionService permissionService = new DefaultFacebookPermissionService(config);

            Assert.ThrowsArgumentNull(() => permissionService.GetUserPermissions(null, "accessToken"), "userId");
            Assert.ThrowsArgumentNull(() => permissionService.GetUserPermissions("userId", null), "accessToken");
        }
Пример #18
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DefaultFacebookPermissionService" /> class.
        /// </summary>
        /// <param name="configuration">The <see cref="FacebookConfiguration"/>.</param>
        public DefaultFacebookPermissionService(FacebookConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _config = configuration;
        }
        public FacebookAuthorizeFilter(FacebookConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            _config = config;
        }
Пример #20
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FacebookAuthorizeFilter" /> class.
        /// </summary>
        /// <param name="config">The <see cref="FacebookConfiguration"/>.</param>
        public FacebookAuthorizeFilter(FacebookConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            _config = config;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="FacebookRedirectContextModelBinder" /> class.
        /// </summary>
        /// <param name="config">The <see cref="FacebookConfiguration"/>.</param>
        public FacebookRedirectContextModelBinder(FacebookConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            _config = config;
        }
Пример #22
0
        public static void Register(FacebookConfiguration configuration)
        {
            // Loads the settings from web.config using the following app setting keys:
            // Facebook:AppId, Facebook:AppSecret, Facebook:AppNamespace
            configuration.LoadFromAppSettings();

            // Adding the authorization filter to check for Facebook signed requests and permissions
            //GlobalFilters.Filters.Add(new FacebookAuthorizeFilter(configuration));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DefaultFacebookPermissionService" /> class.
        /// </summary>
        /// <param name="configuration">The <see cref="FacebookConfiguration"/>.</param>
        public DefaultFacebookPermissionService(FacebookConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _config = configuration;
        }
Пример #24
0
        public static void Register(FacebookConfiguration configuration)
        {
            // 다음 응용 프로그램 설정 키를 사용하여 web.config의 설정을 로드합니다.
            // Facebook:AppId, Facebook:AppSecret, Facebook:AppNamespace
            configuration.LoadFromAppSettings();

            // Facebook에서 서명한 요청 및 권한을 확인하기 위해 권한 부여 필터 추가
            GlobalFilters.Filters.Add(new FacebookAuthorizeFilter(configuration));
        }
Пример #25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DefaultFacebookClientProvider" /> class.
        /// </summary>
        /// <param name="configuration">The <see cref="FacebookConfiguration"/>.</param>
        public DefaultFacebookClientProvider(FacebookConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _config = configuration;
        }
Пример #26
0
        public void AuthorizationRedirectPath_ThrowsArgumentException()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            Assert.ThrowsArgument(
                () => config.AuthorizationRedirectPath = "Home/Permissions",
                "value"
                );
        }
Пример #27
0
        public void AppUrl_FromCustomUrl()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppId        = "654321";
            config.AppNamespace = "MyCustomApp";
            config.AppUrl       = "http://apps.example.com/myapp";
            Assert.Equal("http://apps.example.com/myapp", config.AppUrl);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="FacebookContextModelBinder" /> class.
        /// </summary>
        /// <param name="config">The <see cref="FacebookConfiguration"/>.</param>
        public FacebookContextModelBinder(FacebookConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            _config = config;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DefaultFacebookClientProvider" /> class.
        /// </summary>
        /// <param name="configuration">The <see cref="FacebookConfiguration"/>.</param>
        public DefaultFacebookClientProvider(FacebookConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _config = configuration;
        }
Пример #30
0
        public void GetUserPermissions_ThrowsArgumentNullException()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.ClientProvider = new DefaultFacebookClientProvider(config);
            DefaultFacebookPermissionService permissionService = new DefaultFacebookPermissionService(config);

            Assert.ThrowsArgumentNull(() => permissionService.GetUserPermissions(null, "accessToken"), "userId");
            Assert.ThrowsArgumentNull(() => permissionService.GetUserPermissions("userId", null), "accessToken");
        }
 public void LoadFromAppSettings_ReadsFromAppConfig()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     config.LoadFromAppSettings();
     Assert.Equal("123456", config.AppId);
     Assert.Equal("abcdefg", config.AppSecret);
     Assert.Equal("MyApp", config.AppNamespace);
     Assert.Equal("/Authorize/Index", config.AuthorizationRedirectPath);
     Assert.Equal("https://apps.newfacebook.example.com/myapp", config.AppUrl);
 }
Пример #32
0
        public void GetUserPermissions_CallsGetOnFacebookClientWithExpectedPath()
        {
            LocalFacebookClient              localClient       = new LocalFacebookClient();
            FacebookConfiguration            config            = MockHelpers.CreateConfiguration(localClient);
            DefaultFacebookPermissionService permissionService = new DefaultFacebookPermissionService(config);

            permissionService.GetUserPermissions("123456", "sampleAccessToken");

            Assert.Equal("me/permissions", localClient.Path);
        }
        public void CreateRedirectResult_StringEncodesTheRedirectUrl()
        {
            Uri uri = new Uri("http://example.com?query=4'; alert('hello world')");
            FacebookConfiguration   config          = MockHelpers.CreateConfiguration();
            FacebookAuthorizeFilter authorizeFilter = new FacebookAuthorizeFilter(config);

            ContentResult result = Assert.IsType <JavaScriptRedirectResult>(authorizeFilter.CreateRedirectResult(uri));

            Assert.Equal("text/html", result.ContentType);
            Assert.Equal(@"<script>window.top.location = 'http://example.com/?query=4\u0027;%20alert(\u0027hello%20world\u0027)';</script>", result.Content);
        }
Пример #34
0
        public void LoadFromAppSettings_ReadsFromAppConfig()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.LoadFromAppSettings();
            Assert.Equal("123456", config.AppId);
            Assert.Equal("abcdefg", config.AppSecret);
            Assert.Equal("MyApp", config.AppNamespace);
            Assert.Equal("~/Authorize/Index", config.AuthorizationRedirectPath);
            Assert.Equal("https://apps.newfacebook.example.com/myapp", config.AppUrl);
        }
 public void Default_Constructor()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     Assert.Null(config.AppId);
     Assert.Null(config.AppNamespace);
     Assert.Null(config.AppSecret);
     Assert.NotNull(config.AppUrl);
     Assert.Null(config.AuthorizationRedirectPath);
     Assert.Null(config.ClientProvider);
     Assert.Null(config.PermissionService);
     Assert.NotNull(config.Properties);
 }
            public UserRealtimeCallbackController(string appSecret, string verifyToken)
            {
                // Avoid base class's fallback to static GlobalFacebookConfiguration.
                var config = new FacebookConfiguration();

                config.ClientProvider    = new DefaultFacebookClientProvider(config);
                config.PermissionService = new DefaultFacebookPermissionService(config);
                config.AppSecret         = appSecret;

                FacebookConfiguration = config;
                _verifyToken          = verifyToken;
            }
        public static void Register(FacebookConfiguration configuration)
        {
            // Loads the settings from web.config using the following app setting keys:
            GlobalFacebookConfiguration.Configuration.AppId =
                ConfigurationManager.AppSettings["Facebook_AppId"];
            GlobalFacebookConfiguration.Configuration.AppSecret =
                ConfigurationManager.AppSettings["Facebook_AppSecret"];

            // Adding the authorization filter to check for Facebook signed requests
            // and permissions
            GlobalFilters.Filters.Add(new FacebookAuthorizeFilter(configuration));
        }
Пример #38
0
        public void Default_Configuration()
        {
            FacebookConfiguration config = GlobalFacebookConfiguration.Configuration;

            Assert.Null(config.AppId);
            Assert.Null(config.AppNamespace);
            Assert.Null(config.AppSecret);
            Assert.NotNull(config.AppUrl);
            Assert.Null(config.AuthorizationRedirectPath);
            Assert.NotNull(config.ClientProvider);
            Assert.NotNull(config.PermissionService);
            Assert.NotNull(config.Properties);
        }
Пример #39
0
        public void Default_Constructor()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            Assert.Null(config.AppId);
            Assert.Null(config.AppNamespace);
            Assert.Null(config.AppSecret);
            Assert.NotNull(config.AppUrl);
            Assert.Null(config.AuthorizationRedirectPath);
            Assert.Null(config.CannotCreateCookieRedirectPath);
            Assert.Null(config.ClientProvider);
            Assert.Null(config.PermissionService);
            Assert.NotNull(config.Properties);
        }
        public void BindModel_ReturnsInvalidModelState_WhenSignedRequestIsNull()
        {
            FacebookConfiguration config = new FacebookConfiguration();
            config.AppSecret = "abcdef";
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            FacebookContextModelBinder contextBinder = new FacebookContextModelBinder(config);
            ControllerContext controllerContext = MockHelpers.CreateControllerContext();
            ModelBindingContext modelBindingContext = new ModelBindingContext();

            object context = contextBinder.BindModel(controllerContext, modelBindingContext);

            Assert.Null(context);
            Assert.False(modelBindingContext.ModelState.IsValid);
        }
        public void CreateClient_ReturnsClientWithAppIdAndAppSecret()
        {
            string appId = "654321";
            string appSecret = "abcdefg123";
            FacebookConfiguration config = new FacebookConfiguration
            {
                AppId = appId,
                AppSecret = appSecret
            };
            DefaultFacebookClientProvider clientProvider = new DefaultFacebookClientProvider(config);
            FacebookClient client = clientProvider.CreateClient();

            Assert.Equal(appId, client.AppId);
            Assert.Equal(appSecret, client.AppSecret);
        }
        public void CreateClient_ReturnsClientWithAppIdAndAppSecret()
        {
            string appId                 = "654321";
            string appSecret             = "abcdefg123";
            FacebookConfiguration config = new FacebookConfiguration
            {
                AppId     = appId,
                AppSecret = appSecret
            };
            DefaultFacebookClientProvider clientProvider = new DefaultFacebookClientProvider(config);
            FacebookClient client = clientProvider.CreateClient();

            Assert.Equal(appId, client.AppId);
            Assert.Equal(appSecret, client.AppSecret);
        }
Пример #43
0
        public void BindModel_ReturnsInvalidModelState_WhenSignedRequestIsNull()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppSecret      = "abcdef";
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            FacebookContextModelBinder contextBinder       = new FacebookContextModelBinder(config);
            ControllerContext          controllerContext   = MockHelpers.CreateControllerContext();
            ModelBindingContext        modelBindingContext = new ModelBindingContext();

            object context = contextBinder.BindModel(controllerContext, modelBindingContext);

            Assert.Null(context);
            Assert.False(modelBindingContext.ModelState.IsValid);
        }
        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);
        }
        public void BindModel_ReturnsExpectedFacebookContext_WhenSignedRequestComesFromForm()
        {
            FacebookConfiguration config = new FacebookConfiguration();
            config.AppSecret = "3e29b24f825e737d97aed5eb62df5076";
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            FacebookContextModelBinder contextBinder = new FacebookContextModelBinder(config);
            ControllerContext controllerContext = MockHelpers.CreateControllerContext(new NameValueCollection
            {
                {"signed_request", "x1yDEgacN3N5iu23Ji8NLYp9LGO1-cUXKHTJQrMqzVQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzNTM5MTMyMDAsImlzc3VlZF9hdCI6MTM1MzkwNzQ5Miwib2F1dGhfdG9rZW4iOiJBQUFGUlJPcWtwZ01CQURBSjNQZk5vNldXMlJ5WkFSQ1hjU0daQlhpNTBLTG9wRzFwYmFwc2M2aThKY3h6WkFQN1pDSnlpcXVHYlc3WXlCam1aQjh0UWpyelZ2VTNrYm44b3N3WXR5czkzTWdaRFpEIiwidXNlciI6eyJjb3VudHJ5IjoidXMiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiIxNzgyNTkwMSJ9"}
            });
            ModelBindingContext modelBindingContext = new ModelBindingContext();

            FacebookContext context = Assert.IsType<FacebookContext>(contextBinder.BindModel(controllerContext, modelBindingContext));

            Assert.NotNull((object)context.SignedRequest);
            Assert.NotNull(context.AccessToken);
            Assert.Equal("17825901", context.UserId);
        }
Пример #47
0
        public static FacebookConfiguration CreateConfiguration(FacebookClient client = null, IFacebookPermissionService permissionService = null)
        {
            FacebookConfiguration config = new FacebookConfiguration();

            if (client == null)
            {
                config.ClientProvider = new DefaultFacebookClientProvider(config);
                config.AppId = "DefaultAppId";
                config.AppSecret = "DefaultAppSecret";
            }
            else
            {
                Mock<IFacebookClientProvider> clientProvider = new Mock<IFacebookClientProvider>();
                clientProvider.Setup(cp => cp.CreateClient()).Returns(client);
                config.ClientProvider = clientProvider.Object;
                config.AppId = client.AppId ?? "DefaultAppId";
                config.AppSecret = client.AppSecret ?? "DefaultAppSecret";
            }
            config.PermissionService = permissionService ?? new DefaultFacebookPermissionService(config);
            return config;
        }
 public CustomInvalidAuthorizeFilter(FacebookConfiguration config)
     : base(config)
 { }
 public CustomReturningAuthorizeFilter(FacebookConfiguration config,
                                       ActionResult cannotCreateCookieResult,
                                       ActionResult promptPermissionHookResult,
                                       ActionResult deniedPermissionPromptHookResult)
     : base(config)
 {
     _cannotCreateCookieResult = cannotCreateCookieResult;
     _promptPermissionHookResult = promptPermissionHookResult;
     _deniedPermissionPromptHookResult = deniedPermissionPromptHookResult;
 }
 public void CannotCreateCookieRedirectPath_ThrowsArgumentException()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     Assert.ThrowsArgument(() => config.CannotCreateCookieRedirectPath = "Home/Permissions", "value");
 }
 public void AuthorizationRedirectPath_ThrowsArgumentException()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     Assert.ThrowsArgument(() => config.AuthorizationRedirectPath = "Home/Permissions", "value");
 }
 public void AppUrl_FromAppId()
 {
     FacebookConfiguration config = new FacebookConfiguration();
     config.AppId = "654321";
     Assert.Equal("https://apps.facebook.com/654321", config.AppUrl);
 }
 public CustomDefaultAuthorizeFilter(FacebookConfiguration config)
     : base(config)
 { }