public async Task Attachments_with_ids_that_contain_backslash_should_be_readable() { using (var store = InMemoryStoreBuilder.GetInMemoryStore()) { var bodyStore = new RavenAttachmentsBodyStorage { DocumentStore = store }; var messageId = "messagebodies/3f0240a7-9b2e-4e2a-ab39-6114932adad1\\2055783"; var contentType = "NotImportant"; var body = new byte[] { 1, 2, 3 }; await bodyStore.Store(messageId, contentType, body.Length, new MemoryStream(body)); var retrieved = await bodyStore.TryFetch(messageId); Assert.True(retrieved.HasResult); Assert.AreEqual(contentType, retrieved.ContentType); var buffer = new byte[retrieved.BodySize]; retrieved.Stream.Read(buffer, 0, retrieved.BodySize); Assert.AreEqual(body, buffer); } }
public async Task Stored_bodies_are_being_removed_when_message_expires() { using (var documentStore = InMemoryStoreBuilder.GetInMemoryStore()) { var expiredDate = DateTime.UtcNow.AddDays(-3); var thresholdDate = DateTime.UtcNow.AddDays(-2); // Store expired message with associated body var messageId = "21"; var processedMessage = new ProcessedMessage { Id = "1", ProcessedAt = expiredDate, MessageMetadata = new Dictionary <string, object> { { "MessageId", messageId } } }; using (var session = documentStore.OpenSession()) { session.Store(processedMessage); session.SaveChanges(); } var body = new byte[] { 1, 2, 3, 4, 5 }; var bodyStorage = new RavenAttachmentsBodyStorage { DocumentStore = documentStore }; using (var stream = new MemoryStream(body)) { await bodyStorage.Store(messageId, "binary", 5, stream); } RunExpiry(documentStore, thresholdDate); // Verify message expired using (var session = documentStore.OpenSession()) { Assert.Null(session.Load <ProcessedMessage>(processedMessage.Id)); } // Verify body expired Assert.False((await bodyStorage.TryFetch(messageId)).HasResult, "Audit document body should be deleted"); } }