Skip to content

Commit

Permalink
use drive id in api calls
Browse files Browse the repository at this point in the history
  • Loading branch information
jstaf committed Jul 4, 2022
1 parent 21a5396 commit 6b4b0e1
Show file tree
Hide file tree
Showing 18 changed files with 183 additions and 111 deletions.
2 changes: 1 addition & 1 deletion cmd/onedriver/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ func xdgVolumeInfo(filesystem *fs.Filesystem, auth *graph.Auth) {
// just upload directly and shove it in the cache
// (since the fs isn't mounted yet)
resp, err := graph.Put(
graph.ResourcePath("/.xdg-volume-info")+":/content",
graph.ResourcePath(graph.Me, "/.xdg-volume-info")+":/content",
auth,
strings.NewReader(xdgVolumeInfo),
)
Expand Down
8 changes: 4 additions & 4 deletions fs/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,15 @@ func NewFilesystem(auth *graph.Auth, dbpath string) *Filesystem {
opendirs: make(map[uint64][]*Inode),
}

rootItem, err := graph.GetItem("me", "root", auth)
rootItem, err := graph.GetItem(graph.Me, graph.Root, auth)
root := NewInodeDriveItem(rootItem)
if err != nil {
if graph.IsOffline(err) {
// no network, load from db if possible and go to read-only state
fs.Lock()
fs.offline = true
fs.Unlock()
if root = fs.GetID("root"); root == nil {
if root = fs.GetID(graph.Root); root == nil {
log.Fatal().Msg(
"We are offline and could not fetch the filesystem root item from disk.",
)
Expand Down Expand Up @@ -105,7 +105,7 @@ func NewFilesystem(auth *graph.Auth, dbpath string) *Filesystem {
// does not exist
trash := fmt.Sprintf(".Trash-%d", os.Getuid())
if child, _ := fs.GetChild(fs.root, trash, auth); child == nil {
item, err := graph.Mkdir(trash, "me", fs.root, auth)
item, err := graph.Mkdir(trash, graph.Me, fs.root, auth)
if err != nil {
log.Error().Err(err).
Msg("Could not create trash folder. " +
Expand Down Expand Up @@ -301,7 +301,7 @@ func (f *Filesystem) GetChildrenID(id string, auth *graph.Auth) (map[string]*Ino
inode.RUnlock()

// We haven't fetched the children for this item yet, get them from the server.
fetched, err := graph.GetItemChildren(id, auth)
fetched, err := graph.GetItemChildren(inode.DriveID(), id, auth)
if err != nil {
if graph.IsOffline(err) {
log.Warn().Str("id", id).
Expand Down
38 changes: 24 additions & 14 deletions fs/delta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ func (i *Inode) setContent(newContent []byte) {
// the cache picks it up post-creation.
func TestDeltaMkdir(t *testing.T) {
t.Parallel()
parent, err := graph.GetItemPath("/onedriver_tests/delta", auth)
parent, err := graph.GetItemPath(graph.Me, "/onedriver_tests/delta", auth)
require.NoError(t, err)

// create the directory directly through the API and bypass the cache
_, err = graph.Mkdir("first", parent.ID, auth)
_, err = graph.Mkdir("first", graph.Me, parent.ID, auth)
require.NoError(t, err)
fname := filepath.Join(DeltaDir, "first")

Expand All @@ -66,9 +66,9 @@ func TestDeltaRmdir(t *testing.T) {
fname := filepath.Join(DeltaDir, "delete_me")
require.NoError(t, os.Mkdir(fname, 0755))

item, err := graph.GetItemPath("/onedriver_tests/delta/delete_me", auth)
item, err := graph.GetItemPath(graph.Me, "/onedriver_tests/delta/delete_me", auth)
require.NoError(t, err)
require.NoError(t, graph.Remove(item.ID, auth))
require.NoError(t, graph.Remove(graph.Me, item.ID, auth))

// wait for delta sync
assert.Eventually(t, func() bool {
Expand All @@ -90,12 +90,17 @@ func TestDeltaRename(t *testing.T) {
var item *graph.DriveItem
var err error
require.Eventually(t, func() bool {
item, err = graph.GetItemPath("/onedriver_tests/delta/delta_rename_start", auth)
item, err = graph.GetItemPath(graph.Me, "/onedriver_tests/delta/delta_rename_start", auth)
return err == nil
}, 10*time.Second, time.Second, "Could not prepare /onedriver_test/delta/delta_rename_start")
inode := NewInodeDriveItem(item)

require.NoError(t, graph.Rename(inode.ID(), "delta_rename_end", inode.ParentID(), auth))
require.NoError(t, graph.Rename(
graph.Me, inode.ID(),
"delta_rename_end",
graph.Me, inode.ParentID(),
auth,
))
fpath := filepath.Join(DeltaDir, "delta_rename_end")
assert.Eventually(t, func() bool {
if _, err := os.Stat(fpath); err == nil {
Expand All @@ -121,14 +126,19 @@ func TestDeltaMoveParent(t *testing.T) {
var item *graph.DriveItem
var err error
require.Eventually(t, func() bool {
item, err = graph.GetItemPath("/onedriver_tests/delta/delta_move_start", auth)
item, err = graph.GetItemPath(graph.Me, "/onedriver_tests/delta/delta_move_start", auth)
return err == nil
}, 10*time.Second, time.Second)

newParent, err := graph.GetItemPath("/onedriver_tests/", auth)
newParent, err := graph.GetItemPath(graph.Me, "/onedriver_tests/", auth)
require.NoError(t, err)

require.NoError(t, graph.Rename(item.ID, "delta_rename_end", newParent.ID, auth))
require.NoError(t, graph.Rename(
graph.Me, item.ID,
"delta_rename_end",
graph.Me, newParent.ID,
auth,
))
fpath := filepath.Join(TestDir, "delta_rename_end")
assert.Eventually(t, func() bool {
if _, err := os.Stat(fpath); err == nil {
Expand All @@ -152,7 +162,7 @@ func TestDeltaContentChangeRemote(t *testing.T) {

// change and upload it via the API
time.Sleep(time.Second * 10)
item, err := graph.GetItemPath("/onedriver_tests/delta/remote_content", auth)
item, err := graph.GetItemPath(graph.Me, "/onedriver_tests/delta/remote_content", auth)
inode := NewInodeDriveItem(item)
require.NoError(t, err)
newContent := []byte("because it has been changed remotely!")
Expand All @@ -162,7 +172,7 @@ func TestDeltaContentChangeRemote(t *testing.T) {
require.NoError(t, session.Upload(auth))

time.Sleep(time.Second * 10)
body, _ := graph.GetItemContent(inode.ID(), auth)
body, _ := graph.GetItemContent(graph.Me, inode.ID(), auth)
if !bytes.Equal(body, newContent) {
t.Fatalf("Failed to upload test file. Remote content: \"%s\"", body)
}
Expand Down Expand Up @@ -253,7 +263,7 @@ func TestDeltaBadContentInCache(t *testing.T) {
))
var id string
require.Eventually(t, func() bool {
item, err := graph.GetItemPath("/onedriver_tests/delta/corrupted", auth)
item, err := graph.GetItemPath(graph.Me, "/onedriver_tests/delta/corrupted", auth)
if err == nil {
id = item.ID
return true
Expand All @@ -275,9 +285,9 @@ func TestDeltaBadContentInCache(t *testing.T) {
func TestDeltaFolderDeletion(t *testing.T) {
t.Parallel()
require.NoError(t, os.MkdirAll(filepath.Join(DeltaDir, "nested/directory"), 0755))
nested, err := graph.GetItemPath("/onedriver_tests/delta/nested", auth)
nested, err := graph.GetItemPath(graph.Me, "/onedriver_tests/delta/nested", auth)
require.NoError(t, err)
require.NoError(t, graph.Remove(nested.ID, auth))
require.NoError(t, graph.Remove(graph.Me, nested.ID, auth))

// now poll and wait for deletion
assert.Eventually(t, func() bool {
Expand Down

0 comments on commit 6b4b0e1

Please sign in to comment.