From 58986da4a5bfe519af44e5834edfbe8d4651b51c Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Fri, 9 Aug 2019 15:39:58 +0800 Subject: Add UserController unit tests. --- .../Authentication/AuthenticationExtensions.cs | 1 + Timeline.Tests/Helpers/HttpClientExtensions.cs | 15 +++++++ Timeline.Tests/Helpers/InvalidModelTestHelpers.cs | 8 ++++ Timeline.Tests/Helpers/ResponseExtensions.cs | 47 ++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 Timeline.Tests/Helpers/HttpClientExtensions.cs (limited to 'Timeline.Tests/Helpers') diff --git a/Timeline.Tests/Helpers/Authentication/AuthenticationExtensions.cs b/Timeline.Tests/Helpers/Authentication/AuthenticationExtensions.cs index e31bd51c..8a44c852 100644 --- a/Timeline.Tests/Helpers/Authentication/AuthenticationExtensions.cs +++ b/Timeline.Tests/Helpers/Authentication/AuthenticationExtensions.cs @@ -14,6 +14,7 @@ namespace Timeline.Tests.Helpers.Authentication public static async Task CreateUserTokenAsync(this HttpClient client, string username, string password, int? expireOffset = null) { var response = await client.PostAsJsonAsync(CreateTokenUrl, new CreateTokenRequest { Username = username, Password = password, ExpireOffset = expireOffset }); + response.AssertOk(); var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return result; } diff --git a/Timeline.Tests/Helpers/HttpClientExtensions.cs b/Timeline.Tests/Helpers/HttpClientExtensions.cs new file mode 100644 index 00000000..cd40d91e --- /dev/null +++ b/Timeline.Tests/Helpers/HttpClientExtensions.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace Timeline.Tests.Helpers +{ + public static class HttpClientExtensions + { + public static Task PatchAsJsonAsync(this HttpClient client, string url, T body) + { + return client.PatchAsync(url, new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json")); + } + } +} diff --git a/Timeline.Tests/Helpers/InvalidModelTestHelpers.cs b/Timeline.Tests/Helpers/InvalidModelTestHelpers.cs index 51919021..1c079d0e 100644 --- a/Timeline.Tests/Helpers/InvalidModelTestHelpers.cs +++ b/Timeline.Tests/Helpers/InvalidModelTestHelpers.cs @@ -15,5 +15,13 @@ namespace Timeline.Tests.Helpers var responseBody = await response.ReadBodyAsJson(); Assert.Equal(CommonResponse.ErrorCodes.InvalidModel, responseBody.Code); } + + public static async Task TestPutInvalidModel(HttpClient client, string url, T body) + { + var response = await client.PutAsJsonAsync(url, body); + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + var responseBody = await response.ReadBodyAsJson(); + Assert.Equal(CommonResponse.ErrorCodes.InvalidModel, responseBody.Code); + } } } diff --git a/Timeline.Tests/Helpers/ResponseExtensions.cs b/Timeline.Tests/Helpers/ResponseExtensions.cs index 155836fb..46c9e81d 100644 --- a/Timeline.Tests/Helpers/ResponseExtensions.cs +++ b/Timeline.Tests/Helpers/ResponseExtensions.cs @@ -1,11 +1,58 @@ using Newtonsoft.Json; +using System.Net; using System.Net.Http; using System.Threading.Tasks; +using Timeline.Models.Http; +using Xunit; namespace Timeline.Tests.Helpers { public static class ResponseExtensions { + public static void AssertOk(this HttpResponseMessage response) + { + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + } + + public static void AssertNotFound(this HttpResponseMessage response) + { + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); + } + + public static void AssertBadRequest(this HttpResponseMessage response) + { + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + public static async Task AssertIsPutCreated(this HttpResponseMessage response) + { + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + var body = await response.ReadBodyAsJson(); + Assert.Equal(CommonPutResponse.CreatedCode, body.Code); + } + + public static async Task AssertIsPutModified(this HttpResponseMessage response) + { + response.AssertOk(); + var body = await response.ReadBodyAsJson(); + Assert.Equal(CommonPutResponse.ModifiedCode, body.Code); + } + + + public static async Task AssertIsDeleteDeleted(this HttpResponseMessage response) + { + response.AssertOk(); + var body = await response.ReadBodyAsJson(); + Assert.Equal(CommonDeleteResponse.DeletedCode, body.Code); + } + + public static async Task AssertIsDeleteNotExist(this HttpResponseMessage response) + { + response.AssertOk(); + var body = await response.ReadBodyAsJson(); + Assert.Equal(CommonDeleteResponse.NotExistsCode, body.Code); + } + public static async Task ReadBodyAsJson(this HttpResponseMessage response) { return JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); -- cgit v1.2.3