public async Task CorrectlyReplacesRegistrationBaseUrlsInSecondaryStorage()
        {
            // Arrange
            var storageToReplay = Registrations.CreateTestRegistrations();
            var storage1        = new MemoryStorage(storageToReplay.BaseAddress);
            var storage2        = new MemoryStorage(new Uri("http://tempuri.org/secondone"));
            var storage3        = new MemoryStorage(new Uri("http://tempuri.org/thirdone"));

            var secondaryStorageBaseUrlRewriter = new SecondaryStorageBaseUrlRewriter(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>(storage1.BaseAddress.ToString(), storage2.BaseAddress.ToString()),
                new KeyValuePair <string, string>(storage1.BaseAddress.ToString(), storage3.BaseAddress.ToString())
            });

            var aggregateStorageFactory = CreateWithInterceptor(secondaryStorageBaseUrlRewriter.Rewrite, storage1, storage2, storage3);
            var aggregateStorage        = aggregateStorageFactory.Create();

            var storage1BaseAddress = storage1.BaseAddress.ToString();
            var storage2BaseAddress = storage2.BaseAddress.ToString();
            var storage3BaseAddress = storage3.BaseAddress.ToString();

            // Act
            foreach (var content in storageToReplay.Content)
            {
                await aggregateStorage.SaveAsync(content.Key, content.Value, CancellationToken.None);
            }

            // Assert
            Assert.Equal(storageToReplay.Content.Count, storage1.Content.Count);
            Assert.Equal(storageToReplay.Content.Count, storage2.Content.Count);
            Assert.Equal(storageToReplay.Content.Count, storage3.Content.Count);

            foreach (var content in storage1.Content)
            {
                AssertContentDoesNotContain(content.Value, storage1BaseAddress);
                AssertContentDoesNotContain(content.Value, storage2BaseAddress);
                AssertContentDoesNotContain(content.Value, storage3BaseAddress);
            }

            foreach (var content in storage2.Content)
            {
                AssertContentDoesNotContain(content.Value, storage1BaseAddress);
                AssertContentDoesNotContain(content.Value, storage2BaseAddress);
                AssertContentDoesNotContain(content.Value, storage3BaseAddress);
            }

            foreach (var content in storage3.Content)
            {
                AssertContentDoesNotContain(content.Value, storage1BaseAddress);
                AssertContentDoesNotContain(content.Value, storage2BaseAddress);
                AssertContentDoesNotContain(content.Value, storage3BaseAddress);
            }
        }