public void CanCreateAndCommentAndDeleteIssues()
        {
            var title   = Guid.NewGuid().ToString();
            var body    = Guid.NewGuid().ToString();
            var request = new CreateIssueRequest(title, body)
            {
                Assignee = "rhysc", Labels = new[] { "Test1", "Test2" }
            };
            var issue = _issuesRepositoryApi.Create("githubsharp", "rhysc", request);

            Assert.NotNull(issue);
            Assert.AreEqual(title, issue.Title);
            Assert.AreEqual(body, issue.Body);
            Assert.AreEqual(title, issue.Title);
            Assert.True(issue.Labels.Any(l => l.Name == "Test1"));
            Assert.True(issue.Labels.Any(l => l.Name == "Test2"));
            Assert.AreEqual("RhysC", issue.Assignee.Login);

            var comment         = Guid.NewGuid().ToString();
            var commentedIsssue = _issuesRepositoryApi.CommentOnIssue("githubsharp", "rhysc", issue.Number, comment);

            Assert.AreEqual(comment, commentedIsssue.Body);

            var closedIssue = _issuesRepositoryApi.Close("githubsharp", "rhysc", issue.Number);

            Assert.NotNull(closedIssue);
            Assert.AreEqual(title, closedIssue.Title);
            Assert.AreEqual(body, closedIssue.Body);
            Assert.AreEqual(title, closedIssue.Title);
            Assert.AreEqual("RhysC", closedIssue.Assignee.Login);
            Assert.AreEqual("closed", closedIssue.State);
            Console.WriteLine("closedat - {0}, Utc Now - {1}", closedIssue.ClosedAt, DateTime.UtcNow);
            Assert.True(DateTime.UtcNow.AddMinutes(-2) < closedIssue.ClosedAt && closedIssue.ClosedAt < DateTime.UtcNow.AddMinutes(2));
        }
Exemplo n.º 2
0
        public Issue CreateIssue([NotNull] string branchId, [NotNull] CreateIssueRequest issue)
        {
            if (issue == null)
            {
                throw new ArgumentNullException(nameof(issue));
            }

            var projectName = GetSetting(TfsSettings.Project);

            var workItemStore = GetStore();

            Project project;

            if (projectName.Equals(UseVcsBranch, StringComparison.InvariantCultureIgnoreCase))
            {
                if (string.IsNullOrEmpty(branchId))
                {
                    throw new ArgumentException(nameof(branchId));
                }

                var projects = workItemStore.Projects;

                project = projects
                          .Cast <Project>()
                          .SingleOrDefault(_ => branchId.StartsWith($"$/{_.Name}", StringComparison.Ordinal));
            }
            else
            {
                project = workItemStore.Projects[projectName];
            }

            if (project == null)
            {
                throw new Exception();
            }

            const string taskItemTypeName = "Task";

            var workItemType = project.WorkItemTypes[taskItemTypeName];

            var workItem = new WorkItem(workItemType)
            {
                Description = issue.Description,
                Title       = issue.Title
            };

            var validationResult = workItem.Validate();

            if (validationResult.Count > 0)
            {
                throw new Exception();                 // TODO: specific exception
            }

            workItem.Save();

            return(GetIssue(workItem));
        }
Exemplo n.º 3
0
        public IActionResult CreateIssue([FromBody] CreateIssueRequest data)
        {
            if (data == null)
            {
                return(BadRequest());
            }

            return(ProcessCommand(new CreateIssueCommand(data)));
        }
        /// <summary>
        /// Creates new issue.
        /// </summary>
        /// <returns>The newly created issue.</returns>
        /// <param name="projectId">The ID, path or <see cref="Project"/> of the project.</param>
        /// <param name="request">Create issue request.</param>
        public async Task <Issue> CreateAsync(ProjectId projectId, CreateIssueRequest request)
        {
            string impersonate = "";

            if (request.Sudo_ImpersonateUsername != null)
            {
                impersonate = "?sudo=" + request.Sudo_ImpersonateUsername;
            }
            return(await _httpFacade.Post <Issue>($"projects/{projectId}/issues" + impersonate, request));
        }
Exemplo n.º 5
0
        public string GetIssueKey(CreateIssueRequest issueRequestBody)
        {
            RestRequest createIssueRequest = new RestRequest(CreateIssueEndpoint);

            createIssueRequest.AddHeader("Content-Type", "application/json");
            createIssueRequest.AddJsonBody(issueRequestBody);
            string requestContent = _restClient.Post(createIssueRequest).Content;

            return(JsonConvert.DeserializeObject <CreateIssueResponse>(requestContent).key);
        }
Exemplo n.º 6
0
        public void CreateIssue()
        {
            //Arrange
            CreateIssueRequest createIssueRequest = new CreateIssueRequest(token, method, issueDefaultParameters.category, issueDefaultParameters.summary, issueDefaultParameters.description, issueDefaultParameters.projectName);

            //Act
            Task <IRestResponse> responseCreate = createIssueRequest.ExecuteRequest();

            //Assert
            createIssueResponse = jsonDeserializer.Deserialize <CreateIssueResponse>(responseCreate);
            string nameCategory = createIssueResponse.issue.category.name;

            Assert.Equal(statusEsperado, responseCreate.Result.StatusCode.ToString());
            Assert.Equal(issueDefaultParameters.category, nameCategory);
        }
Exemplo n.º 7
0
        public void CreateIssue(CreateIssueRequest issue, string userEmail)
        {
            if (issue is null)
            {
                throw new ArgumentNullException(nameof(issue));
            }

            var issueDbo = new Issue()
            {
                Description = issue.Description,
                LoggedBy    = userEmail
            };

            repository.Issue.Add(issueDbo);
            repository.SaveChanges();
        }
Exemplo n.º 8
0
        public Issue CreateIssue([NotNull] string branchId, [NotNull] CreateIssueRequest issue)
        {
            var gitHubClient = GetClient();

            var newIssue = new NewIssue(issue.Title)
            {
                Body = issue.Description
            };

            var result = gitHubClient.Issue.Create(
                GetSetting(GitHubItSettingKeys.RepositoryOwner),
                GetSetting(GitHubItSettingKeys.RepositoryName),
                newIssue)
                         .Result;

            return(result.ToModel());
        }
        public void ShouldCreateIssue()
        {
            var dateTimeString = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);

            var title = $"Test issue {dateTimeString}";

            var createIssueRequest = new CreateIssueRequest
            {
                Description = dateTimeString,
                Title       = title
            };

            var result = _target.CreateIssue(null, createIssueRequest);

            result.Should().NotBeNull();
            result.Description.ShouldBeEquivalentTo(dateTimeString);
            result.Title.ShouldBeEquivalentTo(title);
        }
Exemplo n.º 10
0
        /// <summary>
        ///     Creates the issue
        /// </summary>
        /// <param name="branchId">Target branch Id</param>
        /// <param name="createIssueRequest">The issue.</param>
        /// <returns></returns>
        public Issue CreateIssue(string branchId, CreateIssueRequest createIssueRequest)
        {
            var client = GetClient();

            var projectUuid = GetProjectUuid(client);

            var workItemTypes = client.Issues.GetTypes(projectUuid).Result;

            ValidateResponse(workItemTypes, HttpStatusCode.OK);

            var workItemType = workItemTypes.Data
                               .SingleOrDefault(_ => _.Identifier.EndsWith(WorkItemTypes.Task, StringComparison.Ordinal))
                               ?.Resource;

            var caterories = client.Issues.GetCategories().Result;

            ValidateResponse(workItemTypes, HttpStatusCode.OK);

            var category = caterories.Data.Entities.SingleOrDefault(_ =>
                                                                    _.Archived == false &&
                                                                    _.Depth == 0 &&
                                                                    _.Title.Equals("Unassigned") &&
                                                                    _.ProjectArea.Resource.EndsWith(projectUuid, StringComparison.Ordinal))?.Resource;

            var issue = client.Issues.Create(
                projectUuid,
                new CreateWorkItem
            {
                Description          = createIssueRequest.Description,
                FiledAgainstResource = category,
                Title        = createIssueRequest.Title,
                TypeResource = workItemType
            })
                        .Result;

            ValidateResponse(issue, HttpStatusCode.Created);

            var states = client.Issues.GetStates(projectUuid).Result;

            return(issue.Data?.ToDto(states.Data));
        }
Exemplo n.º 11
0
        /// <summary>
        ///     Creates the issue
        /// </summary>
        /// <param name="branchId">Target branch Id</param>
        /// <param name="createIssueRequest">The issue.</param>
        /// <returns></returns>
        public Issue CreateIssue(string branchId, CreateIssueRequest createIssueRequest)
        {
            if (createIssueRequest == null)
            {
                throw new ArgumentNullException(nameof(createIssueRequest));
            }

            var client = GetClient();

            var project = GetProject(client);

            var issue = client.Issues
                        .Create(project.Id,
                                new CreateIssue
            {
                Description = createIssueRequest.Description,
                Title       = createIssueRequest.Title
            })
                        .Result;

            return(ToDto(issue.Data));
        }
Exemplo n.º 12
0
        private async Task CreateIssue()
        {
            if (!ValidateSummary())
            {
                return;
            }
            if (!ValidateIssueTypes())
            {
                return;
            }
            if (!ValidatePriorities())
            {
                return;
            }

            var request = new CreateIssueRequest();

            request.Fields.CreateIssueProject.Key = Project.Key;
            request.Fields.Description            = Description;
            request.Fields.IssueType.Name         = IssueTypes[SelectedIssueTypeIndex].Name;
            request.Fields.Priority.Id            = PriorityList[SelectedPriorityIndex].Id;
            request.Fields.Summary = Summary;
            LoadingText            = AppResources.CreatingIssueMessage;

            MessengerInstance.Send(true, "TaskBarVisibility");
            var createdIssue = await jiraService.CreateIssue(request);

            MessengerInstance.Send(false, "TaskBarVisibility");
            if (createdIssue == null)
            {
                dialogService.ShowDialog(AppResources.CreateIssueErrorMessage, AppResources.Error);
            }
            else
            {
                dialogService.ShowDialog(string.Format(AppResources.IssueCreatedMessage, createdIssue.Key), AppResources.Done);
                MessengerInstance.Send(true, AppResources.CreateIssueToken);
                navigationService.GoBack();
            }
        }
Exemplo n.º 13
0
        public SuccessResponse PostIssue(CreateIssueRequest issue)
        {
            var result = _createValidator.Validate(issue, ruleSet: "Required");

            if (!result.IsValid)
            {
                foreach (var failure in result.Errors)
                {
                    return(new SuccessResponse
                    {
                        Message = failure.PropertyName + " failed validation." + failure.ErrorMessage
                    });
                }
            }
            var newIssue = _mapper.Map <Issue>(issue);
            var issueId  = _issuesLogic.CreateIssue(newIssue);

            return(new SuccessResponse
            {
                Id = issueId,
                Message = "Issue Created Successfully"
            });
        }
Exemplo n.º 14
0
        public async Task <CreateIssueResponse> CreateIssue(CreateIssueRequest request)
        {
            var url = string.Format("{0}{1}/", App.BaseUrl, JiraRequestType.Issue.ToString().ToLower(CultureInfo.InvariantCulture));

            try
            {
                var result = await jsonClient.Post <CreateIssueRequest, CreateIssueResponse>(new Uri(url), request, App.UserName, App.Password, HttpStatusCode.Created, TokenSource);

                return(result);
            }
            catch (Exception exception)
            {
                var extras = BugSenseHandler.Instance.CrashExtraData;
                extras.Add(new CrashExtraData
                {
                    Key   = "Method",
                    Value = "JiraService.CreateIssue"
                });

                BugSenseHandler.Instance.LogException(exception, extras);
            }
            return(null);
        }
        public IssueResponse Create(string repositoryName, string owner, CreateIssueRequest request)
        {
            var url = string.Format("repos/{0}/{1}/issues", owner, repositoryName);

            return(ConsumeJsonUrlAndPostData <CreateIssueRequest, IssueResponse>(url, request));
        }
Exemplo n.º 16
0
        public async Task <IActionResult> CreateFeatureAsync(CreateIssueRequest createIssueRequest)
        {
            await _githubService.CreateFeatureIssue(createIssueRequest.UserName, createIssueRequest.Title, createIssueRequest.Description);

            return(Ok());
        }
Exemplo n.º 17
0
 public CreateIssueCommand(CreateIssueRequest request)
 {
     _request = request;
 }
Exemplo n.º 18
0
        public async Task <IActionResult> CreateByOrg([FromRoute] string organizationName, [FromRoute] string projectName, [FromBody] CreateIssueRequest issueRequest)
        {
            if (issueRequest == null)
            {
                return(new BadRequestResult());
            }

            var newIssueId = Guid.NewGuid();
            var issue      = new Issue
            {
                Id        = newIssueId,
                Title     = issueRequest.Title,
                AuthorId  = HttpContext.GetUserId(),
                CreatedAt = DateTime.UtcNow,
                Content   = issueRequest.Content,
            };

            var created = await _issueService.CreateIssueByOrgAsync(issue, issueRequest.Types, organizationName, projectName).ConfigureAwait(false);

            if (!created)
            {
                return(NotFound());
            }

            var locationUri = _uriService.GetUri(issue.Number.ToString());

            return(Created(locationUri, new Response <IssueResponse>(_mapper.Map <IssueResponse>(issue))));
        }
 public StatusCodeResult CreateIssue(CreateIssueRequest issue)
 {
     issueManager.CreateIssue(issue, UserEmail);
     return(new StatusCodeResult(204));
 }
Exemplo n.º 20
0
        public static async Task OnHttpRequest(Microsoft.AspNetCore.Http.HttpContext e, DbUser u)
        {
            //Decode issue
            CreateIssueRequest request = Program.DecodePostBody <CreateIssueRequest>(e);

            //Get topic name
            string client_tag;

            if (client_name_topics.ContainsKey(request.client_name))
            {
                client_tag = client_name_topics[request.client_name];
            }
            else
            {
                throw new StandardError("Unknown Client", StandardErrorCode.InvalidInput);
            }

            //Get server
            DbServer server = await Program.connection.GetServerByIdAsync(request.server_id);

            if (server == null)
            {
                throw new StandardError("Server Not Found", StandardErrorCode.InvalidInput);
            }
            int?   tribeIdInt = server.TryGetTribeIdAsync(Program.connection, u.steam_id).GetAwaiter().GetResult();
            string tribeId    = tribeIdInt.HasValue ? tribeIdInt.Value.ToString() : "*No Tribe ID*";

            //Get the screenshot
            var screenshot = UserContentUploader.FinishContentUpload(request.screenshot_token);

            //Get attachments and make their body
            string attachment_body = "";

            for (int i = 0; i < request.attachment_tokens.Length; i++)
            {
                var attachment = UserContentUploader.FinishContentUpload(request.attachment_tokens[i]);
                attachment_body += $"[{request.attachment_names[i].Replace("]", "\\]")}]({attachment.url}) ";
            }
            if (request.attachment_tokens.Length == 0)
            {
                attachment_body = "*No attachments*";
            }

            //Create the body
            string body = $"*This issue was reported automatically inside of the app.*\n\n**[Description]**\n{request.body_description}\n\n**[Expected Result]**\n{request.body_expected}\n\n**[Screenshot]**\n![image]({screenshot.url})\n\n**[Client Info]**\n**Client-Name**: {request.client_name},\n**Client-Name**:  {request.client_info}\n\n**[Attachments]**\n{attachment_body}\n\n**[User/Server Data]**\n**User Internal ID**: {u._id},\n**Server Internal ID**: {server.id},\n**Server Map**: {server.latest_server_map},\n**Tribe ID**: {tribeId}\n**Server Name**: {server.display_name}\n\n**[Report Info]**\nThis report was created by the Delta Web Map backend server.";

            //Submit
            string response_string;

            using (HttpClient hc = new HttpClient())
            {
                //Send
                hc.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Program.config.github_api_key);
                hc.DefaultRequestHeaders.Add("User-Agent", "DeltaWebMap-Master-Server");
                var response = await hc.PostAsync("https://api.github.com/repos/deltawebmap/Delta-Web-Map-User-Reports/issues", new StringContent(JsonConvert.SerializeObject(new GitHubIssueCreateRequest
                {
                    body = body,
                    title = $"[{request.topic}] {request.title}",
                    labels = new string[]
                    {
                        "Auto Generated",
                        client_tag
                    }
                })));

                //Check
                response_string = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception("Unexpected Status Code");
                }
            }

            //Decode
            await Program.QuickWriteJsonToDoc(e, new CreateIssueResponse
            {
                url = JsonConvert.DeserializeObject <GitHubIssueCreateResponse>(response_string).html_url
            });
        }
Exemplo n.º 21
0
 /// <summary>
 /// Creates new issue.
 /// </summary>
 /// <returns>The newly created issue.</returns>
 /// <param name="projectId">The ID, path or <see cref="Project"/> of the project.</param>
 /// <param name="request">Create issue request.</param>
 public async Task <Issue> CreateAsync(ProjectId projectId, CreateIssueRequest request) =>
 await _httpFacade.Post <Issue>($"projects/{projectId}/issues", request);