8311: Pass in container token to extractTree
[arvados.git] / services / crunch-run / git_mount_test.go
index 4c6ce7f0750d5de1e02bc617ab504fe4acf9cb82..0161abbc55588adf852210b4881c51edfccdf228 100644 (file)
@@ -22,15 +22,10 @@ type GitMountSuite struct {
 
 var _ = check.Suite(&GitMountSuite{})
 
-func (s *GitMountSuite) SetUpSuite(c *check.C) {
-       git_client.InstallProtocol("https", git_http.NewClient(arvados.InsecureHTTPClient))
-}
-
 func (s *GitMountSuite) SetUpTest(c *check.C) {
-       port, err := ioutil.ReadFile("../../tmp/arv-git-httpd-ssl.port")
-       c.Assert(err, check.IsNil)
-       discoveryMap["gitUrl"] = "https://localhost:" + string(port)
+       s.useTestGitServer(c)
 
+       var err error
        s.tmpdir, err = ioutil.TempDir("", "")
        c.Assert(err, check.IsNil)
 }
@@ -47,7 +42,7 @@ func (s *GitMountSuite) TestextractTree(c *check.C) {
                UUID:   arvadostest.Repository2UUID,
                Commit: "fd3531f42995344f36c30b79f55f27b502f3d344",
        }
-       err := gm.extractTree(&ArvTestClient{}, s.tmpdir)
+       err := gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
        c.Check(err, check.IsNil)
 
        fnm := filepath.Join(s.tmpdir, "dir1/dir2/file with mode 0644")
@@ -78,11 +73,10 @@ func (s *GitMountSuite) TestextractTree(c *check.C) {
 // reachable in branch "crunch-run-non-tip-test".
 func (s *GitMountSuite) TestExtractNonTipCommit(c *check.C) {
        gm := gitMount{
-               Path:   "/",
                UUID:   arvadostest.Repository2UUID,
                Commit: "5ebfab0522851df01fec11ec55a6d0f4877b542e",
        }
-       err := gm.extractTree(&ArvTestClient{}, s.tmpdir)
+       err := gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
        c.Check(err, check.IsNil)
 
        fnm := filepath.Join(s.tmpdir, "file only on testbranch")
@@ -97,7 +91,7 @@ func (s *GitMountSuite) TestNonexistentRepository(c *check.C) {
                UUID:   "zzzzz-s0uqq-nonexistentrepo",
                Commit: "5ebfab0522851df01fec11ec55a6d0f4877b542e",
        }
-       err := gm.extractTree(&ArvTestClient{}, s.tmpdir)
+       err := gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
        c.Check(err, check.NotNil)
        c.Check(err, check.ErrorMatches, ".*repository not found.*")
 
@@ -110,13 +104,24 @@ func (s *GitMountSuite) TestNonexistentCommit(c *check.C) {
                UUID:   arvadostest.Repository2UUID,
                Commit: "bb66b6bb6b6bbb6b6b6b66b6b6b6b6b6b6b6b66b",
        }
-       err := gm.extractTree(&ArvTestClient{}, s.tmpdir)
+       err := gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
        c.Check(err, check.NotNil)
        c.Check(err, check.ErrorMatches, ".*object not found.*")
 
        s.checkTmpdirContents(c, []string{})
 }
 
+func (s *GitMountSuite) TestGitUrlDiscoveryFails(c *check.C) {
+       delete(discoveryMap, "gitUrl")
+       gm := gitMount{
+               Path:   "/",
+               UUID:   arvadostest.Repository2UUID,
+               Commit: "5ebfab0522851df01fec11ec55a6d0f4877b542e",
+       }
+       err := gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
+       c.Check(err, check.ErrorMatches, ".*gitUrl.*")
+}
+
 func (s *GitMountSuite) TestInvalid(c *check.C) {
        for _, trial := range []struct {
                gm      gitMount
@@ -128,7 +133,24 @@ func (s *GitMountSuite) TestInvalid(c *check.C) {
                                UUID:   arvadostest.Repository2UUID,
                                Commit: "abc123",
                        },
-                       matcher: ".*sha1.*",
+                       matcher: ".*SHA1.*",
+               },
+               {
+                       gm: gitMount{
+                               Path:           "/",
+                               UUID:           arvadostest.Repository2UUID,
+                               RepositoryName: arvadostest.Repository2Name,
+                               Commit:         "5ebfab0522851df01fec11ec55a6d0f4877b542e",
+                       },
+                       matcher: ".*repository_name.*",
+               },
+               {
+                       gm: gitMount{
+                               Path:   "/",
+                               GitURL: "https://localhost:0/" + arvadostest.Repository2Name + ".git",
+                               Commit: "5ebfab0522851df01fec11ec55a6d0f4877b542e",
+                       },
+                       matcher: ".*git_url.*",
                },
                {
                        gm: gitMount{
@@ -146,11 +168,11 @@ func (s *GitMountSuite) TestInvalid(c *check.C) {
                        matcher: ".*UUID.*",
                },
        } {
-               err := trial.gm.extractTree(&ArvTestClient{}, s.tmpdir)
+               err := trial.gm.extractTree(&ArvTestClient{}, s.tmpdir, arvadostest.ActiveToken)
                c.Check(err, check.NotNil)
                s.checkTmpdirContents(c, []string{})
 
-               err := trial.gm.validate()
+               err = trial.gm.validate()
                c.Check(err, check.ErrorMatches, trial.matcher)
        }
 }
@@ -162,3 +184,11 @@ func (s *GitMountSuite) checkTmpdirContents(c *check.C, expect []string) {
        c.Check(err, check.IsNil)
        c.Check(names, check.DeepEquals, expect)
 }
+
+func (*GitMountSuite) useTestGitServer(c *check.C) {
+       git_client.InstallProtocol("https", git_http.NewClient(arvados.InsecureHTTPClient))
+
+       port, err := ioutil.ReadFile("../../tmp/arv-git-httpd-ssl.port")
+       c.Assert(err, check.IsNil)
+       discoveryMap["gitUrl"] = "https://localhost:" + string(port)
+}