44 lines
1.5 KiB
C#
44 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"));
|
|
}
|
|
}
|
|
|