13996: Can now use database info from config.yml
[arvados.git] / services / keep-web / cadaver_test.go
index 0fc6e47ba312f27893bf3af73e83248accb3078e..44d0b0ffefa743dc931eb448bcadce510e5abf92 100644 (file)
@@ -53,6 +53,8 @@ func (s *IntegrationSuite) TestCadaverUserProject(c *check.C) {
 }
 
 func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc func(arvados.Collection) (string, string, string), skip func(string) bool) {
+       s.testServer.Config.AnonymousTokens = []string{arvadostest.AnonymousToken}
+
        testdata := []byte("the human tragedy consists in the necessity of living with the consequences of actions performed under the pressure of compulsions we do not understand")
 
        tempdir, err := ioutil.TempDir("", "keep-web-test-")
@@ -72,7 +74,7 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun
        var newCollection arvados.Collection
        arv := arvados.NewClientFromEnv()
        arv.AuthToken = arvadostest.ActiveToken
-       err = arv.RequestAndDecode(&newCollection, "POST", "/arvados/v1/collections", bytes.NewBufferString(url.Values{"collection": {"{}"}}.Encode()), nil)
+       err = arv.RequestAndDecode(&newCollection, "POST", "arvados/v1/collections", bytes.NewBufferString(url.Values{"collection": {"{}"}}.Encode()), nil)
        c.Assert(err, check.IsNil)
 
        readPath, writePath, pdhPath := pathFunc(newCollection)
@@ -143,6 +145,16 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun
                        cmd:   "move testfile newdir0/\n",
                        match: `(?ms).*Moving .* failed.*`,
                },
+               {
+                       path:  writePath,
+                       cmd:   "lock newdir0/testfile\n",
+                       match: `(?ms).*Locking .* succeeded.*`,
+               },
+               {
+                       path:  writePath,
+                       cmd:   "unlock newdir0/testfile\nasdf\n",
+                       match: `(?ms).*Unlocking .* succeeded.*`,
+               },
                {
                        path:  writePath,
                        cmd:   "ls\n",
@@ -158,6 +170,16 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun
                        cmd:   "mkcol newdir1\n",
                        match: `(?ms).*Creating .* succeeded.*`,
                },
+               {
+                       path:  writePath,
+                       cmd:   "move newdir1/ newdir1x/\n",
+                       match: `(?ms).*Moving .* succeeded.*`,
+               },
+               {
+                       path:  writePath,
+                       cmd:   "move newdir1x newdir1\n",
+                       match: `(?ms).*Moving .* succeeded.*`,
+               },
                {
                        path:  writePath,
                        cmd:   "move newdir0/testfile newdir1/\n",
@@ -241,6 +263,11 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun
                        cmd:   "delete foo\n",
                        match: `(?ms).*Deleting .* failed:.*405 Method Not Allowed.*`,
                },
+               {
+                       path:  pdhPath,
+                       cmd:   "lock foo\n",
+                       match: `(?ms).*Locking .* failed:.*405 Method Not Allowed.*`,
+               },
        } {
                c.Logf("%s %+v", "http://"+s.testServer.Addr, trial)
                if skip != nil && skip(trial.path) {
@@ -265,7 +292,28 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun
        }
 }
 
+func (s *IntegrationSuite) TestCadaverByID(c *check.C) {
+       for _, path := range []string{"/by_id", "/by_id/"} {
+               stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls")
+               c.Check(stdout, check.Matches, `(?ms).*collection is empty.*`)
+       }
+       for _, path := range []string{
+               "/by_id/" + arvadostest.FooPdh,
+               "/by_id/" + arvadostest.FooPdh + "/",
+               "/by_id/" + arvadostest.FooCollection,
+               "/by_id/" + arvadostest.FooCollection + "/",
+       } {
+               stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls")
+               c.Check(stdout, check.Matches, `(?ms).*\s+foo\s+3 .*`)
+       }
+}
+
 func (s *IntegrationSuite) TestCadaverUsersDir(c *check.C) {
+       for _, path := range []string{"/"} {
+               stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls")
+               c.Check(stdout, check.Matches, `(?ms).*Coll:\s+by_id\s+0 .*`)
+               c.Check(stdout, check.Matches, `(?ms).*Coll:\s+users\s+0 .*`)
+       }
        for _, path := range []string{"/users", "/users/"} {
                stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls")
                c.Check(stdout, check.Matches, `(?ms).*Coll:\s+active.*`)