public void File_Save_Is_Not_Lossy() { using (var conn = Mongo.Create(TestHelper.ConnectionString())) { var ms = new MemoryStream(8000000);//about 8MB. for (int i = 0; i < 2000000; i++) { ms.Write(BitConverter.GetBytes(i), 0, 4); } var gridFS = conn.Database.Files(); var file = new GridFile(); file.ContentType = "application/unknown"; file.FileName = "Random_File_Test" + Guid.NewGuid().ToString(); file.Aliases = new String[] { "Alpha", "Bravo", "Delta", "Echo" }; file.Content = ms.ToArray(); gridFS.Save(file); var file2 = gridFS.FindOne(new { _id = file.Id }); Assert.Equal(file.Id, file2.Id); Assert.Equal(file.MD5Checksum, file2.MD5Checksum); Assert.Equal(file.ContentType, file2.ContentType); //Mongo stores dates as long, therefore, we have to use double->long rounding. Assert.Equal((long)((file.UploadDate - DateTime.MinValue)).TotalMilliseconds, (long)(file2.UploadDate - DateTime.MinValue).TotalMilliseconds); Assert.True(file.Aliases.SequenceEqual(file2.Aliases)); Assert.True(file.Content.SequenceEqual(file2.Content)); } }
public void Save(GridFile file) { this.FileSummaries.Save(file); this.FileChunks.Delete(new { _id = file.Id }); if (file.CachedChunks.Any()) { this.FileChunks.Insert(file.CachedChunks); } }
public void Delete_Should_Remove_FileChunks() { using (var conn = Mongo.Create(TestHelper.ConnectionString())) { var ms = new MemoryStream(50000); for (int i = 0; i < 2000; i++) { ms.Write(BitConverter.GetBytes(i), 0, 4); } var gridFS = conn.Database.Files(); var file = new GridFile(); file.ContentType = "application/unknown"; file.FileName = "test.raw"; file.Content = ms.ToArray(); gridFS.Save(file); gridFS.Delete(file.Id); Assert.Equal(0, conn.Database.GetCollection<FileChunk>("chunks").GetCollectionStatistics().Count); } }
public void File_Delete_Works() { using (var conn = Mongo.Create(TestHelper.ConnectionString())) { var ms = new MemoryStream(50000); for (int i = 0; i < 2000; i++) { ms.Write(BitConverter.GetBytes(i), 0, 4); } var gridFS = conn.Database.Files(); var file = new GridFile(); file.ContentType = "application/unknown"; file.FileName = "Random_File_Test" + Guid.NewGuid().ToString(); file.Aliases = new String[] { "Alpha", "Bravo", "Delta", "Echo" }; file.Content = ms.ToArray(); gridFS.Save(file); var file2 = gridFS.FindOne(new { _id = file.Id }); Assert.NotNull(file2); gridFS.Delete(file2.Id); file2 = gridFS.FindOne(new { _id = file.Id }); Assert.Null(file2); } }
public void File_Save_Should_Replace_Old_Content() { using (var conn = Mongo.Create(TestHelper.ConnectionString())) { var gridFS = conn.Database.Files(); var file = new GridFile { ContentType = "application/unknown", FileName = "test.raw", Content = new byte[] { 1, 2, 3 } }; gridFS.Save(file); file.Content = new byte[] { 3, 2, 1 }; gridFS.Save(file); Assert.Equal(new byte[] { 3, 2, 1 }, gridFS.FindOne(new { _id = file.Id }).Content.ToArray()); } }