(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
	 Maksym Sadovnychyy
						Maksym Sadovnychyy