Beispiel #1
0
        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");
            }
        }