aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-02-12 16:42:56 +0800
committercrupest <crupest@outlook.com>2021-02-12 16:42:56 +0800
commite407b645aa7c6738c6f37c69f616c91c99bf1af0 (patch)
tree1133f585e91fd3b8419c24b39ba44bc4042a7709
parent58595b5c6462add8224904c833adc9eb9d64bb8b (diff)
downloadtimeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.tar.gz
timeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.tar.bz2
timeline-e407b645aa7c6738c6f37c69f616c91c99bf1af0.zip
...
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/TimelinePostTest.cs171
-rw-r--r--BackEnd/Timeline/Controllers/TimelinePostController.cs4
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);