using MongoDB.Entities; using PrivaPub.Infrastructure.Data.Migrations; using PrivaPub.Models.Post; using PrivaPub.Tests.Support; namespace PrivaPub.Tests.Infrastructure { [Trait("Category", "Integration")] public class MigrationTests { [Fact] public async Task Stored_remote_content_is_sanitized_and_local_content_rendered() { Assert.SkipUnless(MongoFixture.Enabled, MongoFixture.Skip); var token = TestContext.Current.CancellationToken; var remote = new Post { IsFederatedCopy = true, Text = "

hi

", ObjectURI = $"https://r.example/{Guid.NewGuid():N}" }; var local = new Post { Text = "**bold** raw", ObjectURI = $"https://privapub.test/{Guid.NewGuid():N}" }; await DB.Default.SaveAsync(new[] { remote, local }, token); await new _002_sanitize_stored_content().UpgradeAsync(); var migratedRemote = await DB.Default.Find().OneAsync(remote.ID, token); var migratedLocal = await DB.Default.Find().OneAsync(local.ID, token); Assert.Equal("

hi

", migratedRemote.Text); Assert.Equal("

hi

", migratedRemote.ContentHtml); Assert.Equal(ContentFormat.Html, migratedRemote.ContentFormat); Assert.Equal("**bold** raw", migratedLocal.Text); Assert.Equal("

bold <b>raw</b>

", migratedLocal.ContentHtml); Assert.Equal(ContentFormat.Markdown, migratedLocal.ContentFormat); } } }