Пример #1
0
        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");
              }
        }
Пример #2
0
        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)));
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
              }
        }
Пример #5
0
        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);
              }
        }
        /// <summary>
        /// Gets an instance of projects API.
        /// </summary>
        /// <returns>ProjectsApi object.</returns>
        public ProjectsApi GetProjectsApi()
        {
            var projectsApi = new ProjectsApi(authToken, organisationId);

            return(projectsApi);
        }