示例#1
0
        public void TestNullAliasesAndContentType()
        {
            _database.GridFS.Files.RemoveAll();
            _database.GridFS.Chunks.RemoveAll();

            var text = "Hello World";
            var bytes = Encoding.UTF8.GetBytes(text);
            var stream = new MemoryStream(bytes);
            var fileInfo = _database.GridFS.Upload(stream, null); // test no filename!
            Assert.IsNull(fileInfo.Aliases);
            Assert.IsNull(fileInfo.ContentType);
            Assert.IsNull(fileInfo.Metadata);
            Assert.IsNull(fileInfo.Name);

            var query = Query.EQ("_id", fileInfo.Id);
            var files = _database.GridFS.Files.FindOne(query);
            Assert.IsFalse(files.Contains("aliases"));
            Assert.IsFalse(files.Contains("contentType"));
            Assert.IsFalse(files.Contains("filename"));
            Assert.IsFalse(files.Contains("metadata"));

            // simulate null values as stored by other drivers
            var update = Update
                .Set("aliases", BsonNull.Value)
                .Set("contentType", BsonNull.Value)
                .Set("filename", BsonNull.Value)
                .Set("metadata", BsonNull.Value);
            _database.GridFS.Files.Update(query, update);

            var fileInfo2 = _database.GridFS.FindOne(query);
            Assert.IsNull(fileInfo2.Aliases);
            Assert.IsNull(fileInfo2.ContentType);
            Assert.IsNull(fileInfo2.Metadata);
            Assert.IsNull(fileInfo2.Name);

            // test that non-null values still work
            var aliases = new[] { "a", "b", "c" };
            var contentType = "text/plain";
            var metadata = new BsonDocument { { "x", 1 }, { "y", 2 } };
            var name = "HelloWorld.txt";
            _database.GridFS.SetAliases(fileInfo, aliases);
            _database.GridFS.SetContentType(fileInfo, contentType);
            _database.GridFS.SetMetadata(fileInfo, metadata);
            fileInfo.MoveTo(name);

            var fileInfo3 = _database.GridFS.FindOne(query);
            Assert.IsTrue(aliases.SequenceEqual(fileInfo3.Aliases));
            Assert.AreEqual(contentType, fileInfo3.ContentType);
            Assert.AreEqual(metadata, fileInfo3.Metadata);
            Assert.AreEqual(name, fileInfo3.Name);
        }