mirror of
https://github.com/freedbygrace/PSOPNSenseAPI.git
synced 2026-07-26 11:58:18 +00:00
Fix warnings, update version format, organize DLLs in subfolder, and use System.Reflection.Assembly::LoadBytes
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
@{
|
||||
RootModule = 'PSOPNSenseAPI.dll'
|
||||
ModuleVersion = '2025.04.14.2246'
|
||||
RootModule = 'PSOPNSenseAPI.psm1'
|
||||
ModuleVersion = '2025.04.14.2253'
|
||||
GUID = '1f0e4b77-cc7c-4a1e-b45a-d7c51a3c562e'
|
||||
Author = 'PSOPNSenseAPI Contributors'
|
||||
CompanyName = 'PSOPNSenseAPI'
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Load assemblies from the lib folder using System.Reflection.Assembly::LoadBytes
|
||||
# This avoids file lock issues when the module is loaded
|
||||
|
||||
$libPath = Join-Path $PSScriptRoot "lib"
|
||||
$dllFiles = Get-ChildItem -Path $libPath -Filter "*.dll"
|
||||
|
||||
foreach ($dll in $dllFiles) {
|
||||
try {
|
||||
$dllBytes = [System.IO.File]::ReadAllBytes($dll.FullName)
|
||||
[System.Reflection.Assembly]::Load($dllBytes) | Out-Null
|
||||
Write-Verbose "Loaded assembly: $($dll.Name)"
|
||||
}
|
||||
catch {
|
||||
Write-Warning "Failed to load assembly $($dll.Name): $_"
|
||||
}
|
||||
}
|
||||
|
||||
# Export all cmdlets
|
||||
$cmdlets = [System.AppDomain]::CurrentDomain.GetAssemblies() |
|
||||
Where-Object { $_.FullName -like "*PSOPNSenseAPI*" } |
|
||||
ForEach-Object { $_.GetTypes() } |
|
||||
Where-Object { $_.IsPublic -and $_.IsClass -and $_.Name -like "*Cmdlet" } |
|
||||
ForEach-Object { $_.Name }
|
||||
|
||||
Export-ModuleMember -Cmdlet $cmdlets
|
||||
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
## What's New
|
||||
|
||||
### Added
|
||||
- Port forwarding management (Get, New, Set, Remove)
|
||||
- Added unit tests for interface management
|
||||
|
||||
### Changed
|
||||
- Updated IPNetwork2 library from version 2.6.618 to 3.1.764
|
||||
- Updated code to use the new namespace (System.Net) for IPNetwork2
|
||||
- Added support for .NET 8.0 and .NET 9.0
|
||||
- Improved XML documentation for all classes and methods
|
||||
- Made OPNSenseApiClient more testable by introducing an interface
|
||||
@@ -4,7 +4,7 @@
|
||||
<TargetFrameworks>netstandard2.0;net472</TargetFrameworks>
|
||||
<AssemblyName>PSOPNSenseAPI</AssemblyName>
|
||||
<RootNamespace>PSOPNSenseAPI</RootNamespace>
|
||||
<Version>2025.04.14.2246</Version>
|
||||
<Version>2025.04.14.2253</Version>
|
||||
<Authors>PSOPNSenseAPI Contributors</Authors>
|
||||
<Company>PSOPNSenseAPI</Company>
|
||||
<Description>PowerShell module for interacting with the OPNSense API to configure firewalls</Description>
|
||||
|
||||
@@ -11,9 +11,9 @@ namespace PSOPNSenseAPI.Tests
|
||||
[TestClass]
|
||||
public class InterfaceServiceTests
|
||||
{
|
||||
private Mock<IOPNSenseApiClient> _mockApiClient;
|
||||
private Mock<ILogger> _mockLogger;
|
||||
private InterfaceService _interfaceService;
|
||||
private Mock<IOPNSenseApiClient>? _mockApiClient;
|
||||
private Mock<ILogger>? _mockLogger;
|
||||
private InterfaceService? _interfaceService;
|
||||
|
||||
[TestInitialize]
|
||||
public void Setup()
|
||||
@@ -43,11 +43,11 @@ namespace PSOPNSenseAPI.Tests
|
||||
}
|
||||
};
|
||||
|
||||
_mockApiClient.Setup(x => x.GetAsync<InterfaceListResponse>("interfaces/overview/searchInterfaces"))
|
||||
_mockApiClient!.Setup(x => x.GetAsync<InterfaceListResponse>("interfaces/overview/searchInterfaces"))
|
||||
.ReturnsAsync(response);
|
||||
|
||||
// Act
|
||||
var result = await _interfaceService.GetInterfacesAsync();
|
||||
var result = await _interfaceService!.GetInterfacesAsync();
|
||||
|
||||
// Assert
|
||||
Assert.IsNotNull(result);
|
||||
@@ -78,11 +78,11 @@ namespace PSOPNSenseAPI.Tests
|
||||
}
|
||||
};
|
||||
|
||||
_mockApiClient.Setup(x => x.GetAsync<InterfaceDetailResponse>($"interfaces/overview/getInterface/{interfaceName}"))
|
||||
_mockApiClient!.Setup(x => x.GetAsync<InterfaceDetailResponse>($"interfaces/overview/getInterface/{interfaceName}"))
|
||||
.ReturnsAsync(response);
|
||||
|
||||
// Act
|
||||
var result = await _interfaceService.GetInterfaceDetailAsync(interfaceName);
|
||||
var result = await _interfaceService!.GetInterfaceDetailAsync(interfaceName);
|
||||
|
||||
// Assert
|
||||
Assert.IsNotNull(result);
|
||||
@@ -114,11 +114,11 @@ namespace PSOPNSenseAPI.Tests
|
||||
Result = "saved"
|
||||
};
|
||||
|
||||
_mockApiClient.Setup(x => x.PostAsync<InterfaceUpdateResponse>($"interfaces/overview/setInterface/{interfaceName}", It.IsAny<object>()))
|
||||
_mockApiClient!.Setup(x => x.PostAsync<InterfaceUpdateResponse>($"interfaces/overview/setInterface/{interfaceName}", It.IsAny<object>()))
|
||||
.ReturnsAsync(response);
|
||||
|
||||
// Act
|
||||
var result = await _interfaceService.UpdateInterfaceAsync(interfaceName, interfaceConfig);
|
||||
var result = await _interfaceService!.UpdateInterfaceAsync(interfaceName, interfaceConfig);
|
||||
|
||||
// Assert
|
||||
Assert.IsNotNull(result);
|
||||
|
||||
Reference in New Issue
Block a user