public void Translate()
        {
            var engine = new MockEngine();

            var task = new TranslateRepositoryUrls()
            {
                BuildEngine      = engine,
                RepositoryUrl    = "ssh://[email protected]/project/team/_ssh/repo",
                IsSingleProvider = true,
                SourceRoots      = new[]
                {
                    new MockItem("/1/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),    // ok
                    new MockItem("/2/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/_ssh/repo")),            // ok
                    new MockItem("/3/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/v3/account/project/team/repo")), // ok
                    new MockItem("/4/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/_ssh/repo")),                    // ok
                    new MockItem("/5/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),            // ok
                    new MockItem("/6/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/v3/account/project/team/repo")),            // ok
                    new MockItem("/7/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),   // different source control
                    new MockItem("/8/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),                // no "vs-ssh." prefix
                    new MockItem("/9/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),         // known host, but not visualstudio.com
                    new MockItem("/A/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/_ssh/repo")),        // unknown host
                    new MockItem("/B/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/project/team/ZZZ/repo")),          // bad format
                },
                Hosts = new[]
                {
                    new MockItem("contoso.com")
                }
            };

            bool result = task.Execute();

            AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log);

            AssertEx.AreEqual("https://account.visualstudio.com/project/team/_git/repo", task.TranslatedRepositoryUrl);

            AssertEx.Equal(new[]
            {
                "https://account.visualstudio.com/project/team/_git/repo",
                "https://test.visualstudio.com/project/_git/repo",
                "https://account.visualstudio.com/project/team/_git/repo",
                "https://account.visualstudio.com/_git/repo",
                "https://contoso.com/account/project/team/_git/repo",
                "https://contoso.com/account/project/team/_git/repo",
                "ssh://[email protected]:22/project/team/_ssh/repo",
                "ssh://[email protected]:22/project/team/_ssh/repo",
                "ssh://[email protected]:22/project/team/_ssh/repo",
                "ssh://[email protected]:22/project/team/_ssh/repo",
                "ssh://[email protected]:22/project/team/ZZZ/repo"
            }, task.TranslatedSourceRoots?.Select(r => r.GetMetadata("ScmRepositoryUrl")));

            Assert.True(result);
        }
        public void Translate()
        {
            var engine = new MockEngine();

            var task = new TranslateRepositoryUrls()
            {
                BuildEngine      = engine,
                RepositoryUrl    = "ssh://[email protected]/a/b/project/team/_ssh/repo",
                IsSingleProvider = true,
                SourceRoots      = new[]
                {
                    new MockItem("/1/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/tfs/project/team/_ssh/repo")),    // ok
                    new MockItem("/2/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/tfs/project/_ssh/repo")),          // ok
                    new MockItem("/3/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/v3/account/project/team/repo")),     // v3 not supported for on-prem
                    new MockItem("/4/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://[email protected]/tfs/project/team/_ssh/repo")),      // different source control
                    new MockItem("/5/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/tfs/project/team/_ssh/repo")), // unknown host
                    new MockItem("/6/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]:22/tfs/project/team/ZZZ/repo")),   // bad format
                },
                Hosts = new[]
                {
                    new MockItem("contoso.com")
                }
            };

            bool result = task.Execute();

            AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log);

            // SSH translation does not need virtual directory
            AssertEx.AreEqual("https://mytfs.com/a/b/project/team/_git/repo", task.TranslatedRepositoryUrl);

            AssertEx.Equal(new[]
            {
                "https://mytfs.com/tfs/project/team/_git/repo",
                "https://contoso.com/tfs/project/_git/repo",
                "ssh://[email protected]/v3/account/project/team/repo",
                "ssh://[email protected]/tfs/project/team/_ssh/repo",
                "ssh://[email protected]:22/tfs/project/team/_ssh/repo",
                "ssh://[email protected]:22/tfs/project/team/ZZZ/repo"
            }, task.TranslatedSourceRoots?.Select(r => r.GetMetadata("ScmRepositoryUrl")));

            Assert.True(result);
        }
示例#3
0
        public void Translate()
        {
            var engine = new MockEngine();

            var task = new TranslateRepositoryUrls()
            {
                BuildEngine      = engine,
                RepositoryUrl    = "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git",
                IsSingleProvider = true,
                SourceRoots      = new[]
                {
                    new MockItem("/1/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git")),
                    new MockItem("/2/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git")),
                    new MockItem("/2/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git")),
                    new MockItem("/2/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git")),
                },
                Hosts = new[]
                {
                    new MockItem("src.intranet.company1.com")
                }
            };

            bool result = task.Execute();

            AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log);

            AssertEx.AreEqual("ssh://[email protected]/root_dir_name/sub_dirs/reponame.git", task.TranslatedRepositoryUrl);

            AssertEx.Equal(new[]
            {
                "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git",
                "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git",
                "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git",
                "ssh://[email protected]/root_dir_name/sub_dirs/reponame.git",
            }, task.TranslatedSourceRoots?.Select(r => r.GetMetadata("ScmRepositoryUrl")));

            Assert.True(result);
        }
示例#4
0
        public void Translate()
        {
            var engine = new MockEngine();

            var task = new TranslateRepositoryUrls()
            {
                BuildEngine      = engine,
                RepositoryUrl    = "ssh://github.com/a/b",
                IsSingleProvider = true,
                SourceRoots      = new[]
                {
                    new MockItem("/1/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://github.com:22/a/b")),
                    new MockItem("/2/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://github1.com/a/b")),
                    new MockItem("/2/", KVP("SourceControl", "git"), KVP("ScmRepositoryUrl", "ssh://github1.com/a/b")),
                    new MockItem("/2/", KVP("SourceControl", "tfvc"), KVP("ScmRepositoryUrl", "ssh://github2.com/a/b")),
                },
                Hosts = new[]
                {
                    new MockItem("github1.com")
                }
            };

            bool result = task.Execute();

            AssertEx.AssertEqualToleratingWhitespaceDifferences("", engine.Log);

            AssertEx.AreEqual("https://github.com/a/b", task.TranslatedRepositoryUrl);

            AssertEx.Equal(new[]
            {
                "https://github.com/a/b",
                "ssh://github1.com/a/b",
                "https://github1.com/a/b",
                "ssh://github2.com/a/b"
            }, task.TranslatedSourceRoots?.Select(r => r.GetMetadata("ScmRepositoryUrl")));

            Assert.True(result);
        }