示例#1
0
        public void CreateFilingTarget_CreatesAzureDevOpsFilingTarget()
        {
            Uri hostUri = new Uri("https://dev.azure.com/myOrg/myProject");

            FilingClient filingTarget = FilingClientFactory.Create(hostUri);

            filingTarget.Should().BeOfType <AzureDevOpsFilingClient>();
            string.IsNullOrEmpty(filingTarget.ProjectOrRepository).Should().BeFalse();
            string.IsNullOrEmpty(filingTarget.AccountOrOrganization).Should().BeFalse();
        }
示例#2
0
        public void CreateFilingTarget_CreatesLegacyAzureDevOpsFilingTarget()
        {
            Uri hostUri = new Uri("https://myorg.visualstudio.com/myProject");

            FilingClient filingTarget = FilingClientFactory.Create(hostUri);

            filingTarget.ProjectOrRepository.Should().NotBeNull();
            string.IsNullOrEmpty(filingTarget.ProjectOrRepository).Should().BeFalse();
            string.IsNullOrEmpty(filingTarget.AccountOrOrganization).Should().BeFalse();
        }
示例#3
0
        public static FilingClient Create(Uri filingHostUri)
        {
            filingHostUri = filingHostUri ?? throw new ArgumentNullException(nameof(filingHostUri));

            string filingUriString = filingHostUri.OriginalString;

            FilingClient filingClient = null;

            foreach (Tuple <string, Regex> regexTuple in WorkItemFilingUtilities.WorkItemHostRegexTuples)
            {
                bool  isGitHub = regexTuple.Item1.Equals("github");
                Regex regex    = regexTuple.Item2;

                Match match = regex.Match(filingUriString);
                if (match.Success)
                {
                    filingClient = isGitHub ? (FilingClient) new GitHubFilingClient() : new AzureDevOpsFilingClient();
                    filingClient.ProjectOrRepository   = match.Groups[WorkItemFilingUtilities.PROJECT].Value;
                    filingClient.AccountOrOrganization = match.Groups[WorkItemFilingUtilities.ACCOUNT].Value;
                    break;
                }
            }

            if (filingClient == null)
            {
                throw new ArgumentException(
                          string.Format(
                              CultureInfo.CurrentCulture,
                              "'{0}' is not a recognized target URI for work item filing. Work items can be filed to GitHub or AzureDevOps " +
                              "(with URIs such as https://github.com/microsoft/sarif-sdk or https://dev.azure.com/contoso/contoso-project).",
                              filingUriString));
            }

            filingClient.HostUri = filingHostUri;

            return(filingClient);
        }