diff options
| author | crupest <crupest@outlook.com> | 2022-12-23 16:31:47 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2022-12-23 16:31:47 +0800 | 
| commit | 564b3d70b18afb25a792125548a37070b66c3a60 (patch) | |
| tree | b54d036a41739cb8d2dce97fac8b304e4c19a9b3 /docker | |
| parent | d1e2a504b0543f00a9c9d9602ba7f120bb0e8895 (diff) | |
| download | crupest-564b3d70b18afb25a792125548a37070b66c3a60.tar.gz crupest-564b3d70b18afb25a792125548a37070b66c3a60.tar.bz2 crupest-564b3d70b18afb25a792125548a37070b66c3a60.zip  | |
Develop secret api. v61
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/CrudIntegratedTest.cs | 58 | ||||
| -rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs | 21 | 
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) =>  | 
