public void ReactsToThrottle() { var settings = new HarvestApiSettings() { BaseUri = HttpServer.BaseUri, Password = "******", UserName = "******" }; ProjectsApi api = new ProjectsApi(settings); var projectsTask = api.GetProjects(); using (var req = HttpServer.HandleRequest(verbose: true)) { Assert.True(req.RawRequest.AcceptTypes.Contains("application/json"), "accept types: " + req.RawRequest.AcceptTypes.ToListString()); req.ResponseBodyText = string.Empty; req.StatusCode = HttpStatusCode.ServiceUnavailable; } try { var count = projectsTask.Result.Count; Assert.Fail("should have failed at this point"); } catch(HarvestThrottleException) { Console.WriteLine("Throttle exception thrown"); } catch (AggregateException ae) { Assert.True(ae.InnerExceptions.Any(x => x is HarvestThrottleException), "expecting a throttle exception"); } }
public void CanReadProjects() { ProjectsApi api = new ProjectsApi(GetSettings()); var projectsTask = api.GetProjects(); using(var req = HttpServer.HandleRequest()) { req.ResponseBodyText = Encoding.UTF8.GetString(Properties.Resources.AllProjects); } var projects = projectsTask.Result; Assert.AreEqual(9, projects.Count, "expecting the 9 projects"); Assert.True(projects.All(x => !string.IsNullOrEmpty(x.Project.Name))); Assert.True(projects.All(x => x.Project.CreatedAt > new DateTime(2000, 1, 1))); }
public void CanSpecifyProjectFilters() { ProjectsApi api = new ProjectsApi(GetSettings()); var projectsTask = api.GetProjects(new ProjectFilter() { ClientID = 12, }); using (var req = HttpServer.HandleRequest()) { Assert.IsNotNullOrEmpty(req.RawRequest.Url.Query); req.ResponseBodyText = Encoding.UTF8.GetString(Properties.Resources.AllProjects); } var projects = projectsTask.Result; }
public void UsesJson() { var settings = new HarvestApiSettings() { BaseUri = HttpServer.BaseUri, Password = "******", UserName = "******" }; var api = new ProjectsApi(settings); var projectsTask = api.GetProjects(); using (var req = HttpServer.HandleRequest(verbose: true)) { Assert.True(req.RawRequest.AcceptTypes.Contains("application/json"), "accept types: " + req.RawRequest.AcceptTypes.ToListString()); req.ResponseBodyText = Encoding.UTF8.GetString(Properties.Resources.AllProjects); } }
public void UsesBasicAuthentication() { var settings = new HarvestApiSettings() { BaseUri = HttpServer.BaseUri, Password = "******", UserName = "******" }; ProjectsApi api = new ProjectsApi(settings); var projectsTask = api.GetProjects(); using(var req = HttpServer.HandleRequest(verbose:true)) { var authenticationHeader = req.RawRequest.Headers["Authorization"]; Assert.NotNull(authenticationHeader); } }