public void GetSourceLinkUrl_CustomHosts_Matching5() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mygitlab.com:100/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("mygitlab.com", KVP("ContentUrl", "https://domain.com:1")), new MockItem("mygitlab.com:123", KVP("ContentUrl", "https://domain.com:2")), new MockItem("mygitlab.com:123", KVP("ContentUrl", "https://domain.com:3")), new MockItem("z.mygitlab.com", KVP("ContentUrl", "https://domain.com:4")), new MockItem("z.mygitlab.com:123", KVP("ContentUrl", "https://domain.com:5")), new MockItem("z.mygitlab.com:123", KVP("ContentUrl", "https://domain.com:6")), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://domain.com:1/a/b/raw/0123456789abcdefABCDEF000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_SourceRootNotApplicable_RepositoryUrlNotDomain_Default() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://mygithub.com/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", "12345")), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); Assert.Equal("N/A", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_TrimDotGit() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://github.com/a/b.git"), KVP("SourceControl", "git"), KVP("RevisionId", "0000000000000000000000000000000000000000")), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://raw.githubusercontent.com/a/b/0000000000000000000000000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_DoNotTrimDotGit() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.visualstudio.com/project/_git/repo.git"), KVP("SourceControl", "git"), KVP("RevisionId", "0000000000000000000000000000000000000000")), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("http://subdomain.visualstudio.com/project/_apis/git/repositories/repo.git/items?api-version=1.0&versionType=commit&version=0000000000000000000000000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void VisualStudioHost_DefaultCollection_Project_Team(string domain, string host) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", $"https://{domain}/DefaultCollection/project/team/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem(host) } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual($"https://{domain}/project/_apis/git/repositories/repo/items?api-version=1.0&versionType=commit&version=0123456789abcdefABCDEF000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void EmptyHosts() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("x", KVP("RepositoryUrl", "http://abc.com"), KVP("SourceControl", "git")), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.AtLeastOneRepositoryHostIsRequired, "SourceLinkBitbucketGitHost", "Bitbucket.Git"), engine.Log); Assert.False(result); }
public void GetSourceLinkUrl_TrimmingGitIsCaseSensitive() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://gitlab.com/a/b.GIT"), KVP("SourceControl", "git"), KVP("RevisionId", "0000000000000000000000000000000000000000")), Hosts = new[] { new MockItem("gitlab.com") } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://gitlab.com/a/b.GIT/raw/0000000000000000000000000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_ImplicitHost_PortWithDefaultContentUrl() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mygitlab.com:1234/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), ImplicitHost = "mygitlab.com", }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://mygitlab.com:1234/a/b/raw/0123456789abcdefABCDEF000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_RepositoryUrl_Errors(string url) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", url), KVP("SourceControl", "git")), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValueOfWithIdentityIsInvalid, "SourceRoot.RepositoryUrl", "/src/", url), engine.Log); Assert.False(result); }
public void GetSourceLinkUrl_RevisionId_Errors(string revisionId) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://github.com/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", revisionId)), }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(Resources.ValueOfWithIdentityIsNotValidCommitHash, "SourceRoot.RevisionId", "/src/", revisionId), engine.Log); Assert.False(result); }
public void GetSourceLinkUrl_CustomHosts_WithPort() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mytfs.com:1234/project/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Domain = "mytfs.com:1234" }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("N/A", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_CustomCollection() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.tfs:1234/collection/project/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Domain = "tfs" }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("http://subdomain.tfs:1234/collection/project/_apis/git/repositories/repo/items?api-version=1.0&versionType=commit&version=0123456789abcdefABCDEF000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_SourceRootNotApplicable_RepositoryUrlNotDomain_Custom() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://abc.com/project/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "12345")), Domain = "visualstudio.com" }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); Assert.Equal("N/A", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_SourceRootNotApplicable_SourceLinkUrlSet() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://github.com/a/b"), KVP("SourceControl", "git"), KVP("SourceLinkUrl", "x"), KVP("RevisionId", "12345")), Hosts = new[] { new MockItem("github.com", KVP("ContentUrl", "https://raw.githubusercontent.com")) } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); Assert.Equal("N/A", task.SourceLinkUrl); Assert.True(result); }
public void GetSourceLinkUrl_HostsContentUrl_Errors(string url) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("x", KVP("RepositoryUrl", "http://abc.com"), KVP("SourceControl", "git")), Hosts = new[] { new MockItem("abc.com", KVP("ContentUrl", url)) } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValuePassedToTaskParameterNotValidHostUri, "Hosts", url), engine.Log); Assert.False(result); }
public void GetSourceLinkUrl_ImplicitHost_Errors(string domain) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("x", KVP("RepositoryUrl", "http://abc.com"), KVP("SourceControl", "git")), ImplicitHost = domain }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValuePassedToTaskParameterNotValidDomainName, "ImplicitHost", domain), engine.Log); Assert.False(result); }
public void RepoOnly(string domainAndAccount, string host) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", $"http://{domainAndAccount}/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem(host) } }; bool result = task.Execute(); // ERROR : The value of SourceRoot.RepositoryUrl with identity '/src/' is invalid: 'http://account.visualstudio.com/_git/repo'"" AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValueOfWithIdentityIsInvalid, "SourceRoot.RepositoryUrl", "/src/", $"http://{domainAndAccount}/_git/repo"), engine.Log); Assert.False(result); }
public void BuildSourceLinkUrl_BitbucketEnterprise_PersonalToken() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", ProjectCollection.Escape("https://user_name%40domain.com:[email protected]/scm/abc/project1.git")), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("bitbucket.domain.tools", KVP("ContentUrl", "https://bitbucket.domain.tools")), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://bitbucket.domain.tools/projects/abc/repos/project1/raw/*?at=0123456789abcdefABCDEF000000000000000000", task.SourceLinkUrl); Assert.True(result); }
public void ImplicitHostNotSupported() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://contoso.com:100/tfs/collection/project/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), IsSingleProvider = true, RepositoryUrl = "http://subdomain.tfs.com:100/tfs/collection/project/_git/repo" }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.AtLeastOneRepositoryHostIsRequired, "SourceLinkAzureDevOpsServerGitHost", "AzureDevOpsServer.Git"), engine.Log); Assert.False(result); }
public void BuildSourceLinkUrl_BitbucketCloud(string s1, string s2) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mybitbucket.org:100/a/b" + s1), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("mybitbucket.org", KVP("ContentUrl", "https://domain.com/x/y" + s2), KVP("EnterpriseEdition", "false")), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://api.domain.com/x/y/2.0/repositories/a/b/src/0123456789abcdefABCDEF000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl_MetadataWithEnterpriseEditionButWithoutVersion_UseNewVersionAsDefauld() { var isEnterpriseEditionSetting = KVP("EnterpriseEdition", "true"); var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://bitbucket.domain.com:100/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("domain.com", KVP("ContentUrl", "https://bitbucket.domain.com"), isEnterpriseEditionSetting), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://bitbucket.domain.com/projects/a/repos/b/raw/*?at=0123456789abcdefABCDEF000000000000000000", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl(string s1, string s2) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.contoso.com:100/account/project/_git/repo" + s1), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("contoso.com", KVP("ContentUrl", "https://domain.com/x/y" + s2)), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://domain.com/x/y/account/project/_apis/git/repositories/repo/items?api-version=1.0&versionType=commit&version=0123456789abcdefABCDEF000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl(string s1, string s2) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mygitea.com:100/a/b" + s1), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("mygitea.com", KVP("ContentUrl", "https://domain.com/x/y" + s2)), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://domain.com/x/y/a/b/raw/commit/0123456789abcdefABCDEF000000000000000000/*", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl(string s1, string s2) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git" + s1), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("src.intranet.company.com", KVP("ContentUrl", "https://src.intranet.company.com/gitweb" + s2)), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://src.intranet.company.com/gitweb/?p=root_dir_name/sub_dirs/reponame.git;a=blob_plain;hb=0123456789abcdefABCDEF000000000000000000;f=*", task.SourceLinkUrl); Assert.True(result); }
public void VirtualDirectory_Collection_Project_Team_Option() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "https://contoso.com:8080/tfs/collection/project/team/_git/_optimized/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("contoso.com", KVP("VirtualDirectory", "tfs")), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://contoso.com:8080/tfs/collection/project/_apis/git/repositories/repo/items?api-version=1.0&versionType=commit&version=0123456789abcdefABCDEF000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl_BitbucketEnterprise_InvalidUrl() { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://subdomain.mybitbucket.org/a"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("mybitbucket.org", KVP("ContentUrl", "https://domain.com/x/y")), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValueOfWithIdentityIsInvalid, "SourceRoot.RepositoryUrl", "/src/", "http://subdomain.mybitbucket.org/a"), engine.Log); Assert.False(result); }
public void DefaultContentUrl(string virtualDirectory, string localPath) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", $"http://contoso.com{localPath}collection/project/_git/repo"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("contoso.com", KVP("VirtualDirectory", virtualDirectory)), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual($"http://contoso.com{localPath}collection/project/_apis/git/repositories/repo/items?api-version=1.0&versionType=commit&version=0123456789abcdefABCDEF000000000000000000&path=/*", task.SourceLinkUrl); Assert.True(result); }
public void BuildSourceLinkUrl_IncorrectVersionForEnterpriseEdition_ERROR() { var isEnterpriseEditionSetting = KVP("EnterpriseEdition", "true"); var version = KVP("Version", "incorrect_version"); var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://bitbucket.domain.com:100/a/b"), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("domain.com", KVP("ContentUrl", "https://bitbucket.domain.com"), isEnterpriseEditionSetting, version), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ItemOfItemGroupMustSpecifyMetadata, "domain.com", "SourceLinkBitbucketGitHost", "Version"), engine.Log); Assert.False(result); }
public void BadUrl_NotMatchingToVirtualDirectory(string url, string virtualDirectory) { var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", url), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("contoso.com", KVP("VirtualDirectory", virtualDirectory)) } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences( "ERROR : " + string.Format(CommonResources.ValueOfWithIdentityIsInvalid, "SourceRoot.RepositoryUrl", "/src/", url), engine.Log); Assert.False(result); }
public void BuildSourceLinkUrl_BitbucketEnterpriseOldVersionHttps(string s1, string s2, string bitbucketVersion) { var isEnterpriseEditionSetting = KVP("EnterpriseEdition", "true"); var version = KVP("Version", bitbucketVersion); var engine = new MockEngine(); var task = new GetSourceLinkUrl() { BuildEngine = engine, SourceRoot = new MockItem("/src/", KVP("RepositoryUrl", "http://bitbucket.domain.com:100/base/scm/a/b" + s1), KVP("SourceControl", "git"), KVP("RevisionId", "0123456789abcdefABCDEF000000000000000000")), Hosts = new[] { new MockItem("domain.com", KVP("ContentUrl", "https://bitbucket.domain.com" + s2), isEnterpriseEditionSetting, version), } }; bool result = task.Execute(); AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log); AssertEx.AreEqual("https://bitbucket.domain.com/base/projects/a/repos/b/browse/*?at=0123456789abcdefABCDEF000000000000000000&raw", task.SourceLinkUrl); Assert.True(result); }