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(); }
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(); }
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); }