(feature): remove vulnerable dependencies
This commit is contained in:
parent
cb69fb85c5
commit
9107fc86ed
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2024 Maksym Sadovnychyy (MAKS-IT)
|
Copyright (c) 2024 - 2025 Maksym Sadovnychyy (MAKS-IT)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@ -1,8 +1,137 @@
|
|||||||
namespace MaksIT.Results.Tests {
|
using Xunit;
|
||||||
public class UnitTest1 {
|
using System.Net;
|
||||||
[Fact]
|
using MaksIT.Results;
|
||||||
public void Test1() {
|
using MaksIT.Results.Mvc;
|
||||||
|
|
||||||
|
namespace MaksIT.Results.Tests {
|
||||||
|
public class ResultTests {
|
||||||
|
[Fact]
|
||||||
|
public void Result_Ok_ShouldReturnSuccess() {
|
||||||
|
// Arrange
|
||||||
|
var message = "Operation successful";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = Result.Ok(message);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.True(result.IsSuccess);
|
||||||
|
Assert.Contains(message, result.Messages);
|
||||||
|
Assert.Equal(HttpStatusCode.OK, result.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_BadRequest_ShouldReturnFailure() {
|
||||||
|
// Arrange
|
||||||
|
var message = "Invalid request";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = Result.BadRequest(message);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.False(result.IsSuccess);
|
||||||
|
Assert.Contains(message, result.Messages);
|
||||||
|
Assert.Equal(HttpStatusCode.BadRequest, result.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_Generic_Ok_ShouldReturnSuccessWithValue() {
|
||||||
|
// Arrange
|
||||||
|
var value = 42;
|
||||||
|
var message = "Operation successful";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = Result<int>.Ok(value, message);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.True(result.IsSuccess);
|
||||||
|
Assert.Equal(value, result.Value);
|
||||||
|
Assert.Contains(message, result.Messages);
|
||||||
|
Assert.Equal(HttpStatusCode.OK, result.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_Generic_NotFound_ShouldReturnFailureWithNullValue() {
|
||||||
|
// Arrange
|
||||||
|
var message = "Resource not found";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = Result<string>.NotFound(null, message);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.False(result.IsSuccess);
|
||||||
|
Assert.Null(result.Value);
|
||||||
|
Assert.Contains(message, result.Messages);
|
||||||
|
Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_ToResultOfType_ShouldTransformValue() {
|
||||||
|
// Arrange
|
||||||
|
var initialValue = 42;
|
||||||
|
var transformedValue = "42";
|
||||||
|
var result = Result<int>.Ok(initialValue);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var transformedResult = result.ToResultOfType(value => value.ToString());
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.True(transformedResult.IsSuccess);
|
||||||
|
Assert.Equal(transformedValue, transformedResult.Value);
|
||||||
|
Assert.Equal(result.StatusCode, transformedResult.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_ToActionResult_ShouldReturnStatusCodeResult() {
|
||||||
|
// Arrange
|
||||||
|
var result = Result.Ok("Operation successful");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var actionResult = result.ToActionResult();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsType<StatusCodeResult>(actionResult);
|
||||||
|
var statusCodeResult = actionResult as StatusCodeResult;
|
||||||
|
Assert.NotNull(statusCodeResult);
|
||||||
|
Assert.Equal((int)HttpStatusCode.OK, statusCodeResult.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_ToActionResult_ShouldReturnObjectResultForFailure() {
|
||||||
|
// Arrange
|
||||||
|
var errorMessage = "An error occurred";
|
||||||
|
var result = Result.BadRequest(errorMessage);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var actionResult = result.ToActionResult();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsType<ObjectResult>(actionResult);
|
||||||
|
var objectResult = actionResult as ObjectResult;
|
||||||
|
Assert.NotNull(objectResult);
|
||||||
|
Assert.Equal((int)HttpStatusCode.BadRequest, objectResult.StatusCode);
|
||||||
|
Assert.IsType<ProblemDetails>(objectResult.Value);
|
||||||
|
var problemDetails = objectResult.Value as ProblemDetails;
|
||||||
|
Assert.NotNull(problemDetails);
|
||||||
|
Assert.Equal((int)HttpStatusCode.BadRequest, problemDetails.Status);
|
||||||
|
Assert.Equal("An error occurred", problemDetails.Title);
|
||||||
|
Assert.Equal(errorMessage, problemDetails.Detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Result_Generic_ToActionResult_ShouldReturnObjectResultWithValue() {
|
||||||
|
// Arrange
|
||||||
|
var value = new { Id = 1, Name = "Test" };
|
||||||
|
var result = Result<object>.Ok(value);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var actionResult = result.ToActionResult();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsType<ObjectResult>(actionResult);
|
||||||
|
var objectResult = actionResult as ObjectResult;
|
||||||
|
Assert.NotNull(objectResult);
|
||||||
|
Assert.Equal((int)HttpStatusCode.OK, objectResult.StatusCode);
|
||||||
|
Assert.Equal(value, objectResult.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,11 +4,11 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RootNamespace>MaksIT.$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
|
<RootNamespace>$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
|
||||||
|
|
||||||
<!-- NuGet package metadata -->
|
<!-- NuGet package metadata -->
|
||||||
<PackageId>MaksIT.Results</PackageId>
|
<PackageId>MaksIT.Results</PackageId>
|
||||||
<Version>1.0.6</Version>
|
<Version>1.0.7</Version>
|
||||||
<Authors>Maksym Sadovnychyy</Authors>
|
<Authors>Maksym Sadovnychyy</Authors>
|
||||||
<Company>MAKS-IT</Company>
|
<Company>MAKS-IT</Company>
|
||||||
<Product>MaksIT.Results</Product>
|
<Product>MaksIT.Results</Product>
|
||||||
@ -18,10 +18,15 @@
|
|||||||
<License>MIT</License>
|
<License>MIT</License>
|
||||||
<RequireLicenseAcceptance>false</RequireLicenseAcceptance>
|
<RequireLicenseAcceptance>false</RequireLicenseAcceptance>
|
||||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.3.0" />
|
|
||||||
<None Include="../../README.md" Pack="true" PackagePath="" />
|
<None Include="../../README.md" Pack="true" PackagePath="" />
|
||||||
|
<None Include="../../LICENSE.md" Pack="true" PackagePath="" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.3.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
29
src/MaksIT.Results/Mvc/ObjectResult.cs
Normal file
29
src/MaksIT.Results/Mvc/ObjectResult.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MaksIT.Results.Mvc;
|
||||||
|
|
||||||
|
public class ObjectResult : IActionResult {
|
||||||
|
public object? Value { get; }
|
||||||
|
public int? StatusCode { get; set; }
|
||||||
|
|
||||||
|
public ObjectResult(object? value) {
|
||||||
|
Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task ExecuteResultAsync(ActionContext context) {
|
||||||
|
var response = context.HttpContext.Response;
|
||||||
|
if (StatusCode.HasValue) {
|
||||||
|
response.StatusCode = StatusCode.Value;
|
||||||
|
}
|
||||||
|
response.ContentType = "application/json";
|
||||||
|
if (Value is not null) {
|
||||||
|
await JsonSerializer.SerializeAsync(response.Body, Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/MaksIT.Results/Mvc/ProblemDetails.cs
Normal file
15
src/MaksIT.Results/Mvc/ProblemDetails.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MaksIT.Results.Mvc;
|
||||||
|
|
||||||
|
public class ProblemDetails {
|
||||||
|
public int? Status { get; set; }
|
||||||
|
public string? Title { get; set; }
|
||||||
|
public string? Detail { get; set; }
|
||||||
|
public string? Instance { get; set; }
|
||||||
|
public IDictionary<string, object?> Extensions { get; } = new Dictionary<string, object?>();
|
||||||
|
}
|
||||||
17
src/MaksIT.Results/Mvc/StatusCodeResult.cs
Normal file
17
src/MaksIT.Results/Mvc/StatusCodeResult.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
|
||||||
|
namespace MaksIT.Results.Mvc;
|
||||||
|
|
||||||
|
public class StatusCodeResult : IActionResult {
|
||||||
|
public int StatusCode { get; }
|
||||||
|
|
||||||
|
public StatusCodeResult(int statusCode) {
|
||||||
|
StatusCode = statusCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task ExecuteResultAsync(ActionContext context) {
|
||||||
|
context.HttpContext.Response.StatusCode = StatusCode;
|
||||||
|
await Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,7 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using System.Net;
|
||||||
using System.Net;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using MaksIT.Results.Mvc;
|
||||||
|
|
||||||
|
|
||||||
namespace MaksIT.Results;
|
namespace MaksIT.Results;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user