github.com/cs3org/reva/v2@v2.27.7/pkg/storage/utils/decomposedfs/upload/store_test.go (about) 1 package upload 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 userv1beta1 "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" 9 providerv1beta1 "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" 10 "github.com/cs3org/reva/v2/pkg/errtypes" 11 "github.com/cs3org/reva/v2/pkg/storage/cache" 12 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/aspects" 13 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/lookup" 14 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/metadata" 15 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/node" 16 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/options" 17 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/timemanager" 18 "github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree" 19 "github.com/rs/zerolog" 20 ) 21 22 // TestInitNewNode calls greetings.initNewNode 23 func TestInitNewNode(t *testing.T) { 24 log := &zerolog.Logger{} 25 root := t.TempDir() 26 27 lookup := lookup.New(metadata.NewMessagePackBackend(root, cache.Config{}), &options.Options{Root: root}, &timemanager.Manager{}) 28 tp := tree.New(lookup, nil, &options.Options{}, nil, log) 29 30 aspects := aspects.Aspects{ 31 Lookup: lookup, 32 Tree: tp, 33 } 34 store := NewSessionStore(nil, aspects, root, false, options.TokenOptions{}, log) 35 36 rootNode := node.New("e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "", "", 0, "", providerv1beta1.ResourceType_RESOURCE_TYPE_CONTAINER, &userv1beta1.UserId{}, lookup) 37 rootNode.Exists = true 38 rootNode.SpaceRoot = rootNode 39 40 err := os.MkdirAll(rootNode.InternalPath(), 0700) 41 if err != nil { 42 t.Fatal(err.Error()) 43 } 44 n := node.New("e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "930b7a2e-b745-41e1-8a9b-712582021842", "e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "newchild", 10, "26493c53-2634-45f8-949f-dc07b88df9b0", providerv1beta1.ResourceType_RESOURCE_TYPE_FILE, &userv1beta1.UserId{}, lookup) 45 n.SpaceRoot = rootNode 46 unlock, err := store.tp.InitNewNode(context.Background(), n, 10) 47 if err != nil { 48 t.Fatal(err.Error()) 49 } 50 defer func() { 51 _ = unlock() 52 }() 53 54 // try initializing the same new node again in case a concurrent requests tries to create a file with the same name 55 n = node.New("e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "a6ede986-cfcd-41c5-a820-6eee955a1c2b", "e48c4e7a-beac-4b82-b991-a5cff7b8c39c", "newchild", 10, "26493c53-2634-45f8-949f-dc07b88df9b0", providerv1beta1.ResourceType_RESOURCE_TYPE_FILE, &userv1beta1.UserId{}, lookup) 56 n.SpaceRoot = rootNode 57 unlock2, err := store.tp.InitNewNode(context.Background(), n, 10) 58 if _, ok := err.(errtypes.IsAlreadyExists); !ok { 59 t.Fatalf(`initNewNode(with same 'newchild' name), %v, want %v`, err, errtypes.AlreadyExists("newchild")) 60 } 61 _ = unlock2() 62 }