public async Task ApplyChangesCoreDeletesFilesForDeltasThatHaveBeenDeleted() { // Arrange var helper = CreateDropboxHelper(); var fileDeltaInfo = new DropboxEntryInfo { Path = "foo/bar.txt", IsDeleted = true }; var dirDeltaInfo = new DropboxEntryInfo { Path = "foo/baz/", IsDeleted = true, IsDirectory = true }; var deployInfo = new DropboxDeployInfo { Path = "foo" }; deployInfo.Deltas.AddRange(new [] { fileDeltaInfo, dirDeltaInfo }); string filePath = Path.Combine(helper.Environment.RepositoryPath, "bar.txt"), dirPath = Path.Combine(helper.Environment.RepositoryPath, "baz"); File.WriteAllBytes(filePath, new byte[0]); Directory.CreateDirectory(dirPath); // Act await helper.ApplyChangesCore(deployInfo, useOAuth20 : false); // Assert Assert.False(File.Exists(filePath)); Assert.False(Directory.Exists(dirPath)); }
public async Task ApplyChangesCoreCreatesDirectoriesForDirectoryDeltas() { // Arrange var helper = CreateDropboxHelper(); var dirDeltaInfo = new DropboxEntryInfo { Path = "foo/qux/", IsDirectory = true }; var deployInfo = new DropboxDeployInfo { Path = "foo" }; deployInfo.Deltas.Add(dirDeltaInfo); string dirPath = Path.Combine(helper.Environment.RepositoryPath, "qux"); // Act await helper.ApplyChangesCore(deployInfo, useOAuth20 : false); // Assert Assert.True(Directory.Exists(dirPath)); }
internal DropboxDeployInfo GetDeployInfo(string path, OAuthInfo oauth, AccountInfo account, string cursor = null) { List <DropboxEntryInfo> deltas = new List <DropboxEntryInfo>(); string timeStamp = GetUtcTimeStamp(); string oldCursor = cursor; string newCursor = ""; while (true) { DeltaInfo delta = GetDeltaInfo(oauth, cursor); newCursor = delta.cursor; if (newCursor == oldCursor) { break; } foreach (EntryInfo info in delta.entries) { DropboxEntryInfo item = new DropboxEntryInfo(); if (info.metadata != null && !info.metadata.path.StartsWith(path)) { continue; } if (info.metadata == null || info.metadata.is_deleted || string.IsNullOrEmpty(info.metadata.path)) { item.Path = info.path; item.IsDeleted = true; } else { item.Path = info.metadata.path; item.IsDirectory = info.metadata.is_dir; if (!item.IsDirectory) { item.Modified = info.metadata.modified; item.Nonce = GetNonce(); item.Signature = GetSignature(oauth, info.path, timeStamp, item.Nonce); } } deltas.Add(item); } if (!delta.has_more) { break; } cursor = newCursor; } if (deltas.Count == 0) { throw new InvalidOperationException("the repo is up-to-date."); } var deployInfo = new DropboxDeployInfo { TimeStamp = timeStamp, Token = oauth.Token, ConsumerKey = oauth.ConsumerKey, OAuthVersion = "1.0", SignatureMethod = "HMAC-SHA1", OldCursor = oldCursor, NewCursor = newCursor, Path = path, UserName = account.display_name, Email = account.email, }; deployInfo.Deltas.AddRange(deltas); return(deployInfo); }
public async Task ApplyChangesCoreDeletesFilesForDeltasThatHaveBeenDeleted() { // Arrange var helper = CreateDropboxHelper(); var fileDeltaInfo = new DropboxEntryInfo { Path = "foo/bar.txt", IsDeleted = true }; var dirDeltaInfo = new DropboxEntryInfo { Path = "foo/baz/", IsDeleted = true, IsDirectory = true }; var deployInfo = new DropboxDeployInfo { Path = "foo" }; deployInfo.Deltas.AddRange(new [] { fileDeltaInfo, dirDeltaInfo }); string filePath = Path.Combine(helper.Environment.RepositoryPath, "bar.txt"), dirPath = Path.Combine(helper.Environment.RepositoryPath, "baz"); File.WriteAllBytes(filePath, new byte[0]); Directory.CreateDirectory(dirPath); // Act await helper.ApplyChangesCore(deployInfo, useOAuth20: false); // Assert Assert.False(File.Exists(filePath)); Assert.False(Directory.Exists(dirPath)); }
public async Task ApplyChangesCoreCreatesDirectoriesForDirectoryDeltas() { // Arrange var helper = CreateDropboxHelper(); var dirDeltaInfo = new DropboxEntryInfo { Path = "foo/qux/", IsDirectory = true }; var deployInfo = new DropboxDeployInfo { Path = "foo" }; deployInfo.Deltas.Add(dirDeltaInfo); string dirPath = Path.Combine(helper.Environment.RepositoryPath, "qux"); // Act await helper.ApplyChangesCore(deployInfo, useOAuth20: false); // Assert Assert.True(Directory.Exists(dirPath)); }