public void ProcessResults_Returns_Empty_Collection_When_Empty_Results() { var reqProc = new AccountRequestProcessor<Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var accts = reqProc.ProcessResults(string.Empty); Assert.AreEqual(0, accts.Count); }
public void BuildUrl_Throws_With_Null_Parameters() { var acctReqProc = new AccountRequestProcessor <Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var ex = L2TAssert.Throws <ArgumentException>(() => acctReqProc.BuildUrl(null)); Assert.AreEqual("Type", ex.ParamName); }
public void ProcessResults_Returns_Empty_Collection_When_Empty_Results() { var reqProc = new AccountRequestProcessor <Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var accts = reqProc.ProcessResults(string.Empty); Assert.AreEqual(0, accts.Count); }
public void ProcessResults_Handles_VerifyCredentials() { var target = new AccountRequestProcessor<Account> { Type = AccountType.VerifyCredentials }; List<Account> actual = target.ProcessResults(TestVerifyCredentialsQueryResponse); var acct = actual.Cast<Account>().ToList().FirstOrDefault(); Assert.IsNotNull(acct); Assert.AreEqual("Joe Mayo", acct.User.Name); }
public void BuildUrl_Throws_When_Type_Not_Provided() { var acctReqProc = new AccountRequestProcessor <Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string>(); var ex = L2TAssert.Throws <ArgumentException>(() => acctReqProc.BuildUrl(parameters)); Assert.AreEqual("Type", ex.ParamName); }
public void GetParametersTest() { AccountRequestProcessor <Account> target = new AccountRequestProcessor <Account>(); Expression <Func <Account, bool> > expression = acct => acct.Type == AccountType.RateLimitStatus; LambdaExpression lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Type", ((int)AccountType.RateLimitStatus).ToString()))); }
public void ProcessResults_Handles_VerifyCredentials() { var target = new AccountRequestProcessor <Account> { Type = AccountType.VerifyCredentials }; List <Account> actual = target.ProcessResults(TestVerifyCredentialsQueryResponse); var acct = actual.Cast <Account>().ToList().FirstOrDefault(); Assert.IsNotNull(acct); Assert.AreEqual("Joe Mayo", acct.User.Name); }
public void BuildUrl_Returns_Settings_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/account/settings.json"; var acctReqProc = new AccountRequestProcessor <Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string> { { "Type", ((int)AccountType.Settings).ToString(CultureInfo.InvariantCulture) } }; Request req = acctReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void BuildRateLimitStatusURLTest() { AccountRequestProcessor <Account> target = new AccountRequestProcessor <Account>() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", ((int)AccountType.RateLimitStatus).ToString() } }; string expected = "http://twitter.com/account/rate_limit_status.xml"; string actual; actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void BuildVerifyCredentialsStatusURLTest() { AccountRequestProcessor target = new AccountRequestProcessor() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", ((int)AccountType.VerifyCredentials).ToString() } }; string expected = "http://twitter.com/account/verify_credentials.xml"; string actual; actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void HandleSettingsResponse_Converts_Settings_To_Account() { var acctReqProc = new AccountRequestProcessor <Account>(); Account acct = acctReqProc.HandleSettingsResponse(TestSettingsResponse); Assert.IsNotNull(acct); Assert.IsNotNull(acct.Settings); var settings = acct.Settings; Assert.IsNotNull(settings.TimeZone); var timeZone = settings.TimeZone; Assert.AreEqual("Mountain Time (US & Canada)", timeZone.Name); Assert.AreEqual(-21600, timeZone.UtcOffset); Assert.AreEqual("America/Denver", timeZone.TzInfoName); Assert.AreEqual("Mayoster", settings.ScreenName); Assert.AreEqual(true, settings.AlwaysUseHttps); Assert.AreEqual(true, settings.UseCookiePersonalization); Assert.IsNotNull(settings.SleepTime); var sleepTime = settings.SleepTime; Assert.AreEqual(true, sleepTime.Enabled); Assert.AreEqual(20, sleepTime.StartHour); Assert.AreEqual(0, sleepTime.EndHour); Assert.AreEqual(true, settings.GeoEnabled); Assert.AreEqual("en", settings.Language); Assert.AreEqual(true, settings.DiscoverableByEmail); Assert.AreEqual(true, settings.DiscoverableByMobilePhone); Assert.AreEqual(true, settings.DisplaySensitiveMedia); Assert.AreEqual("all", settings.AllowContributorRequest); Assert.AreEqual("following", settings.AllowDmsFrom); Assert.AreEqual("following", settings.AllowDmGroupsFrom); Assert.IsNotNull(settings.TrendLocation); var trendLocation = settings.TrendLocation; Assert.AreEqual("Las Vegas", trendLocation.Name); Assert.AreEqual("US", trendLocation.CountryCode); Assert.AreEqual("http://where.yahooapis.com/v1/place/2436704", trendLocation.Url); Assert.AreEqual(2436704, trendLocation.WoeID); Assert.AreEqual("Town", trendLocation.PlaceTypeName); Assert.AreEqual(7, trendLocation.PlaceTypeNameCode); Assert.AreEqual("23424977", trendLocation.ParentID); Assert.AreEqual("United States", trendLocation.Country); }
public void BuildUrl_Constructs_VerifyCredentials_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/account/verify_credentials.json?skip_status=true&include_entities=false"; var acctReqProc = new AccountRequestProcessor <Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string> { { "Type", ((int)AccountType.VerifyCredentials).ToString(CultureInfo.InvariantCulture) }, { "SkipStatus", true.ToString() }, { "IncludeEntities", false.ToString() } }; Request req = acctReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void HandleSettingsResponse_Converts_Settings_To_Account() { var acctReqProc = new AccountRequestProcessor <Account>(); Account acct = acctReqProc.HandleSettingsResponse(TestSettingsResponse); Assert.NotNull(acct); Assert.Equal(23424977, acct.Settings.TrendLocation.WoeID); Assert.Equal("United States", acct.Settings.TrendLocation.Name); Assert.Equal(12, acct.Settings.TrendLocation.PlaceTypeNameCode); Assert.Equal("Country", acct.Settings.TrendLocation.PlaceTypeName); Assert.Equal("US", acct.Settings.TrendLocation.CountryCode); Assert.Equal("United States", acct.Settings.TrendLocation.Country); Assert.Equal("http://where.yahooapis.com/v1/place/23424977", acct.Settings.TrendLocation.Url); Assert.Equal(true, acct.Settings.GeoEnabled); Assert.Equal(false, acct.Settings.SleepTime.Enabled); Assert.Equal(0, acct.Settings.SleepTime.StartHour); Assert.Equal(0, acct.Settings.SleepTime.EndHour); }
public void HandleSettingsResponse_Converts_Settings_To_Account() { var acctReqProc = new AccountRequestProcessor<Account>(); Account acct = acctReqProc.HandleSettingsResponse(TestSettingsResponse); Assert.NotNull(acct); Assert.Equal(23424977, acct.Settings.TrendLocation.WoeID); Assert.Equal("United States", acct.Settings.TrendLocation.Name); Assert.Equal(12, acct.Settings.TrendLocation.PlaceTypeNameCode); Assert.Equal("Country", acct.Settings.TrendLocation.PlaceTypeName); Assert.Equal("US", acct.Settings.TrendLocation.CountryCode); Assert.Equal("United States", acct.Settings.TrendLocation.Country); Assert.Equal("http://where.yahooapis.com/v1/place/23424977", acct.Settings.TrendLocation.Url); Assert.Equal(true, acct.Settings.GeoEnabled); Assert.Equal(false, acct.Settings.SleepTime.Enabled); Assert.Equal(0, acct.Settings.SleepTime.StartHour); Assert.Equal(0, acct.Settings.SleepTime.EndHour); }
public void NullParametersTest() { AccountRequestProcessor <Account> target = new AccountRequestProcessor <Account>() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = null; string actual; try { actual = target.BuildURL(parameters); Assert.Fail("Expected ArgumentException."); } catch (ArgumentException ae) { Assert.AreEqual <string>("Type", ae.ParamName); } }
public void ProcessResults_Retains_Original_Input_Parameters() { var acctReqProc = new AccountRequestProcessor <Account> { Type = AccountType.VerifyCredentials, SkipStatus = true, IncludeEntities = true }; var accounts = acctReqProc.ProcessResults(TestVerifyCredentialsQueryResponse); Assert.IsNotNull(accounts); Assert.IsNotNull(accounts.SingleOrDefault()); var account = accounts.Single(); Assert.AreEqual(AccountType.VerifyCredentials, account.Type); Assert.IsTrue(account.SkipStatus); Assert.IsTrue(account.IncludeEntities); }
public void HandleSettingsResponse_Converts_Settings_To_Account() { var acctReqProc = new AccountRequestProcessor<Account>(); Account acct = acctReqProc.HandleSettingsResponse(TestSettingsResponse); Assert.IsNotNull(acct); Assert.IsNotNull(acct.Settings); var settings = acct.Settings; Assert.IsNotNull(settings.TimeZone); var timeZone = settings.TimeZone; Assert.AreEqual("Mountain Time (US & Canada)", timeZone.Name); Assert.AreEqual(-21600, timeZone.UtcOffset); Assert.AreEqual("America/Denver", timeZone.TzInfoName); Assert.AreEqual("Mayoster", settings.ScreenName); Assert.AreEqual(true, settings.AlwaysUseHttps); Assert.AreEqual(true, settings.UseCookiePersonalization); Assert.IsNotNull(settings.SleepTime); var sleepTime = settings.SleepTime; Assert.AreEqual(true, sleepTime.Enabled); Assert.AreEqual(20, sleepTime.StartHour); Assert.AreEqual(0, sleepTime.EndHour); Assert.AreEqual(true, settings.GeoEnabled); Assert.AreEqual("en", settings.Language); Assert.AreEqual(true, settings.DiscoverableByEmail); Assert.AreEqual(true, settings.DiscoverableByMobilePhone); Assert.AreEqual(true, settings.DisplaySensitiveMedia); Assert.AreEqual("all", settings.AllowContributorRequest); Assert.AreEqual("following", settings.AllowDmsFrom); Assert.AreEqual("following", settings.AllowDmGroupsFrom); Assert.IsNotNull(settings.TrendLocation); var trendLocation = settings.TrendLocation; Assert.AreEqual("Las Vegas", trendLocation.Name); Assert.AreEqual("US", trendLocation.CountryCode); Assert.AreEqual("http://where.yahooapis.com/v1/place/2436704", trendLocation.Url); Assert.AreEqual(2436704, trendLocation.WoeID); Assert.AreEqual("Town", trendLocation.PlaceTypeName); Assert.AreEqual(7, trendLocation.PlaceTypeNameCode); Assert.AreEqual("23424977", trendLocation.ParentID); Assert.AreEqual("United States", trendLocation.Country); }
public void GetParameters_Handles_Input_Params() { var target = new AccountRequestProcessor <Account>(); Expression <Func <Account, bool> > expression = acct => acct.Type == AccountType.Settings && acct.SkipStatus == true && acct.IncludeEntities == true; var lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Type", ((int)AccountType.Settings).ToString(CultureInfo.InvariantCulture)))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("SkipStatus", "True"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("IncludeEntities", "True"))); }
public void GetParameters_Handles_Input_Params() { var target = new AccountRequestProcessor<Account>(); Expression<Func<Account, bool>> expression = acct => acct.Type == AccountType.Settings && acct.SkipStatus == true && acct.IncludeEntities == true; var lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Type", ((int)AccountType.Settings).ToString(CultureInfo.InvariantCulture)))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("SkipStatus", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("IncludeEntities", "True"))); }
/// <summary> /// Updates user's account settings /// </summary> /// <param name="trendLocationWeoid">WEOID for Trend Location the user is interested in.</param> /// <param name="sleepTimeEnabled">Turn on time periods when notifications won't be sent.</param> /// <param name="startSleepTime">Don't send notifications at this time or later this time. (hour from 00 to 23)</param> /// <param name="endSleepTime">Start sending notifications again after this time. (hour from 00 to 23)</param> /// <param name="timeZone">User's time zone.</param> /// <param name="lang">User's language.</param> /// <returns>Account information with Settings property populated.</returns> public async Task<Account> UpdateAccountSettingsAsync(int? trendLocationWoeid, bool? sleepTimeEnabled, int? startSleepTime, int? endSleepTime, string timeZone, string lang, CancellationToken cancelToken = default(CancellationToken)) { var accountUrl = BaseUrl + "account/settings.json"; if (trendLocationWoeid == null && sleepTimeEnabled == null && startSleepTime == null && endSleepTime == null && string.IsNullOrWhiteSpace(timeZone) && string.IsNullOrWhiteSpace(lang)) throw new ArgumentException("At least one parameter must be provided as arguments, but none are specified.", NoInputParam); var reqProc = new AccountRequestProcessor<Account>(); var parameters = new Dictionary<string, string> { { "time_zone", timeZone }, { "lang", lang } }; if (trendLocationWoeid != null) parameters.Add("trend_location_woeid", trendLocationWoeid.ToString()); if (sleepTimeEnabled != null) parameters.Add("sleep_time_enabled", sleepTimeEnabled.ToString().ToLower()); if (startSleepTime != null) parameters.Add("start_sleep_time", startSleepTime.ToString()); if (endSleepTime != null) parameters.Add("end_sleep_time", endSleepTime.ToString()); RawResult = await TwitterExecutor.PostToTwitterAsync<Account>( accountUrl, parameters, cancelToken) .ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, AccountAction.Settings); }
public void ProcessResultsForEndSessionTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>(); XElement twitterResponse = XElement.Parse(m_testEndSessionResponse); IList actual = target.ProcessResults(twitterResponse); var acct = actual.Cast<Account>().ToList().FirstOrDefault(); Assert.AreEqual("Logged out.", acct.EndSessionStatus.Error); }
public void NullParametersTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>() { BaseUrl = "http://twitter.com/" }; Dictionary<string, string> parameters = null; string actual; try { actual = target.BuildURL(parameters); Assert.Fail("Expected ArgumentException."); } catch (ArgumentException ae) { Assert.AreEqual<string>("Type", ae.ParamName); } }
public void BuildUrl_Throws_With_Null_Parameters() { var acctReqProc = new AccountRequestProcessor<Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var ex = L2TAssert.Throws<ArgumentException>(() => acctReqProc.BuildUrl(null)); Assert.AreEqual("Type", ex.ParamName); }
public void ProcessResults_Retains_Original_Input_Parameters() { var acctReqProc = new AccountRequestProcessor<Account> { Type = AccountType.VerifyCredentials, SkipStatus = true, IncludeEntities = true }; var accounts = acctReqProc.ProcessResults(TestVerifyCredentialsQueryResponse); Assert.IsNotNull(accounts); Assert.IsNotNull(accounts.SingleOrDefault()); var account = accounts.Single(); Assert.AreEqual(AccountType.VerifyCredentials, account.Type); Assert.IsTrue(account.SkipStatus); Assert.IsTrue(account.IncludeEntities); }
public void BuildUrl_Returns_Settings_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/account/settings.json"; var acctReqProc = new AccountRequestProcessor<Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int)AccountType.Settings).ToString(CultureInfo.InvariantCulture) } }; Request req = acctReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void BuildUrl_Throws_When_Type_Not_Provided() { var acctReqProc = new AccountRequestProcessor<Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string>(); var ex = L2TAssert.Throws<ArgumentException>(() => acctReqProc.BuildUrl(parameters)); Assert.AreEqual("Type", ex.ParamName); }
public void GetParametersTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>(); Expression<Func<Account, bool>> expression = acct => acct.Type == AccountType.RateLimitStatus; LambdaExpression lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("Type", ((int)AccountType.RateLimitStatus).ToString()))); }
public void BuildUrl_Constructs_VerifyCredentials_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/account/verify_credentials.json?skip_status=true&include_entities=false"; var acctReqProc = new AccountRequestProcessor<Account> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int)AccountType.VerifyCredentials).ToString(CultureInfo.InvariantCulture) }, { "SkipStatus", true.ToString() }, { "IncludeEntities", false.ToString() } }; Request req = acctReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void ProcessResultsForInvalidValueTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>(); XElement twitterResponse = XElement.Parse(m_testInvalidValueQueryResponse); IList actual = target.ProcessResults(twitterResponse); var acct = actual.Cast<Account>().ToList().FirstOrDefault(); }
/// <summary> /// Modify device information /// </summary> /// <param name="device">Which device to use.</param> /// <param name="includeEntitites">Set this to false to not add entitites to response. (default: true)</param> /// <param name="callback">Async Callback.</param> /// <returns></returns> public static Account UpdateDeliveryDevice(this TwitterContext ctx, DeviceType device, bool includeEntitites, Action<TwitterAsyncResponse<User>> callback) { var accountUrl = ctx.BaseUrl + "account/update_delivery_device.json"; var reqProc = new AccountRequestProcessor<Account>(); ITwitterExecute exec = ctx.TwitterExecutor; exec.AsyncCallback = callback; var resultsJson = exec.PostToTwitter( accountUrl, new Dictionary<string, string> { { "device", device.ToString().ToLower() }, { "include_entities", includeEntitites.ToString().ToLower() } }, response => reqProc.ProcessActionResult(response, AccountAction.Settings)); Account acct = reqProc.ProcessActionResult(resultsJson, AccountAction.Settings); return acct; }
/// <summary> /// Updates user's account settings /// </summary> /// <param name="trendLocationWeoid">WEOID for Trend Location the user is interested in.</param> /// <param name="sleepTimeEnabled">Turn on time periods when notifications won't be sent.</param> /// <param name="startSleepTime">Don't send notifications at this time or later this time. (hour from 00 to 23)</param> /// <param name="endSleepTime">Start sending notifications again after this time. (hour from 00 to 23)</param> /// <param name="timeZone">User's time zone.</param> /// <param name="lang">User's language.</param> /// <param name="callback">Async Callback.</param> /// <returns>Account information with Settings property populated.</returns> public static Account UpdateAccountSettings(this TwitterContext ctx, int? trendLocationWoeid, bool? sleepTimeEnabled, int? startSleepTime, int? endSleepTime, string timeZone, string lang, Action<TwitterAsyncResponse<User>> callback) { var accountUrl = ctx.BaseUrl + "account/settings.json"; if (trendLocationWoeid == null && sleepTimeEnabled == null && startSleepTime == null && endSleepTime == null && string.IsNullOrEmpty(timeZone) && string.IsNullOrEmpty(lang)) { throw new ArgumentException("At least one parameter must be provided as arguments, but none are specified.", NoInputParam); } var reqProc = new AccountRequestProcessor<Account>(); ITwitterExecute exec = ctx.TwitterExecutor; exec.AsyncCallback = callback; var resultsJson = exec.PostToTwitter( accountUrl, new Dictionary<string, string> { { "trend_location_woeid", trendLocationWoeid.ToString() }, { "sleep_time_enabled", sleepTimeEnabled.ToString() }, { "start_sleep_time", startSleepTime.ToString() }, { "end_sleep_time", endSleepTime.ToString() }, { "time_zone", timeZone }, { "lang", lang } }, response => reqProc.ProcessActionResult(response, AccountAction.Settings)); Account acct = reqProc.ProcessActionResult(resultsJson, AccountAction.Settings); return acct; }
public void ProcessResultsForRateLimitStatusTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>(); XElement twitterResponse = XElement.Parse(m_testRateLimitStatusQueryResponse); IList actual = target.ProcessResults(twitterResponse); var acct = actual.Cast<Account>().ToList().FirstOrDefault(); Assert.AreEqual(100, acct.RateLimitStatus.HourlyLimit); }
public void ProcessResultsForVerifyCredentialsTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>(); XElement twitterResponse = XElement.Parse(m_testVerifyCredentialsQueryResponse); IList actual = target.ProcessResults(twitterResponse); var acct = actual.Cast<Account>().ToList().FirstOrDefault(); Assert.AreEqual("Joe Mayo", acct.User.Name); }
/// <summary> /// Modify device information /// </summary> /// <param name="device">Which device to use.</param> /// <param name="includeEntitites">Set this to false to not add entitites to response. (default: true)</param> /// <returns></returns> public async Task<Account> UpdateDeliveryDeviceAsync(DeviceType device, bool? includeEntitites, CancellationToken cancelToken = default(CancellationToken)) { var accountUrl = BaseUrl + "account/update_delivery_device.json"; var reqProc = new AccountRequestProcessor<Account>(); var parameters = new Dictionary<string, string> { { "device", device.ToString().ToLower() } }; if (includeEntitites != null) parameters.Add("include_entities", includeEntitites.ToString().ToLower()); RawResult = await TwitterExecutor.PostToTwitterAsync<Account>( accountUrl, parameters, cancelToken) .ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, AccountAction.Settings); }
public void BuildVerifyCredentialsStatusURLTest() { AccountRequestProcessor<Account> target = new AccountRequestProcessor<Account>() { BaseUrl = "http://twitter.com/" }; Dictionary<string, string> parameters = new Dictionary<string, string> { { "Type", ((int)AccountType.VerifyCredentials).ToString() } }; string expected = "http://twitter.com/account/verify_credentials.xml"; string actual; actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }