81 lines
3.2 KiB
C#
81 lines
3.2 KiB
C#
using System.Reflection;
|
|
using PSInfisicalAPI.Models;
|
|
using Xunit;
|
|
|
|
namespace PSInfisicalAPI.Tests
|
|
{
|
|
public class FolderMapperTests
|
|
{
|
|
private static readonly System.Type MapperType = typeof(PSInfisicalAPI.Connections.InfisicalConnection).Assembly
|
|
.GetType("PSInfisicalAPI.Folders.InfisicalFolderMapper", true);
|
|
|
|
private static readonly System.Type DtoType = typeof(PSInfisicalAPI.Connections.InfisicalConnection).Assembly
|
|
.GetType("PSInfisicalAPI.Folders.InfisicalFolderResponseDto", true);
|
|
|
|
private static InfisicalFolder InvokeMap(object dto, string fallbackProjectId, string fallbackEnvironment)
|
|
{
|
|
MethodInfo map = MapperType.GetMethod("Map", BindingFlags.Public | BindingFlags.Static);
|
|
return (InfisicalFolder)map.Invoke(null, new object[] { dto, fallbackProjectId, fallbackEnvironment });
|
|
}
|
|
|
|
[Fact]
|
|
public void Map_Null_Returns_Null()
|
|
{
|
|
Assert.Null(InvokeMap(null, "proj-x", "dev"));
|
|
}
|
|
|
|
[Fact]
|
|
public void Map_Populates_Fields_With_Explicit_ProjectId()
|
|
{
|
|
object dto = System.Activator.CreateInstance(DtoType);
|
|
DtoType.GetProperty("Id").SetValue(dto, "fld-001");
|
|
DtoType.GetProperty("Name").SetValue(dto, "config");
|
|
DtoType.GetProperty("Path").SetValue(dto, "/app/config");
|
|
DtoType.GetProperty("ParentId").SetValue(dto, "fld-root");
|
|
DtoType.GetProperty("Environment").SetValue(dto, "prod");
|
|
DtoType.GetProperty("ProjectId").SetValue(dto, "proj-001");
|
|
|
|
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
|
|
|
Assert.Equal("fld-001", folder.Id);
|
|
Assert.Equal("config", folder.Name);
|
|
Assert.Equal("/app/config", folder.Path);
|
|
Assert.Equal("fld-root", folder.ParentId);
|
|
Assert.Equal("prod", folder.Environment);
|
|
Assert.Equal("proj-001", folder.ProjectId);
|
|
}
|
|
|
|
[Fact]
|
|
public void Map_Uses_WorkspaceId_When_ProjectId_Empty()
|
|
{
|
|
object dto = System.Activator.CreateInstance(DtoType);
|
|
DtoType.GetProperty("Id").SetValue(dto, "fld-002");
|
|
DtoType.GetProperty("WorkspaceId").SetValue(dto, "wks-002");
|
|
|
|
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
|
Assert.Equal("wks-002", folder.ProjectId);
|
|
}
|
|
|
|
[Fact]
|
|
public void Map_Uses_Fallback_When_No_ProjectId_Or_Environment()
|
|
{
|
|
object dto = System.Activator.CreateInstance(DtoType);
|
|
DtoType.GetProperty("Id").SetValue(dto, "fld-003");
|
|
|
|
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
|
Assert.Equal("fallback-proj", folder.ProjectId);
|
|
Assert.Equal("fallback-env", folder.Environment);
|
|
}
|
|
|
|
[Fact]
|
|
public void Map_Falls_Back_To_InternalId_For_Id()
|
|
{
|
|
object dto = System.Activator.CreateInstance(DtoType);
|
|
DtoType.GetProperty("InternalId").SetValue(dto, "internal-fld");
|
|
|
|
InfisicalFolder folder = InvokeMap(dto, "p", "e");
|
|
Assert.Equal("internal-fld", folder.Id);
|
|
}
|
|
}
|
|
}
|