Esempio n. 1
0
            public void GivenAFacebookCallback_CheckCallback_RetrievesAnAccessTokenAnUserData()
            {
                // Arrange.
                const string state = "blah";
                var          mockWebClientWrapper = MoqUtilities.MockedIWebClientWrapper();
                var          facebookProvider     = new FacebookProvider("a", "b", new Uri("http://www.google.com"),
                                                                         mockWebClientWrapper.Object);
                var authenticationService = new AuthenticationService(facebookProvider);
                var mockRequestBase       = new Mock <HttpRequestBase>();

                mockRequestBase.Setup(x => x.Params).Returns(new NameValueCollection
                {
                    { "code", "aaa" },
                    { "state", state }
                });

                // Act.
                var facebookClient =
                    authenticationService.CheckCallback(mockRequestBase.Object, state) as FacebookClient;

                // Assert.
                Assert.NotNull(facebookClient);
                Assert.NotNull(facebookClient.AccessToken);
                Assert.NotNull(facebookClient.UserInformation);
                Assert.NotNull(facebookClient.UserInformation.Id);
            }
            public void GivenSomeErrorOccuredWhileTryingToRetrieveAccessToken_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>())).Returns(It.IsAny <IRestResponse>);
                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "error_reason", "aaa" },
                    { "error", "bbb" },
                    { "error_description", "ccc" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State = existingState
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("Reason: aaa. Error: bbb. Description: ccc.", result.Message);
            }
        public async Task AuthenticateUserThrowsExceptionIfFacebookApiFails()
        {
            // Arrange
            var config = CreateProviderConfig();

            var(restClientFactory, restClient) = CreateRestClientAndFactory();

            // Arrnage - Calling Facebook API for token succeeds
            SetupTokenResultSuccess(restClient, "token");

            // Arrange - Calling Facebook API fails
            var response = Substitute.For <IRestResponse <MeResult> >();

            response.IsSuccessful.Returns(false);
            restClient.ExecuteAsync <MeResult>(Arg.Any <RestRequest>()).Returns(Task.FromResult(response));

            var provider = new FacebookProvider(config, restClientFactory, "url1", "url2");

            var http = Substitute.For <HttpRequest>();

            http.Query.Returns(new QueryCollection(new Dictionary <string, StringValues> {
                { "state", new StringValues("TestState") },
                { "code", new StringValues("TestCode") },
            }));

            // Act / Assert
            await Assert.ThrowsAsync <NogginNetCoreAuthException>(() => provider.AuthenticateUser(http, "secret"));
        }
            public void GivenNoValidAccessTokenParams_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>())).Returns(It.IsAny <IRestResponse>);
                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState } // No code param.
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State = existingState
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("No code parameter provided in the response query string from Facebook.", result.Message);
            }
        public async Task GetResourceInfoTest()
        {
            var response = new PageFB()
            {
                Id          = "id",
                Name        = "name",
                AccessToken = "accessToken"
            };

            var restApiRepositoryMock = new Mock <IRestApiRepository>();

            restApiRepositoryMock.Setup(x => x.GetRequestAsync <PageFB>(It.IsAny <string>(), null,
                                                                        It.IsAny <Dictionary <string, string> >(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(response);
            var facebookProvider = new FacebookProvider(new AzureTableProvider(Settings.StorageAccountConnectionString))
            {
                Client = restApiRepositoryMock.Object
            };
            var sourceInfo = await facebookProvider.GetResourceInfo(string.Empty, string.Empty);

            SourceInfoFB info = JsonConvert.DeserializeObject <SourceInfoFB>(sourceInfo);

            Assert.AreEqual(info.PageId, "id");
            Assert.AreEqual(info.PageName, "name");
            Assert.AreEqual(info.AccessToken, "accessToken");
        }
Esempio n. 6
0
        public static async Task <bool> StoreTokenHelper(string jobType, string code, string redirectUrl, string jobId)
        {
            IConnectorSourceProvider sourceProvider = new FacebookProvider(new AzureTableProvider(Settings.StorageAccountConnectionString));
            await sourceProvider.StoreOAuthToken(code, redirectUrl, jobId);

            return(true);
        }
Esempio n. 7
0
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            var context = new Bookmarks.Mongo.Data.BookmarksContext(ConnectionString);

            container.Register <IBookmarksContext>(context);

            var twitterProvider = new TwitterProvider(new ProviderParams {
                PublicApiKey = Utils.GetAppSetting("TwitterConsumerKey"), SecretApiKey = Utils.GetAppSetting("TwitterConsumerSecret")
            });
            var facebookProvider = new FacebookProvider(new ProviderParams {
                PublicApiKey = Utils.GetAppSetting("FBClientId"), SecretApiKey = Utils.GetAppSetting("FBClientSecret")
            });
            var googleProvider = new GoogleProvider(new ProviderParams {
                PublicApiKey = Utils.GetAppSetting("GoogleConsumerKey"), SecretApiKey = Utils.GetAppSetting("GoogleConsumerSecret")
            });

            var authenticationProviderFactory = new AuthenticationProviderFactory();

            try
            {
                authenticationProviderFactory.AddProvider(twitterProvider);
                authenticationProviderFactory.AddProvider(facebookProvider);
                authenticationProviderFactory.AddProvider(googleProvider);
            }
            catch (ReflectionTypeLoadException ex)
            {
                var loaderEx = ex.LoaderExceptions;
            }

            container.Register <IAuthenticationCallbackProvider>(new SocialAuthenticationCallbackProvider(context));
        }
        public void FBOAuthUrlTest()
        {
            FacebookProvider provider = new FacebookProvider(new AzureTableProvider(Settings.StorageAccountConnectionString));
            string           url      = provider.GetOAuthUrl("FAKE_REDIRECT_URL").Result;

            Assert.AreEqual(url,
                            "https://www.facebook.com/v3.0/dialog/oauth?scope=manage_pages,pages_show_list,email&client_id=&redirect_uri=FAKE_REDIRECT_URL");
        }
Esempio n. 9
0
        public IHttpActionResult LoginFB()
        {
            FacebookProvider fbProvider = new FacebookProvider();

            Uri url = fbProvider.GetLoginUrl();

            return(Ok(url));
        }
Esempio n. 10
0
    /// <summary>
    /// Renders controls depending on current state.
    /// </summary>
    private void RenderControls()
    {
        chkEnabledFacebook.Visible = IsWorkflow;
        btnPostAtFacebook.Visible  = true;

        chkEnabledFacebook.Checked = dataElement.AutoPostAfterPublishing;
        txtTemplateFacebook.Text   = dataElement.Template;

        // Set info message
        if (dataElement.IsPublished)
        {
            lblFacebookIsPublished.Text    = ResHelper.GetString("socialnetworking.facebook.ispublished");
            lnkFacebookPostURL.NavigateUrl = dataElement.PostURL;
            lnkFacebookPostURL.Text        = dataElement.PostURL;
            lnkFacebookPostURL.Target      = "_blank";
            lnkFacebookPostURL.Visible     = true;
        }
        else
        {
            lblFacebookIsPublished.Text = ResHelper.GetString("socialnetworking.facebook.isnotpublished");
        }

        bool isSetting = SocialNetworkingHelper.IsSettingSet(CMSContext.CurrentSiteName, SocialNetworkType.Facebook);

        // Check the license
        string currentDomain = URLHelper.GetCurrentDomain();

        if (!String.IsNullOrEmpty(currentDomain))
        {
            if (!LicenseHelper.CheckFeature(currentDomain, FeatureEnum.SocialAutoPost))
            {
                Enabled   = false;
                isSetting = true;

                lblAccessDeniedWarning.Visible = true;
            }
        }

        // Disable button "Post at Facebook" if document wasn't saved yet.
        btnPostAtFacebook.Enabled   = (Enabled && (node.NodeID > 0) && isSetting);
        chkEnabledFacebook.Enabled  = (Enabled && isSetting);
        txtTemplateFacebook.Enabled = Enabled;

        if (!btnPostAtFacebook.Enabled)
        {
            btnPostAtFacebook.CssClass += "Disabled";
        }

        if (!isSetting)
        {
            lblFacebookMissingSetting.Visible = true;
        }

        if (FacebookProvider.IsAccessTokenExpired(CMSContext.CurrentSiteName))
        {
            lblExpirationWarning.Visible = true;
        }
    }
Esempio n. 11
0
        public HomeController()
        {
            FacebookProvider = new FacebookProvider(FacebookAppId,
                                                    FacebookAppSecret,
                                                    new Uri("http://localhost:1337/home/authenticateCallback"),
                                                    new WebClientWrapper());

            AuthenticationService = new AuthenticationService(FacebookProvider);
        }
Esempio n. 12
0
        public IHttpActionResult LogoutFB()
        {
            string           token      = HttpContext.Current.Request.Params["code"];
            FacebookProvider fbProvider = new FacebookProvider();

            Uri url = fbProvider.GetLogoutUrl(token);

            return(Ok(url));
        }
            public void GivenAnInvalidMeResultThrowsAnException_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestResponse = new Mock <IRestResponse <AccessTokenResult> >();

                mockRestResponse.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK);
                mockRestResponse.Setup(x => x.Data).Returns(new AccessTokenResult
                {
                    access_token = "foo",
                    expires      = 1000
                });

                var mockRestResponseApiMe = new Mock <IRestResponse <MeResult> >();

                mockRestResponseApiMe.Setup(x => x.StatusCode).Returns(HttpStatusCode.Unauthorized);
                mockRestResponseApiMe.Setup(x => x.StatusDescription).Returns("Unauthorized");

                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.BuildUri(It.IsAny <IRestRequest>()))
                .Returns(new Uri("http://imgur.com/gallery/787lCwb"));
                mockRestClient.Setup(x => x.Execute <AccessTokenResult>(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponse.Object);
                mockRestClient.Setup(x => x.Execute <MeResult>(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponseApiMe.Object);

                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "code", "whatever" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State       = existingState,
                    CallBackUri = new Uri("http://2p1s.com")
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal(
                    "Failed to obtain some 'Me' data from the Facebook api OR the the response was not an HTTP Status 200 OK. Response Status: Unauthorized. Response Description: Unauthorized. Error Message: --no error exception--.",
                    result.Message);
            }
Esempio n. 14
0
    protected void btnPostAtFacebook_Click(object sender, EventArgs e)
    {
        if (txtTemplateFacebook.Text.Trim() == "")
        {
            ShowError(ResHelper.GetString("socialnetworking.facebook.emptyerror"));
            return;
        }

        string template = txtTemplateFacebook.Text;

        // Process template
        MacroResolver mr         = MacroResolver.GetInstance();
        string        textToSend = mr.ResolveMacros(template);

        // Send text
        string postUrl = FacebookProvider.Publish(textToSend, CMSContext.CurrentSiteName);

        // Check if post was succesfully published
        bool success = !string.IsNullOrEmpty(postUrl);

        if (success)
        {
            ShowConfirmation(ResHelper.GetString("socialnetworking.facebook.sendsuccess"));

            dataElement.IsPublished             = true;
            dataElement.AutoPostAfterPublishing = false;
            dataElement.Template = txtTemplateFacebook.Text;
            dataElement.PostURL  = postUrl;

            try
            {
                // Save dataElement into database
                node.SetValue(FieldInfo.Name, SerializeData().OuterXml);
                if (IsWorkflow)
                {
                    DocumentHelper.UpdateDocument(node, node.TreeProvider);
                }
                else
                {
                    node.Update();
                }

                RenderControls();
            }
            catch (Exception ex)
            {
                EventLogProvider ev = new EventLogProvider();
                ev.LogEvent("FacebookAutoPost", "AfterPost", ex, CMSContext.CurrentSiteID);
            }
        }
        else
        {
            ShowError(ResHelper.GetString("socialnetworking.facebook.senderror"));
        }
    }
Esempio n. 15
0
        protected void ConfigureUserSession(IKernel container)
        {
            // hostConstants.appId; hostConstants.appSecret;
            var facebookProvider = new FacebookProvider(new ProviderParams {
                PublicApiKey = hostConstants.appId, SecretApiKey = hostConstants.appSecret
            });
            var authenticationProviderFactory = new AuthenticationProviderFactory();

            authenticationProviderFactory.AddProvider(facebookProvider);
            container.Bind <IAuthenticationCallbackProvider>().To <AuthenticationCallbackProvider>().InRequestScope();
        }
Esempio n. 16
0
        static void Main(string[] args)
        {
            var provider = new FacebookProvider();

            System.Console.WriteLine("Getting token...");
            var token = provider.GetToken();

            System.Console.WriteLine("token:" + token);
            System.Console.WriteLine("Press any key");
            System.Console.ReadKey();
        }
Esempio n. 17
0
        public async Task Test()
        {
            var config = JsonExtensions.Read <ProviderConfig>("../../../appsettings.json");

            var facebook = new FacebookProvider(NullLogger <FacebookProvider> .Instance, config);
            IEnumerable <Update> updates = await facebook.GetUpdates(config.WatchedUsers[0]);

            foreach (Update update in updates)
            {
                Assert.NotNull(update?.Id);
                Assert.NotNull(update.Author?.Id);
            }
        }
            GivenAValidAccessTokenButApiMeThrowsAnException_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                const string exceptionMessage =
                    "1st World Problems: The Pizza guy arrived. Before I finished downloading the movie.";
                var mockRestResponse = new Mock <IRestResponse <AccessTokenResult> >();

                mockRestResponse.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK);
                mockRestResponse.Setup(x => x.Data).Returns(new AccessTokenResult
                {
                    access_token = "foo",
                    expires      = 1000
                });

                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.BuildUri(It.IsAny <IRestRequest>()))
                .Returns(new Uri("http://imgur.com/gallery/787lCwb"));
                mockRestClient.Setup(x => x.Execute <AccessTokenResult>(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponse.Object);
                mockRestClient.Setup(x => x.Execute <MeResult>(It.IsAny <IRestRequest>()))
                .Throws(new Exception(exceptionMessage));

                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "code", "whatever" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State       = existingState,
                    CallBackUri = new Uri("http://2p1s.com")
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("Failed to retrieve any Me data from the Facebook Api. 1st World Problems: The Pizza guy arrived. Before I finished downloading the movie.", result.Message);
            }
Esempio n. 19
0
            public void GivenAnExistingProvider_AddProvider_ThrowsAnException()
            {
                // Arrange.
                var authenticationService = new AuthenticationService();
                var facebookProvider      = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                });

                // Act.
                var result = Assert.Throws <InvalidOperationException>(
                    () => authenticationService.AddProvider(facebookProvider, false));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("The provider 'Facebook' already exists and cannot be overridden, either set `replaceExisting` to `true`, or remove the provider first.", result.Message);
            }
Esempio n. 20
0
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            //var twitterProvider = new TwitterProvider(new ProviderParams { PublicApiKey = TwitterConsumerKey, SecretApiKey = TwitterConsumerSecret });
            var facebookProvider = new FacebookProvider(new ProviderParams { PublicApiKey = FacebookAppId, SecretApiKey = FacebookAppSecret });
            var googleProvider = new GoogleProvider(new ProviderParams { PublicApiKey = GoogleConsumerKey, SecretApiKey = GoogleConsumerSecret });

            var authenticationProviderFactory = new AuthenticationProviderFactory();

            //authenticationProviderFactory.AddProvider(twitterProvider);
            authenticationProviderFactory.AddProvider(facebookProvider);
            authenticationProviderFactory.AddProvider(googleProvider);

            container.Register<IAuthenticationCallbackProvider>(new MedSetAuthenticationCallbackProvider());
        }
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);
            StaticConfiguration.DisableErrorTraces = false;

            FacebookProvider facebookProvider =
                new FacebookProvider(new ProviderParams
                {
                    PublicApiKey = FacebookCredentials.FacebookAppId,
                    SecretApiKey = FacebookCredentials.FacebookAppSecret
                });
            AuthenticationProviderFactory authenticationProviderFactory = new AuthenticationProviderFactory();
            authenticationProviderFactory.AddProvider(facebookProvider);

            container.Register<IAuthenticationCallbackProvider>(new SampleAuthenticationCallbackProvider());
        }
            public void GivenAMissingCallBackUriParam_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestResponse = new Mock <IRestResponse <AccessTokenResult> >();

                mockRestResponse.Setup(x => x.StatusCode).Returns(HttpStatusCode.BadRequest);
                mockRestResponse.Setup(x => x.StatusDescription).Returns("Bad Request");
                mockRestResponse.Setup(x => x.Content)
                .Returns(
                    "{\"error\":{\"message\":\"Missing redirect_uri parameter.\",\"type\":\"OAuthException\",\"code\":191}}");

                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.BuildUri(It.IsAny <IRestRequest>()))
                .Returns(new Uri("http://www.whatever.pew.pew"));
                mockRestClient.Setup(x => x.Execute <AccessTokenResult>(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponse.Object);

                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "code", "whatever" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State       = existingState,
                    CallBackUri = new Uri("http://2p1s.com")
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal(
                    "Failed to obtain an Access Token from Facebook OR the the response was not an HTTP Status 200 OK. Response Status: BadRequest. Response Description: Bad Request. Error Content: {\"error\":{\"message\":\"Missing redirect_uri parameter.\",\"type\":\"OAuthException\",\"code\":191}}. Error Message: --no error exception--.",
                    result.Message);
            }
        public async Task GenerateStartRequestDoesNotCallFacebookApi()
        {
            // Arrange
            var config = CreateProviderConfig();

            var(restClientFactory, restClient) = CreateRestClientAndFactory();

            var provider = new FacebookProvider(config, restClientFactory, "url1", "url2");

            var http = Substitute.For <HttpRequest>();

            // Act
            var result = await provider.GenerateStartRequestUrl(http);

            // Assert
            await restClient.DidNotReceive().ExecuteAsync <AccessTokenResult>(Arg.Any <IRestRequest>());
        }
            public void GivenAMissingExpiresParam_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestResponse = new Mock <IRestResponse <AccessTokenResult> >();

                mockRestResponse.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK);
                mockRestResponse.Setup(x => x.Data).Returns(new AccessTokenResult {
                    access_token = "foo"
                });

                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.BuildUri(It.IsAny <IRestRequest>()))
                .Returns(new Uri("http://www.fatchicksinpartyhats.com"));
                mockRestClient.Setup(x => x.Execute <AccessTokenResult>(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponse.Object);

                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "code", "whatever" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State       = existingState,
                    CallBackUri = new Uri("http://2p1s.com")
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal(
                    "Retrieved a Facebook Access Token but there's an error with either the access_token and/or expires_on parameters. Access Token: foo. Expires In: 0.",
                    result.Message);
            }
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            // var twitterProvider = new TwitterProvider(new ProviderParams { PublicApiKey = ConfigurationManager.AppSettings["TwitterApiId"], SecretApiKey = ConfigurationManager.AppSettings["TwitterApiSecret"] });
            var facebookProvider = new FacebookProvider(new ProviderParams {
                PublicApiKey = ConfigurationManager.AppSettings["FacebookApiId"], SecretApiKey = ConfigurationManager.AppSettings["FacebookApiSecret"]
            });
            //var googleProvider = new GoogleProvider(new ProviderParams { PublicApiKey = ConfigurationManager.AppSettings["GoogleApiId"], SecretApiKey = ConfigurationManager.AppSettings["GoogleApiSecret"] });

            AuthenticationProviderFactory providerFactory = new AuthenticationProviderFactory();

            // providerFactory.AddProvider(twitterProvider);
            providerFactory.AddProvider(facebookProvider);
            // providerFactory.AddProvider(googleProvider);
            container.Register <IAuthenticationCallbackProvider>(new SampleAuthenticationCallbackProvider());
            container.Register <IJsonReader, JsonReader>();
        }
        public async Task WebhookSubscribeFailureTest()
        {
            string sourceInfo = "{\"PageId\":\"abc\",\"AccessToken\":\"abc\",\"PageName\":\"abc\"}";
            SubscribeWebhookResponseFB response = new SubscribeWebhookResponseFB()
            {
                Success = false,
            };
            var restApiRepositoryMock = new Mock <IRestApiRepository>();

            restApiRepositoryMock.Setup(x => x.PostRequestAsync <Dictionary <string, string>, SubscribeWebhookResponseFB>(It.IsAny <string>(), null,
                                                                                                                          It.IsAny <Dictionary <string, string> >(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(response);
            var facebookProvider = new FacebookProvider(new AzureTableProvider(Settings.StorageAccountConnectionString))
            {
                Client = restApiRepositoryMock.Object
            };
            var subscribed = await facebookProvider.Subscribe(sourceInfo);
        }
Esempio n. 27
0
    protected void Page_PreRender(object sender, EventArgs e)
    {
        // Set token expiration
        tokenExpiration = FacebookProvider.GetAccessTokenExpirationFromString(txtToken.Text);

        // Set token expiration message if token seems to be valid
        if ((tokenExpiration != DateTime.MinValue) && !String.IsNullOrEmpty(txtToken.Text))
        {
            if (tokenExpiration <= DateTime.Now)
            {
                lblMessage.Text = GetString("socialnetworking.facebook.tokenexpired");
            }
            else
            {
                lblMessage.Text = String.Format(GetString("socialnetworking.facebook.tokenwillexpire"), tokenExpiration.ToString("g", CultureHelper.PreferredUICultureInfo));
            }
        }
    }
Esempio n. 28
0
    public UniRx.IObservable <AdService.V2PShowResult> Show()
    {
        return(Observable.Return(AdService.V2PShowResult.Failed));

        if (adReady.Value)
        {
            return(Observable.Create(delegate(UniRx.IObserver <AdService.V2PShowResult> subscriber)
            {
                FacebookProvider facebookProvider = this;
                CompositeDisposable compositeDisposable = new CompositeDisposable();
                adFinished.ObserveOnMainThread().Take(1).Subscribe(delegate(bool success)
                {
                    subscriber.OnNext(success ? AdService.V2PShowResult.Finished : AdService.V2PShowResult.Failed);
                    subscriber.OnCompleted();
                })
                .AddTo(compositeDisposable);
                RewardedVideoAd rewardedVideoAd = ad;
                rewardedVideoAd.RewardedVideoAdDidFail = delegate
                {
                    facebookProvider.adFinished.OnNext(value: false);
                };
                rewardedVideoAd.RewardedVideoAdComplete = delegate
                {
                    facebookProvider.adFinished.OnNext(value: true);
                };
                rewardedVideoAd.RewardedVideoAdDidClose = delegate
                {
                    facebookProvider.adFinished.OnNext(value: false);
                };
                rewardedVideoAd.rewardedVideoAdActivityDestroyed = delegate
                {
                    facebookProvider.adFinished.OnNext(value: false);
                };
                ad = null;
                adReady.Value = false;
                if (!rewardedVideoAd.Show())
                {
                    adFinished.OnNext(value: false);
                }
                return compositeDisposable;
            }));
        }
        return(Observable.Return(AdService.V2PShowResult.Failed));
    }
            public void GivenAMissingExpiresParam_RetrieveAccessToken_ThrowsAnException()
            {
                // Arrange.
                var mockWebClientWrapper = MoqUtilities.MockedIWebClientWrapper(new[] { "access_token=foo&hi=ohnoes", null });
                var facebookProvider     = new FacebookProvider("a", "b", new Uri("http://www.google.com"),
                                                                mockWebClientWrapper.Object);
                var facebookClient = new FacebookClient
                {
                    Code  = "aa",
                    State = "bb"
                };

                // Act.
                var result = Assert.Throws <ArgumentException>(() => facebookProvider.RetrieveAccessToken(facebookClient));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("value should be equal to 2. The actual value is 1.\r\nParameter name: value", result.Message);
            }
            public void GivenSomethingWeirdHappenedWhileTryingToRetrieveMeData_RetrieveAccessToken_ThrowsAnException()
            {
                // Arrange.
                var mockWebClientWrapper = MoqUtilities.MockedIWebClientWrapper(new[] { "access_token=foo&expires=1", "ohcrap" });
                var facebookProvider     = new FacebookProvider("a", "b", new Uri("http://www.google.com"),
                                                                mockWebClientWrapper.Object);
                var facebookClient = new FacebookClient
                {
                    Code  = "aa",
                    State = "bb"
                };

                // Act.
                var result = Assert.Throws <InvalidOperationException>(() => facebookProvider.RetrieveAccessToken(facebookClient));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("Failed to deserialize the json user information result from Facebook.", result.Message);
            }
            public void GivenSomeInvalidResult_RetrieveAccessToken_ThrowsAnException()
            {
                // Arrange.
                var mockWebClientWrapper = MoqUtilities.MockedIWebClientWrapper(new [] { "asds", null });
                var facebookProvider     = new FacebookProvider("a", "b", new Uri("http://www.google.com"),
                                                                mockWebClientWrapper.Object);
                var facebookClient = new FacebookClient
                {
                    Code  = "aa",
                    State = "bb"
                };

                // Act.
                var result = Assert.Throws <ArgumentException>(() => facebookProvider.RetrieveAccessToken(facebookClient));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal("value should contain 2 elements. value contains currently 1 element.\r\nParameter name: value", result.Message);
            }
            public void GivenSomeInvalidRequestToken_AuthenticateClient_ThrowsAnAuthenticationException()
            {
                // Arrange.
                var mockRestResponse = new Mock <IRestResponse>();

                mockRestResponse.Setup(x => x.StatusCode).Returns(HttpStatusCode.Unauthorized);
                mockRestResponse.Setup(x => x.StatusDescription).Returns("Unauthorised");
                mockRestResponse.Setup(x => x.Content).Returns("{error:hi there asshat}");

                var mockRestClient = new Mock <IRestClient>();

                mockRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns(mockRestResponse.Object);

                var facebookProvider = new FacebookProvider(new ProviderParams {
                    Key = "a", Secret = "b"
                })
                {
                    RestClientFactory = new RestClientFactory(mockRestClient.Object)
                };
                const string existingState         = "Oops! - Tasselhoff Burrfoot";
                var          queryStringParameters = new NameValueCollection
                {
                    { "state", existingState },
                    { "code", "whatever" }
                };
                var facebookAuthenticationSettings = new FacebookAuthenticationServiceSettings
                {
                    State       = existingState,
                    CallBackUri = new Uri("http://2p1s.com")
                };

                // Act.
                var result =
                    Assert.Throws <AuthenticationException>(
                        () => facebookProvider.AuthenticateClient(facebookAuthenticationSettings, queryStringParameters));

                // Assert.
                Assert.NotNull(result);
                Assert.Equal(
                    "Failed to obtain an Access Token from Facebook OR the the response was not an HTTP Status 200 OK. Response Status: Unauthorized. Response Description: Unauthorised. Error Content: {error:hi there asshat}",
                    result.Message);
            }