コード例 #1
0
        /// <summary>
        /// Update Iteration Dates
        /// </summary>
        /// <param name="project"></param>
        /// <param name="path"></param>
        /// <param name="startDate"></param>
        /// <param name="finishDate"></param>
        /// <returns></returns>
        public GetNodeResponse.Node UpdateIterationDates(string project, string path, DateTime startDate, DateTime finishDate)
        {
            try
            {
                CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
                {
                    //name = path,
                    attributes = new CreateUpdateNodeViewModel.Attributes()
                    {
                        startDate  = startDate,
                        finishDate = finishDate
                    }
                };

                GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

                using (var client = GetHttpClient())
                {
                    // serialize the fields array into a json string
                    var patchValue = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                    var method     = new HttpMethod("PATCH");

                    // send the request
                    var request = new HttpRequestMessage(method, project + "/_apis/wit/classificationNodes/iterations/" + path + "?api-version=" + _configuration.VersionNumber)
                    {
                        Content = patchValue
                    };
                    var response = client.SendAsync(request).Result;

                    if (response.IsSuccessStatusCode)
                    {
                        viewModel         = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                        viewModel.Message = "success";
                    }
                    else
                    {
                        dynamic responseForInvalidStatusCode = response.Content.ReadAsAsync <dynamic>();
                        Newtonsoft.Json.Linq.JContainer msg  = responseForInvalidStatusCode.Result;
                        viewModel.Message = msg.ToString();

                        var    errorMessage = response.Content.ReadAsStringAsync();
                        string error        = Utility.GeterroMessage(errorMessage.Result.ToString());
                        this.LastFailureMessage = error;
                    }

                    viewModel.HttpStatusCode = response.StatusCode;

                    return(viewModel);
                }
            }
            catch (Exception ex)
            {
                logger.Debug(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n");
            }
            return(new GetNodeResponse.Node());
        }
コード例 #2
0
        /// <summary>
        /// Update Iteration Dates
        /// </summary>
        /// <param name="project"></param>
        /// <param name="path"></param>
        /// <param name="startDate"></param>
        /// <param name="finishDate"></param>
        /// <returns></returns>
        public GetNodeResponse.Node UpdateIterationDates(string project, string path, DateTime startDate, DateTime finishDate)
        {
            CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
            {
                //name = path,
                attributes = new CreateUpdateNodeViewModel.Attributes()
                {
                    startDate  = startDate,
                    finishDate = finishDate
                }
            };

            GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _credentials);

                // serialize the fields array into a json string
                var patchValue = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                var method     = new HttpMethod("PATCH");

                // send the request
                var request = new HttpRequestMessage(method, _configuration.UriString + project + "/_apis/wit/classificationNodes/iterations/" + path + "?api-version=" + _configuration.VersionNumber)
                {
                    Content = patchValue
                };
                var response = client.SendAsync(request).Result;

                if (response.IsSuccessStatusCode)
                {
                    viewModel         = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                    viewModel.Message = "success";
                }
                else
                {
                    dynamic responseForInvalidStatusCode = response.Content.ReadAsAsync <dynamic>();
                    Newtonsoft.Json.Linq.JContainer msg  = responseForInvalidStatusCode.Result;
                    viewModel.Message = msg.ToString();

                    var    errorMessage = response.Content.ReadAsStringAsync();
                    string error        = Utility.GeterroMessage(errorMessage.Result.ToString());
                    this.LastFailureMessage = error;
                }

                viewModel.HttpStatusCode = response.StatusCode;

                return(viewModel);
            }
        }
コード例 #3
0
        public GetNodeResponse.Node CreateIteration(string project, string path)
        {
            CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
            {
                name = path
                       //attributes = new CreateUpdateNodeViewModel.Attributes()
                       //{
                       //    startDate = startDate,
                       //    finishDate = finishDate
                       //}
            };

            GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _credentials);

                // serialize the fields array into a json string
                var postValue = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                var method    = new HttpMethod("POST");

                // send the request
                var request = new HttpRequestMessage(method, _configuration.UriString + project + "/_apis/wit/classificationNodes/iterations?api-version=2.2")
                {
                    Content = postValue
                };
                var response = client.SendAsync(request).Result;

                if (response.IsSuccessStatusCode)
                {
                    viewModel         = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                    viewModel.Message = "success";
                }
                else
                {
                    dynamic responseForInvalidStatusCode = response.Content.ReadAsAsync <dynamic>();
                    Newtonsoft.Json.Linq.JContainer msg  = responseForInvalidStatusCode.Result;
                    viewModel.Message = msg.ToString();
                }

                viewModel.HttpStatusCode = response.StatusCode;

                return(viewModel);
            }
        }
コード例 #4
0
        public void WorkItemTracking_Nodes_UpdateIterationDates_Success()
        {
            // arrange
            ClassificationNodes request    = new ClassificationNodes(_configuration);
            DateTime            startDate  = new DateTime(2016, 11, 29);
            DateTime            finishDate = new DateTime(2016, 12, 17);
            string path = "Iteration Foo";

            // act
            GetNodeResponse.Node response = request.UpdateIterationDates(_configuration.Project, path, startDate, finishDate);

            //assert
            Assert.AreEqual(HttpStatusCode.OK, response.HttpStatusCode);

            request = null;
        }
コード例 #5
0
        public void WorkItemTracking_Nodes_GetIteration_Success()
        {
            // arrange
            string path = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15);
            ClassificationNodes request = new ClassificationNodes(_configuration);

            // act
            GetNodeResponse.Node   createResponse = request.CreateIteration(_configuration.Project, path);
            GetNodesResponse.Nodes getResponse    = request.GetIteration(_configuration.Project, path);

            //assert
            Assert.AreEqual(HttpStatusCode.Created, createResponse.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, getResponse.HttpStatusCode);

            request = null;
        }
コード例 #6
0
        public void WorkItemTracking_Nodes_RenameIteration_Success()
        {
            // arrange
            ClassificationNodes request = new ClassificationNodes(_configuration);
            string path    = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15);
            string newName = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 10) + "-Rename";

            // act
            GetNodeResponse.Node responseCreate = request.CreateIteration(_configuration.Project, path);
            GetNodeResponse.Node responseUpdate = request.RenameIteration(_configuration.Project, path, newName);

            //assert
            Assert.AreEqual(HttpStatusCode.Created, responseCreate.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, responseUpdate.HttpStatusCode);

            request = null;
        }
コード例 #7
0
        public void WorkItemTracking_Nodes_UpdateIterationDates_Success()
        {
            // arrange
            ClassificationNodes request    = new ClassificationNodes(_configuration);
            DateTime            startDate  = new DateTime(2016, 11, 29);
            DateTime            finishDate = new DateTime(2016, 12, 17);
            string path = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15);

            // act
            GetNodeResponse.Node responseCreate = request.CreateIteration(_configuration.Project, path);
            GetNodeResponse.Node responseUpdate = request.UpdateIterationDates(_configuration.Project, path, startDate, finishDate);

            //assert
            Assert.AreEqual(HttpStatusCode.Created, responseCreate.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, responseUpdate.HttpStatusCode);

            request = null;
        }
コード例 #8
0
        public void WorkItemTracking_Nodes_DeleteIteration_Success()
        {
            // arrange
            ClassificationNodes request = new ClassificationNodes(_configuration);
            string masterIteration      = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15) + "-MASTER";
            string deleteIteration      = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15) + "-delete";

            // act
            GetNodeResponse.Node responseMaster = request.CreateIteration(_configuration.Project, masterIteration);
            GetNodeResponse.Node responseDelete = request.CreateIteration(_configuration.Project, deleteIteration);
            var responseMove = request.DeleteIteration(_configuration.Project, deleteIteration, responseMaster.id.ToString());

            //assert
            Assert.AreEqual(HttpStatusCode.Created, responseMaster.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.Created, responseDelete.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.NoContent, responseMove);

            request = null;
        }
コード例 #9
0
        public void WorkItemTracking_Nodes_MoveArea_Success()
        {
            // arrange
            ClassificationNodes request = new ClassificationNodes(_configuration);
            string parent = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15) + "-PARENT";
            string child  = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15) + "-child";

            // act
            GetNodeResponse.Node responseParent = request.CreateArea(_configuration.Project, parent);
            GetNodeResponse.Node responseChild  = request.CreateArea(_configuration.Project, child);
            GetNodeResponse.Node responseMove   = request.MoveArea(_configuration.Project, parent, responseChild.id);

            //assert
            Assert.AreEqual(HttpStatusCode.Created, responseParent.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.Created, responseChild.HttpStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, responseMove.HttpStatusCode);

            request = null;
        }
コード例 #10
0
        public void WorkItemTracking_Nodes_CreateArea_Success()
        {
            // arrange
            ClassificationNodes request = new ClassificationNodes(_configuration);
            string path = "Area Foo";

            // act
            GetNodeResponse.Node response = request.CreateArea(_configuration.Project, path);

            //assert
            if (response.Message.Contains("VS402371:"))
            {
                Assert.Inconclusive("Area path '" + path + "' already exists");
            }
            else
            {
                Assert.AreEqual(HttpStatusCode.Created, response.HttpStatusCode);
            }
            request = null;
        }
コード例 #11
0
        public void WorkItemTracking_Nodes_CreateIteration_Success()
        {
            // arrange
            ClassificationNodes request = new ClassificationNodes(_configuration);
            string path = System.Guid.NewGuid().ToString().ToUpper().Substring(0, 15);

            // act
            GetNodeResponse.Node response = request.CreateIteration(_configuration.Project, path);

            //assert
            if (response.Message.Contains("VS402371: Classification node name " + path))
            {
                Assert.Inconclusive("Iteration '" + path + "' already exists");
            }
            else
            {
                Assert.AreEqual(HttpStatusCode.Created, response.HttpStatusCode);
            }
            request = null;
        }
コード例 #12
0
        /// <summary>
        /// Create Iterations
        /// </summary>
        /// <param name="projectName"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public GetNodeResponse.Node CreateIteration(string projectName, string path)
        {
            CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
            {
                name = path
            };

            GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _credentials);

                // serialize the fields array into a json string
                //var patchValue = new StringContent(JsonConvert.SerializeObject(team), Encoding.UTF8, "application/json");
                var jsonContent = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                var method      = new HttpMethod("POST");

                var request = new HttpRequestMessage(method, _configuration.UriString + string.Format("/{0}/_apis/wit/classificationNodes/iterations?api-version=1.0", projectName))
                {
                    Content = jsonContent
                };
                var response = client.SendAsync(request).Result;

                if (response.IsSuccessStatusCode)
                {
                    viewModel = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                }
                else
                {
                    var errorMessage = response.Content.ReadAsStringAsync();
                }

                viewModel.HttpStatusCode = response.StatusCode;
            }

            return(viewModel);
        }
コード例 #13
0
        public void WorkItemTracking_Nodes_CreateIteration_Success()
        {
            // arrange
            ClassificationNodes request    = new ClassificationNodes(_configuration);
            DateTime            startDate  = new DateTime(2016, 11, 28);
            DateTime            finishDate = new DateTime(2016, 12, 16);
            string path = "Iteration Foo";

            // act
            GetNodeResponse.Node response = request.CreateIteration(_configuration.Project, path, startDate, finishDate);

            //assert
            if (response.Message.Contains("VS402371: Classification node name " + path))
            {
                Assert.Inconclusive("Iteration '" + path + "' already exists");
            }
            else
            {
                Assert.AreEqual(HttpStatusCode.Created, response.HttpStatusCode);
            }
            request = null;
        }
コード例 #14
0
        /// <summary>
        /// movie Iteration to parent
        /// </summary>
        /// <param name="projectName"></param>
        /// <param name="targetIteration"></param>
        /// <param name="sourceIterationId"></param>
        /// <returns></returns>
        public GetNodeResponse.Node MoveIteration(string projectName, string targetIteration, int sourceIterationId)
        {
            try
            {
                CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
                {
                    id = sourceIterationId
                };
                GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

                using (var client = GetHttpClient())
                {
                    var jsonContent = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                    var method      = new HttpMethod("POST");

                    var request = new HttpRequestMessage(method, string.Format("/{0}/_apis/wit/classificationNodes/iterations/{1}?api-version=" + _configuration.VersionNumber, projectName, targetIteration))
                    {
                        Content = jsonContent
                    };
                    var response = client.SendAsync(request).Result;

                    if (response.IsSuccessStatusCode)
                    {
                        viewModel = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                    }
                    else
                    {
                        var errorMessage = response.Content.ReadAsStringAsync();
                    }

                    viewModel.HttpStatusCode = response.StatusCode;
                }
            }
            catch (Exception ex)
            {
                logger.Debug(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n");
            }
            return(new GetNodeResponse.Node());
        }
コード例 #15
0
        public GetNodeResponse.Node MoveArea(string project, string targetArea, int id)
        {
            CreateUpdateNodeViewModel.Node node = new CreateUpdateNodeViewModel.Node()
            {
                id = id
            };

            GetNodeResponse.Node viewModel = new GetNodeResponse.Node();

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _credentials);

                // serialize the fields array into a json string
                var patchValue = new StringContent(JsonConvert.SerializeObject(node), Encoding.UTF8, "application/json");
                var method     = new HttpMethod("POST");

                // send the request
                var request = new HttpRequestMessage(method, _configuration.UriString + project + "/_apis/wit/classificationNodes/areas/" + targetArea + "?api-version=2.2")
                {
                    Content = patchValue
                };
                var response = client.SendAsync(request).Result;

                if (response.IsSuccessStatusCode)
                {
                    viewModel         = response.Content.ReadAsAsync <GetNodeResponse.Node>().Result;
                    viewModel.Message = "success";
                }

                viewModel.HttpStatusCode = response.StatusCode;

                return(viewModel);
            }
        }