public void DuplicatesGetIgnored()
        {
            var store          = Substitute.For <IJiraConfigurationStore>();
            var jiraClient     = Substitute.For <IJiraRestClient>();
            var jiraClientLazy = new Lazy <IJiraRestClient>(() => jiraClient);

            store.GetBaseUrl().Returns("https://github.com");
            store.GetIsEnabled().Returns(true);
            store.GetJiraUsername().Returns("user");
            store.GetJiraPassword().Returns("password".ToSensitiveString());
            var jiraIssue = new JiraIssue
            {
                Key    = "JRE-1234",
                Fields = new JiraIssueFields
                {
                    Comments = new JiraIssueComments()
                }
            };

            jiraClient.GetIssues(Arg.Any <string[]>()).Returns(ResultFromExtension <JiraIssue[]> .Success(new[] { jiraIssue }));

            var mapper = new WorkItemLinkMapper(store, new CommentParser(), jiraClientLazy, Substitute.For <ISystemLog>());

            var workItems = mapper.Map(
                new OctopusBuildInformation
            {
                Commits = new[]
Beispiel #2
0
        public void DuplicatesGetIgnored()
        {
            var store            = Substitute.For <IGitHubConfigurationStore>();
            var githubClient     = Substitute.For <IGitHubClient>();
            var githubClientLazy = new Lazy <IGitHubClient>(() => githubClient);

            store.GetBaseUrl().Returns("https://github.com");
            store.GetIsEnabled().Returns(true);

            var workItemNumber = 1234;

            githubClient.Issue.Get(Arg.Is("UserX"), Arg.Is("RepoY"), Arg.Is(workItemNumber))
            .Returns(new Issue("url", "htmlUrl", "commentUrl", "eventsUrl", workItemNumber, ItemState.Open, "Test title", "test body", null, null, new List <Octokit.Label>(), null, new List <Octokit.User>(), null, 0, null, null, DateTimeOffset.Now, null, workItemNumber, "node", false, null, null));

            var mapper = new WorkItemLinkMapper(Substitute.For <ISystemLog>(), store, new CommentParser(), githubClientLazy);

            var workItems = mapper.Map(new OctopusBuildInformation
            {
                VcsRoot = "https://github.com/UserX/RepoY",
                VcsType = "Git",
                Commits = new Commit[]
                {
                    new Commit {
                        Id = "abcd", Comment = "This is a test commit message. Fixes #1234"
                    },
                    new Commit {
                        Id = "defg", Comment = "This is a test commit message with duplicates. Fixes #1234"
                    }
                }
            });

            Assert.AreEqual(1, ((ISuccessResult <WorkItemLink[]>)workItems).Value.Length);
        }
Beispiel #3
0
        public void AzureDevOpsGitCommentsGetIgnored()
        {
            var store            = Substitute.For <IGitHubConfigurationStore>();
            var githubClient     = Substitute.For <IGitHubClient>();
            var githubClientLazy = new Lazy <IGitHubClient>(() => githubClient);

            store.GetBaseUrl().Returns("https://github.com");
            store.GetIsEnabled().Returns(true);

            var log = Substitute.For <ISystemLog>();

            var mapper = new WorkItemLinkMapper(log, store, new CommentParser(), githubClientLazy);

            var workItems = mapper.Map(new OctopusBuildInformation
            {
                VcsRoot = "https://something.com/_git/ProjectX",
                VcsType = "Git",
                Commits = new Commit[]
                {
                    new Commit {
                        Id = "abcd", Comment = "This is a test commit message. Fixes #1234"
                    }
                }
            });
            var success = workItems as ISuccessResult <WorkItemLink[]>;

            Assert.IsNotNull(success, "AzureDevOps VCS root should not be a failure");
            Assert.IsEmpty(success !.Value, "AzureDevOps VCS root should return an empty list of links");
            log.Received(1).WarnFormat("The VCS Root '{0}' indicates this build information is Azure DevOps related so GitHub comment references will be ignored", "https://something.com/_git/ProjectX");
        }
Beispiel #4
0
        public void HttpAuthExceptionShouldLogMeaningfulMessage()
        {
            if (!TryGetJiraSettings(out var baseUrl, out var username, out var _))
            {
                Assert.Ignore($"Configure the following environment variables '{JiraBaseUrlEnvironmentVariable}', '{JiraUsernameEnvironmentVariable}', '{JiraAuthTokenEnvironmentVariable}' to run these tests.");
            }

            var log = Substitute.For <ISystemLog>();

            var store = BuildJiraConfigurationStore(baseUrl, username, "invalidtoken");
            var jira  = BuildJiraRestClient(baseUrl, username, "invalidtoken", log);

            var buildInformation = CreateBuildInformation(
                new[]
            {
                new Commit
                {
                    Id      = "234",
                    Comment = "OATP-9999"
                }
            });

            var workItemLinkMapper = new WorkItemLinkMapper(
                store,
                new CommentParser(),
                new Lazy <IJiraRestClient>(jira),
                log);

            IResultFromExtension <WorkItemLink[]> result = null;

            Should.NotThrow(
                () =>
            {
                result = workItemLinkMapper.Map(buildInformation);
            });

            result.ShouldBeOfType <FailureResultFromExtension <WorkItemLink[]> >("A failure should be received");
            var failure = (FailureResultFromExtension <WorkItemLink[]>)result;

            failure.ErrorString.ShouldStartWith("Authentication failure, check the Jira access token is valid and has permissions to read work items");
        }
        public void DuplicatesGetIgnored()
        {
            var store          = Substitute.For <IJiraConfigurationStore>();
            var jiraClient     = Substitute.For <IJiraRestClient>();
            var jiraClientLazy = new Lazy <IJiraRestClient>(() => jiraClient);

            store.GetBaseUrl().Returns("https://github.com");
            store.GetIsEnabled().Returns(true);
            store.GetJiraUsername().Returns("user");
            store.GetJiraPassword().Returns("password");
            jiraClient.GetIssue(Arg.Is("JRE-1234")).Returns(new JiraIssue());
            jiraClient.GetIssueComments(Arg.Is("JRE-1234")).Returns(new JiraIssueComments
            {
                Comments = new [] { new JiraIssueComment {
                                        Body = string.Empty
                                    } }
            });

            var mapper = new WorkItemLinkMapper(store, new CommentParser(), jiraClientLazy);

            var workItems = mapper.Map(new OctopusPackageMetadata
            {
                CommentParser = "Jira",
                Commits       = new Commit[]
                {
                    new Commit {
                        Id = "abcd", Comment = "This is a test commit message. Fixes JRE-1234"
                    },
                    new Commit {
                        Id = "defg", Comment = "This is a test commit message with duplicates. Fixes JRE-1234"
                    }
                }
            });

            Assert.IsTrue(workItems.Succeeded);
            Assert.AreEqual(1, workItems.Value.Length);
        }
Beispiel #6
0
 public string NormalizeLinkData(string baseUrl, string vcsRoot, string linkData)
 {
     return(WorkItemLinkMapper.NormalizeLinkData(baseUrl, vcsRoot, linkData));
 }