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"); }
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); }
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"); }
public IHttpActionResult LoginFB() { FacebookProvider fbProvider = new FacebookProvider(); Uri url = fbProvider.GetLoginUrl(); return(Ok(url)); }
/// <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; } }
public HomeController() { FacebookProvider = new FacebookProvider(FacebookAppId, FacebookAppSecret, new Uri("http://localhost:1337/home/authenticateCallback"), new WebClientWrapper()); AuthenticationService = new AuthenticationService(FacebookProvider); }
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); }
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")); } }
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(); }
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(); }
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); }
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); }
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); }
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)); } } }
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); }