diff options
author | crupest <crupest@outlook.com> | 2021-02-12 16:42:56 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-02-12 16:42:56 +0800 |
commit | e407b645aa7c6738c6f37c69f616c91c99bf1af0 (patch) | |
tree | 1133f585e91fd3b8419c24b39ba44bc4042a7709 /BackEnd | |
parent | 58595b5c6462add8224904c833adc9eb9d64bb8b (diff) | |
download | timeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.tar.gz timeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.tar.bz2 timeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.zip |
...
Diffstat (limited to 'BackEnd')
-rw-r--r-- | BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs | 171 | ||||
-rw-r--r-- | BackEnd/Timeline/Controllers/TimelinePostController.cs | 4 |
2 files changed, 59 insertions, 116 deletions
diff --git a/BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs index 08f88dfc..0f264774 100644 --- a/BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs +++ b/BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs @@ -345,114 +345,74 @@ namespace Timeline.Tests.IntegratedTests post3.Color.Should().Be("#aabbcc");
}
- [Theory]
- [MemberData(nameof(TimelineNameGeneratorTestData))]
- public async Task CreatePost_InvalidModel(TimelineNameGenerator generator)
+ public static IEnumerable<object?[]> CreatePost_InvalidModelTest_TestData()
{
- using var client = await CreateClientAsUser();
-
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest { DataList = null! }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest { DataList = new List<HttpTimelinePostCreateRequestData>() }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
- {
- DataList = Enumerable.Repeat(new HttpTimelinePostCreateRequestData
+ var testDataList = new List<List<HttpTimelinePostCreateRequestData>?>()
+ {
+ null,
+ new List<HttpTimelinePostCreateRequestData>(),
+ Enumerable.Repeat<HttpTimelinePostCreateRequestData>(new HttpTimelinePostCreateRequestData
{
ContentType = "text/plain",
Data = Convert.ToBase64String(Encoding.UTF8.GetBytes("a"))
- }, 200).ToList()
- }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
+ }, 200).ToList(),
+ };
+
+ var testData = new List<HttpTimelinePostCreateRequestData?>()
+ {
+ null,
+ new HttpTimelinePostCreateRequestData
{
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = null!,
- Data = Convert.ToBase64String(Encoding.UTF8.GetBytes("a"))
- }
- }
- }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
+ ContentType = null!,
+ Data = Convert.ToBase64String(Encoding.UTF8.GetBytes("a"))
+ },
+ new HttpTimelinePostCreateRequestData
{
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "text/plain",
- Data = null!
- }
- }
- }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
+ ContentType = "text/plain",
+ Data = null!
+ },
+ new HttpTimelinePostCreateRequestData
{
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "text/xxxxxxx",
- Data = Convert.ToBase64String(Encoding.UTF8.GetBytes("a"))
- }
- }
- }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
+ ContentType = "text/xxxxxxx",
+ Data = Convert.ToBase64String(Encoding.UTF8.GetBytes("a"))
+ },
+ new HttpTimelinePostCreateRequestData
{
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "text/plain",
- Data = "aaa"
- }
- }
+ ContentType = "text/plain",
+ Data = "aaa"
+ },
+ new HttpTimelinePostCreateRequestData
+ {
+ ContentType = "text/plain",
+ Data = Convert.ToBase64String(new byte[] {0xE4, 0x1, 0xA0})
+ },
+ new HttpTimelinePostCreateRequestData
+ {
+ ContentType = "image/jpeg",
+ Data = Convert.ToBase64String(ImageHelper.CreatePngWithSize(100, 100))
+ },
+ new HttpTimelinePostCreateRequestData
+ {
+ ContentType = "image/jpeg",
+ Data = Convert.ToBase64String(new byte[] { 100, 200 })
}
- );
- }
- [Theory]
- [MemberData(nameof(TimelineNameGeneratorTestData))]
- public async Task CreatePost_InvalidModel_NonUtf8(TimelineNameGenerator generator)
- {
- using var client = await CreateClientAsUser();
+ };
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
- {
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "text/plain",
- Data = Convert.ToBase64String(new byte[] {0xE4, 0x1, 0xA0})
- }
- }
- }
- );
+ testDataList.AddRange(testData.Select(d => new List<HttpTimelinePostCreateRequestData>() { d! }));
+
+ foreach (var generatorTestData in TimelineNameGeneratorTestData())
+ {
+ var generator = generatorTestData[0];
+
+ foreach (var d in testDataList)
+ yield return new object?[] { generator, d };
+ }
}
[Theory]
- [MemberData(nameof(TimelineNameGeneratorTestData))]
- public async Task CreatePost_InvalidModel_Image(TimelineNameGenerator generator)
+ [MemberData(nameof(CreatePost_InvalidModelTest_TestData))]
+ public async Task CreatePost_InvalidModel(TimelineNameGenerator generator, List<HttpTimelinePostCreateRequestData> dataList)
{
using var client = await CreateClientAsUser();
@@ -460,28 +420,7 @@ namespace Timeline.Tests.IntegratedTests $"timelines/{generator(1)}/posts",
new HttpTimelinePostCreateRequest
{
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "image/jpeg",
- Data = Convert.ToBase64String(ImageHelper.CreatePngWithSize(100, 100))
- }
- }
- }
- );
- await client.TestPostAssertInvalidModelAsync(
- $"timelines/{generator(1)}/posts",
- new HttpTimelinePostCreateRequest
- {
- DataList = new List<HttpTimelinePostCreateRequestData>()
- {
- new HttpTimelinePostCreateRequestData
- {
- ContentType = "image/jpeg",
- Data = Convert.ToBase64String(new byte[] { 100, 200 })
- }
- }
+ DataList = dataList
}
);
}
diff --git a/BackEnd/Timeline/Controllers/TimelinePostController.cs b/BackEnd/Timeline/Controllers/TimelinePostController.cs index 06082f0f..6904e28d 100644 --- a/BackEnd/Timeline/Controllers/TimelinePostController.cs +++ b/BackEnd/Timeline/Controllers/TimelinePostController.cs @@ -171,6 +171,10 @@ namespace Timeline.Controllers for (int i = 0; i < body.DataList.Count; i++)
{
var data = body.DataList[i];
+
+ if (data is null)
+ return BadRequest(new CommonResponse(ErrorCodes.Common.InvalidModel, $"Data at index {i} is null."));
+
try
{
var d = Convert.FromBase64String(data.Data);
|