Fix more ineffassign warnings.
[arvados.git] / sdk / go / arvados / fs_site_test.go
index a8c369f45b7b4c99fcc4216f991f721e16f21ba2..80cc03df37b88ad82ad246db6d4d7bce68dd68a2 100644 (file)
@@ -6,21 +6,38 @@ package arvados
 
 import (
        "net/http"
+       "os"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvadostest"
        check "gopkg.in/check.v1"
 )
 
+const (
+       // Importing arvadostest would be an import cycle, so these
+       // fixtures are duplicated here [until fs moves to a separate
+       // package].
+       fixtureActiveToken             = "3kg6k6lzmp9kj5cpkcoxie963cmvjahbt2fod9zru30k1jqdmi"
+       fixtureAProjectUUID            = "zzzzz-j7d0g-v955i6s2oi1cbso"
+       fixtureFooAndBarFilesInDirUUID = "zzzzz-4zz18-foonbarfilesdir"
+       fixtureFooCollectionName       = "zzzzz-4zz18-fy296fx3hot09f7 added sometime"
+       fixtureFooCollectionPDH        = "1f4b0bc7583c2a7f9102c395f4ffc5e3+45"
+       fixtureFooCollection           = "zzzzz-4zz18-fy296fx3hot09f7"
+       fixtureNonexistentCollection   = "zzzzz-4zz18-totallynotexist"
+)
+
 var _ = check.Suite(&SiteFSSuite{})
 
 type SiteFSSuite struct {
        client *Client
-       fs     FileSystem
+       fs     CustomFileSystem
        kc     keepClient
 }
 
 func (s *SiteFSSuite) SetUpTest(c *check.C) {
-       s.client = NewClientFromEnv()
+       s.client = &Client{
+               APIHost:   os.Getenv("ARVADOS_API_HOST"),
+               AuthToken: fixtureActiveToken,
+               Insecure:  true,
+       }
        s.kc = &keepClientStub{
                blocks: map[string][]byte{
                        "3858f62230ac3c915f300c664312c63f": []byte("foobar"),
@@ -37,22 +54,60 @@ func (s *SiteFSSuite) TestByIDEmpty(c *check.C) {
        f, err := s.fs.Open("/by_id")
        c.Assert(err, check.IsNil)
        fis, err := f.Readdir(-1)
+       c.Check(err, check.IsNil)
        c.Check(len(fis), check.Equals, 0)
 }
 
-func (s *SiteFSSuite) TestByUUID(c *check.C) {
+func (s *SiteFSSuite) TestByUUIDAndPDH(c *check.C) {
        f, err := s.fs.Open("/by_id")
        c.Assert(err, check.IsNil)
        fis, err := f.Readdir(-1)
        c.Check(err, check.IsNil)
        c.Check(len(fis), check.Equals, 0)
 
-       f, err = s.fs.Open("/by_id/" + arvadostest.FooCollection)
+       err = s.fs.Mkdir("/by_id/"+fixtureFooCollection, 0755)
+       c.Check(err, check.Equals, os.ErrExist)
+
+       f, err = s.fs.Open("/by_id/" + fixtureNonexistentCollection)
+       c.Assert(err, check.Equals, os.ErrNotExist)
+
+       for _, path := range []string{
+               fixtureFooCollection,
+               fixtureFooCollectionPDH,
+               fixtureAProjectUUID + "/" + fixtureFooCollectionName,
+       } {
+               f, err = s.fs.Open("/by_id/" + path)
+               c.Assert(err, check.IsNil)
+               fis, err = f.Readdir(-1)
+               c.Assert(err, check.IsNil)
+               var names []string
+               for _, fi := range fis {
+                       names = append(names, fi.Name())
+               }
+               c.Check(names, check.DeepEquals, []string{"foo"})
+       }
+
+       f, err = s.fs.Open("/by_id/" + fixtureAProjectUUID + "/A Subproject/baz_file")
        c.Assert(err, check.IsNil)
        fis, err = f.Readdir(-1)
+       c.Assert(err, check.IsNil)
        var names []string
        for _, fi := range fis {
                names = append(names, fi.Name())
        }
-       c.Check(names, check.DeepEquals, []string{"foo"})
+       c.Check(names, check.DeepEquals, []string{"baz"})
+
+       _, err = s.fs.OpenFile("/by_id/"+fixtureNonexistentCollection, os.O_RDWR|os.O_CREATE, 0755)
+       c.Check(err, check.Equals, ErrInvalidOperation)
+       err = s.fs.Rename("/by_id/"+fixtureFooCollection, "/by_id/beep")
+       c.Check(err, check.Equals, ErrInvalidArgument)
+       err = s.fs.Rename("/by_id/"+fixtureFooCollection+"/foo", "/by_id/beep")
+       c.Check(err, check.Equals, ErrInvalidArgument)
+       _, err = s.fs.Stat("/by_id/beep")
+       c.Check(err, check.Equals, os.ErrNotExist)
+       err = s.fs.Rename("/by_id/"+fixtureFooCollection+"/foo", "/by_id/"+fixtureFooCollection+"/bar")
+       c.Check(err, check.IsNil)
+
+       err = s.fs.Rename("/by_id", "/beep")
+       c.Check(err, check.Equals, ErrInvalidArgument)
 }