aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-23 16:31:47 +0800
committercrupest <crupest@outlook.com>2022-12-23 16:31:47 +0800
commit564b3d70b18afb25a792125548a37070b66c3a60 (patch)
treeb54d036a41739cb8d2dce97fac8b304e4c19a9b3 /docker/crupest-api/CrupestApi
parentd1e2a504b0543f00a9c9d9602ba7f120bb0e8895 (diff)
downloadcrupest-564b3d70b18afb25a792125548a37070b66c3a60.tar.gz
crupest-564b3d70b18afb25a792125548a37070b66c3a60.tar.bz2
crupest-564b3d70b18afb25a792125548a37070b66c3a60.zip
Develop secret api. v61
Diffstat (limited to 'docker/crupest-api/CrupestApi')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs58
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs21
2 files changed, 79 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs
index 179048d..bd07c70 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs
@@ -20,6 +20,7 @@ public class CrudIntegratedTest : IAsyncLifetime
builder.Services.AddCrud<TestEntity>();
builder.WebHost.UseTestServer();
_app = builder.Build();
+ _app.UseCrudCore();
_app.MapCrud<TestEntity>("/test", "test-perm");
}
@@ -139,4 +140,61 @@ public class CrudIntegratedTest : IAsyncLifetime
Assert.Empty(body);
}
}
+
+ [Fact]
+ public async Task UnauthorizedTest()
+ {
+ {
+ using var response = await _httpClient.GetAsync("/test");
+ Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
+ }
+
+ {
+ using var response = await _httpClient.GetAsync("/test/test");
+ Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
+ }
+
+ {
+ using var response = await _httpClient.PostAsJsonAsync("/test", new TestEntity
+ {
+ Name = "test",
+ Age = 22
+ });
+ Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
+ }
+
+ {
+ using var response = await _httpClient.PatchAsJsonAsync("/test/test", new TestEntity
+ {
+ Name = "test-2",
+ Age = 23,
+ Height = 188.0f
+ });
+ Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
+ }
+
+ {
+ using var response = await _httpClient.DeleteAsync("/test/test");
+ Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
+ }
+ }
+
+ [Fact]
+ public async Task NotFoundTest()
+ {
+ {
+ using var response = await _authorizedHttpClient.GetAsync("/test/test");
+ Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
+ }
+
+ {
+ using var response = await _authorizedHttpClient.PatchAsJsonAsync("/test/test", new TestEntity
+ {
+ Name = "test-2",
+ Age = 23,
+ Height = 188.0f
+ });
+ Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
+ }
+ }
}
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
index c9e43f2..8942979 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
@@ -2,6 +2,27 @@ namespace CrupestApi.Commons.Crud;
public static class CrudWebApplicationExtensions
{
+ public static WebApplication UseCrudCore(this WebApplication app)
+ {
+ app.Use(async (context, next) =>
+ {
+ try
+ {
+ await next();
+ }
+ catch (EntityNotExistException)
+ {
+ await context.ResponseMessageAsync("Requested entity does not exist.", StatusCodes.Status404NotFound);
+ }
+ catch (UserException e)
+ {
+ await context.ResponseMessageAsync(e.Message);
+ }
+ });
+
+ return app;
+ }
+
public static WebApplication MapCrud<TEntity>(this WebApplication app, string path, string? permission) where TEntity : class
{
app.MapGet(path, async (context) =>