V10: fix build warnings in test projects (#12509)

* Run code cleanup

* Dotnet format benchmarks project

* Fix up Test.Common

* Run dotnet format + manual cleanup

* Run code cleanup for unit tests

* Run dotnet format

* Fix up errors

* Manual cleanup of Unit test project

* Update tests/Umbraco.Tests.Benchmarks/HexStringBenchmarks.cs

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>

* Update tests/Umbraco.Tests.Integration/Testing/TestDbMeta.cs

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>

* Update tests/Umbraco.Tests.Benchmarks/TypeFinderBenchmarks.cs

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>

* Update tests/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>

* Update tests/Umbraco.Tests.Integration/Umbraco.Core/Events/EventAggregatorTests.cs

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>

* Fix according to review

* Fix after merge

* Fix errors

Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Zeegaan <nge@umbraco.dk>
This commit is contained in:
Nikolaj Geisle
2022-06-21 08:09:38 +02:00
committed by GitHub
parent 29961d40a3
commit 7aeb400fce
599 changed files with 87303 additions and 86123 deletions

View File

@@ -1,7 +1,6 @@
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
@@ -17,470 +16,380 @@ using Umbraco.Cms.Web.BackOffice.Controllers;
using Umbraco.Cms.Web.Common.Formatters;
using Umbraco.Extensions;
namespace Umbraco.Cms.Tests.Integration.Umbraco.Web.BackOffice.Controllers
namespace Umbraco.Cms.Tests.Integration.Umbraco.Web.BackOffice.Controllers;
[TestFixture]
public class EntityControllerTests : UmbracoTestServerTestBase
{
[TestFixture]
public class EntityControllerTests : UmbracoTestServerTestBase
private IScopeProvider ScopeProvider => GetRequiredService<IScopeProvider>();
[Test]
public async Task GetUrlsByIds_MediaWithIntegerIds_ReturnsValidMap()
{
private IScopeProvider ScopeProvider => GetRequiredService<IScopeProvider>();
var mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
var mediaService = Services.GetRequiredService<IMediaService>();
[Test]
public async Task GetUrlsByIds_MediaWithIntegerIds_ReturnsValidMap()
var mediaItems = new List<Media>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
IMediaTypeService mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
IMediaService mediaService = Services.GetRequiredService<IMediaService>();
var mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
var mediaItems = new List<Media>();
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
using (ScopeProvider.CreateScope(autoComplete: true))
foreach (var media in mediaItems)
{
IMediaType mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
foreach (Media media in mediaItems)
{
mediaService.Save(media);
}
mediaService.Save(media);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Media
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
mediaItems[0].Id,
mediaItems[1].Id,
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<int, string> results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
[Test]
public async Task GetUrlsByIds_Media_ReturnsEmptyStringsInMapForUnknownItems()
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Media };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { mediaItems[0].Id, mediaItems[1].Id } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
Assert.Multiple(() =>
{
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Media
};
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
[Test]
public async Task GetUrlsByIds_Media_ReturnsEmptyStringsInMapForUnknownItems()
{
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Media };
var payload = new
{
ids = new[] { 1, 2 }
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
var payload = new { ids = new[] { 1, 2 } };
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
IDictionary<int, string> results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.That(results!.Keys.Count, Is.EqualTo(2));
Assert.AreEqual(results![payload.ids[0]], string.Empty);
});
}
var results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
[Test]
public async Task GetUrlsByIds_MediaWithGuidIds_ReturnsValidMap()
Assert.Multiple(() =>
{
IMediaTypeService mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
IMediaService mediaService = Services.GetRequiredService<IMediaService>();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.That(results!.Keys.Count, Is.EqualTo(2));
Assert.AreEqual(results![payload.ids[0]], string.Empty);
});
}
var mediaItems = new List<Media>();
[Test]
public async Task GetUrlsByIds_MediaWithGuidIds_ReturnsValidMap()
{
var mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
var mediaService = Services.GetRequiredService<IMediaService>();
using (ScopeProvider.CreateScope(autoComplete: true))
var mediaItems = new List<Media>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
var mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
foreach (var media in mediaItems)
{
IMediaType mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
foreach (Media media in mediaItems)
{
mediaService.Save(media);
}
mediaService.Save(media);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Media
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
mediaItems[0].Key.ToString(),
mediaItems[1].Key.ToString(),
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<string, string> results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
[Test]
public async Task GetUrlsByIds_MediaWithUdiIds_ReturnsValidMap()
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Media };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { mediaItems[0].Key.ToString(), mediaItems[1].Key.ToString() } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
IMediaTypeService mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
IMediaService mediaService = Services.GetRequiredService<IMediaService>();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
var mediaItems = new List<Media>();
[Test]
public async Task GetUrlsByIds_MediaWithUdiIds_ReturnsValidMap()
{
var mediaTypeService = Services.GetRequiredService<IMediaTypeService>();
var mediaService = Services.GetRequiredService<IMediaService>();
using (ScopeProvider.CreateScope(autoComplete: true))
var mediaItems = new List<Media>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
var mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
foreach (var media in mediaItems)
{
IMediaType mediaType = mediaTypeService.Get("image");
mediaTypeService.Save(mediaType);
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
mediaItems.Add(MediaBuilder.CreateMediaImage(mediaType, -1));
foreach (Media media in mediaItems)
{
mediaService.Save(media);
}
mediaService.Save(media);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Media
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
mediaItems[0].GetUdi().ToString(),
mediaItems[1].GetUdi().ToString(),
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<string, string> results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
[Test]
public async Task GetUrlsByIds_Documents_ReturnsHashesInMapForUnknownItems()
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Media };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { mediaItems[0].GetUdi().ToString(), mediaItems[1].GetUdi().ToString() } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Document
};
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/media"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/media"));
});
}
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
[Test]
public async Task GetUrlsByIds_Documents_ReturnsHashesInMapForUnknownItems()
{
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Document };
var payload = new
{
ids = new[] { 1, 2 }
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
var payload = new { ids = new[] { 1, 2 } };
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
IDictionary<int, string> results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.That(results!.Keys.Count, Is.EqualTo(2));
Assert.AreEqual(results![payload.ids[0]], "#");
});
}
var results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
[Test]
public async Task GetUrlsByIds_DocumentWithIntIds_ReturnsValidMap()
Assert.Multiple(() =>
{
IContentTypeService contentTypeService = Services.GetRequiredService<IContentTypeService>();
IContentService contentService = Services.GetRequiredService<IContentService>();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.That(results!.Keys.Count, Is.EqualTo(2));
Assert.AreEqual(results![payload.ids[0]], "#");
});
}
var contentItems = new List<IContent>();
[Test]
public async Task GetUrlsByIds_DocumentWithIntIds_ReturnsValidMap()
{
var contentTypeService = Services.GetRequiredService<IContentTypeService>();
var contentService = Services.GetRequiredService<IContentService>();
using (ScopeProvider.CreateScope(autoComplete: true))
var contentItems = new List<IContent>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
var builder = new ContentBuilder()
.WithContentType(contentType);
var root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (var content in contentItems)
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
ContentBuilder builder = new ContentBuilder()
.WithContentType(contentType);
Content root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (IContent content in contentItems)
{
contentService.SaveAndPublish(content);
}
contentService.SaveAndPublish(content);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Document
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
contentItems[0].Id,
contentItems[1].Id,
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<int, string> results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
[Test]
public async Task GetUrlsByIds_DocumentWithGuidIds_ReturnsValidMap()
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Document };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { contentItems[0].Id, contentItems[1].Id } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<int, string>>();
Assert.Multiple(() =>
{
IContentTypeService contentTypeService = Services.GetRequiredService<IContentTypeService>();
IContentService contentService = Services.GetRequiredService<IContentService>();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
var contentItems = new List<IContent>();
[Test]
public async Task GetUrlsByIds_DocumentWithGuidIds_ReturnsValidMap()
{
var contentTypeService = Services.GetRequiredService<IContentTypeService>();
var contentService = Services.GetRequiredService<IContentService>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
var contentItems = new List<IContent>();
ContentBuilder builder = new ContentBuilder()
.WithContentType(contentType);
Content root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (IContent content in contentItems)
{
contentService.SaveAndPublish(content);
}
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Document
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
contentItems[0].Key.ToString(),
contentItems[1].Key.ToString(),
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<string, string> results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
[Test]
public async Task GetUrlsByIds_DocumentWithUdiIds_ReturnsValidMap()
using (ScopeProvider.CreateScope(autoComplete: true))
{
IContentTypeService contentTypeService = Services.GetRequiredService<IContentTypeService>();
IContentService contentService = Services.GetRequiredService<IContentService>();
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
var contentItems = new List<IContent>();
var builder = new ContentBuilder()
.WithContentType(contentType);
using (ScopeProvider.CreateScope(autoComplete: true))
var root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (var content in contentItems)
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
ContentBuilder builder = new ContentBuilder()
.WithContentType(contentType);
Content root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (IContent content in contentItems)
{
contentService.SaveAndPublish(content);
}
contentService.SaveAndPublish(content);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Document
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new
{
ids = new[]
{
contentItems[0].GetUdi().ToString(),
contentItems[1].GetUdi().ToString(),
}
};
HttpResponseMessage response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
IDictionary<string, string> results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
[Test]
public async Task GetByIds_MultipleCalls_WorksAsExpected()
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Document };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { contentItems[0].Key.ToString(), contentItems[1].Key.ToString() } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
IContentTypeService contentTypeService = Services.GetRequiredService<IContentTypeService>();
IContentService contentService = Services.GetRequiredService<IContentService>();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
var contentItems = new List<IContent>();
[Test]
public async Task GetUrlsByIds_DocumentWithUdiIds_ReturnsValidMap()
{
var contentTypeService = Services.GetRequiredService<IContentTypeService>();
var contentService = Services.GetRequiredService<IContentService>();
using (ScopeProvider.CreateScope(autoComplete: true))
var contentItems = new List<IContent>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
var builder = new ContentBuilder()
.WithContentType(contentType);
var root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (var content in contentItems)
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
ContentBuilder builder = new ContentBuilder()
.WithContentType(contentType);
Content root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (IContent content in contentItems)
{
contentService.SaveAndPublish(content);
}
contentService.SaveAndPublish(content);
}
var queryParameters = new Dictionary<string, object>
{
["type"] = Constants.UdiEntityType.Document
};
var url = LinkGenerator.GetUmbracoControllerUrl("GetByIds", typeof(EntityController), queryParameters);
var udiPayload = new
{
ids = new[]
{
contentItems[0].GetUdi().ToString(),
contentItems[1].GetUdi().ToString(),
}
};
var intPayload = new
{
ids = new[]
{
contentItems[0].Id,
contentItems[1].Id,
}
};
HttpResponseMessage udiResponse = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, udiPayload);
HttpResponseMessage intResponse = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, intPayload);
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, udiResponse.StatusCode, "First request error");
Assert.AreEqual(HttpStatusCode.OK, intResponse.StatusCode, "Second request error");
});
}
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Document };
var url = LinkGenerator.GetUmbracoControllerUrl("GetUrlsByIds", typeof(EntityController), queryParameters);
var payload = new { ids = new[] { contentItems[0].GetUdi().ToString(), contentItems[1].GetUdi().ToString() } };
var response = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, payload);
// skip pointless un-parseable cruft.
(await response.Content.ReadAsStreamAsync()).Seek(AngularJsonMediaTypeFormatter.XsrfPrefix.Length, SeekOrigin.Begin);
var results = await response.Content.ReadFromJsonAsync<IDictionary<string, string>>();
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
Assert.IsTrue(results![payload.ids[0]].StartsWith("/bar"));
Assert.IsTrue(results![payload.ids[1]].StartsWith("/baz"));
});
}
[Test]
public async Task GetByIds_MultipleCalls_WorksAsExpected()
{
var contentTypeService = Services.GetRequiredService<IContentTypeService>();
var contentService = Services.GetRequiredService<IContentService>();
var contentItems = new List<IContent>();
using (ScopeProvider.CreateScope(autoComplete: true))
{
IContentType contentType = ContentTypeBuilder.CreateBasicContentType();
contentTypeService.Save(contentType);
var builder = new ContentBuilder()
.WithContentType(contentType);
var root = builder.WithName("foo").Build();
contentService.SaveAndPublish(root);
contentItems.Add(builder.WithParent(root).WithName("bar").Build());
contentItems.Add(builder.WithParent(root).WithName("baz").Build());
foreach (var content in contentItems)
{
contentService.SaveAndPublish(content);
}
}
var queryParameters = new Dictionary<string, object> { ["type"] = Constants.UdiEntityType.Document };
var url = LinkGenerator.GetUmbracoControllerUrl("GetByIds", typeof(EntityController), queryParameters);
var udiPayload = new { ids = new[] { contentItems[0].GetUdi().ToString(), contentItems[1].GetUdi().ToString() } };
var intPayload = new { ids = new[] { contentItems[0].Id, contentItems[1].Id } };
var udiResponse = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, udiPayload);
var intResponse = await HttpClientJsonExtensions.PostAsJsonAsync(Client, url, intPayload);
Assert.Multiple(() =>
{
Assert.AreEqual(HttpStatusCode.OK, udiResponse.StatusCode, "First request error");
Assert.AreEqual(HttpStatusCode.OK, intResponse.StatusCode, "Second request error");
});
}
}