1c546c111a
- Fix CriteriaSheetGenerator.FormatTimestamp to handle all DateTimeKind values - Update TestWebApplicationFactory to use IAuthenticationService - Add logger parameter to ExcelParserServiceTests - Add SecureStoreManager to solution under /utils/ folder
168 lines
4.3 KiB
C#
168 lines
4.3 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using JdeScoping.SecureStoreManager.ViewModels;
|
|
|
|
namespace JdeScoping.SecureStoreManager.Tests.ViewModels;
|
|
|
|
public class SecretItemViewModelTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_InitializesKey()
|
|
{
|
|
// Arrange & Act
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
|
|
// Assert
|
|
sut.Key.ShouldBe("testKey");
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_InitializesActualValue()
|
|
{
|
|
// Arrange & Act
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
|
|
// Assert
|
|
sut.ActualValue.ShouldBe("testValue");
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_InitializesIsValueVisibleToFalse()
|
|
{
|
|
// Arrange & Act
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
|
|
// Assert
|
|
sut.IsValueVisible.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void DisplayValue_WhenNotVisible_ReturnsMaskedValue()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
|
|
// Act & Assert
|
|
sut.DisplayValue.ShouldBe("********");
|
|
}
|
|
|
|
[Fact]
|
|
public void DisplayValue_WhenVisible_ReturnsActualValue()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
|
|
// Act
|
|
sut.IsValueVisible = true;
|
|
|
|
// Assert
|
|
sut.DisplayValue.ShouldBe("testValue");
|
|
}
|
|
|
|
[Fact]
|
|
public void ToggleVisibilityCommand_TogglesIsValueVisible()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
sut.IsValueVisible.ShouldBeFalse();
|
|
|
|
// Act
|
|
sut.ToggleVisibilityCommand.Execute(null);
|
|
|
|
// Assert
|
|
sut.IsValueVisible.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void ToggleVisibilityCommand_TogglesBackToHidden()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
sut.IsValueVisible = true;
|
|
|
|
// Act
|
|
sut.ToggleVisibilityCommand.Execute(null);
|
|
|
|
// Assert
|
|
sut.IsValueVisible.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task CopyToClipboardCommand_RaisesOnCopyToClipboardEvent()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "secretPassword");
|
|
string? copiedValue = null;
|
|
sut.OnCopyToClipboard += value =>
|
|
{
|
|
copiedValue = value;
|
|
return Task.CompletedTask;
|
|
};
|
|
|
|
// Act
|
|
sut.CopyToClipboardCommand.Execute(null);
|
|
|
|
// Assert - need to wait for async handler
|
|
// Give the async void handler time to complete
|
|
await Task.Delay(100);
|
|
copiedValue.ShouldBe("secretPassword");
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValueVisible_SetterRaisesPropertyChangedForIsValueVisible()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
var propertyChangedRaised = false;
|
|
sut.PropertyChanged += (s, e) =>
|
|
{
|
|
if (e.PropertyName == nameof(sut.IsValueVisible))
|
|
propertyChangedRaised = true;
|
|
};
|
|
|
|
// Act
|
|
sut.IsValueVisible = true;
|
|
|
|
// Assert
|
|
propertyChangedRaised.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValueVisible_SetterRaisesPropertyChangedForDisplayValue()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
var propertyChangedRaised = false;
|
|
sut.PropertyChanged += (s, e) =>
|
|
{
|
|
if (e.PropertyName == nameof(sut.DisplayValue))
|
|
propertyChangedRaised = true;
|
|
};
|
|
|
|
// Act
|
|
sut.IsValueVisible = true;
|
|
|
|
// Assert
|
|
propertyChangedRaised.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void IsValueVisible_SetToSameValue_DoesNotRaisePropertyChanged()
|
|
{
|
|
// Arrange
|
|
var sut = new SecretItemViewModel("testKey", "testValue");
|
|
sut.IsValueVisible = false; // Already false, but explicitly set
|
|
var propertyChangedRaised = false;
|
|
sut.PropertyChanged += (s, e) =>
|
|
{
|
|
propertyChangedRaised = true;
|
|
};
|
|
|
|
// Act
|
|
sut.IsValueVisible = false;
|
|
|
|
// Assert
|
|
propertyChangedRaised.ShouldBeFalse();
|
|
}
|
|
}
|