thecr3w-dev/tests/TheCr3w.Tests/ExternalDeploymentTests.cs

43 lines
1.5 KiB
C#

using TheCr3w.Shared.External;
using Xunit;
namespace TheCr3w.Tests;
public class ExternalDeploymentTests
{
private readonly ExternalDeploymentService _service = new();
[Fact]
public void ComputeSyncPreview_ShouldCorrectlyIdentifyAddUpdateDelete()
{
var localFiles = new Dictionary<string, (string Sha256, long Size)>
{
["index.html"] = ("sha_index_new", 1000),
["app.js"] = ("sha_js_same", 5000),
["new-file.css"] = ("sha_css_new", 2000)
};
var remoteFiles = new Dictionary<string, string>
{
["index.html"] = ("sha_index_old"),
["app.js"] = ("sha_js_same"),
["obsolete.png"] = ("sha_obsolete")
};
var preview = _service.ComputeSyncPreview(localFiles, remoteFiles);
Assert.Equal(1, preview.FilesToAdd); // new-file.css
Assert.Equal(1, preview.FilesToUpdate); // index.html
Assert.Equal(1, preview.FilesToDelete); // obsolete.png
Assert.Equal(3000, preview.TotalTransferBytes); // 1000 + 2000
}
[Fact]
public void ValidateHostKey_ShouldRejectEmptyOrMismatchedFingerprint()
{
Assert.False(_service.ValidateHostKey("SHA256:abc123actual", null));
Assert.False(_service.ValidateHostKey("SHA256:abc123actual", ""));
Assert.False(_service.ValidateHostKey("SHA256:abc123actual", "SHA256:wrong"));
Assert.True(_service.ValidateHostKey("SHA256:abc123actual", "SHA256:abc123actual"));
}
}