diff --git a/src/Test/L0/HostContextL0.cs b/src/Test/L0/HostContextL0.cs index 40841a301..73fc32065 100644 --- a/src/Test/L0/HostContextL0.cs +++ b/src/Test/L0/HostContextL0.cs @@ -1,7 +1,9 @@ using GitHub.Runner.Common.Util; +using System; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; +using System.Text; using System.Threading; using Xunit; @@ -67,6 +69,44 @@ namespace GitHub.Runner.Common.Tests } } + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Common")] + public void DefaultSecretMaskers() + { + try + { + // Arrange. + Setup(); + + // Act. + _hc.SecretMasker.AddValue("Password123!"); + _hc.SecretMasker.AddValue("Pass\"word\"123!"); + _hc.SecretMasker.AddValue("Pass word 123!"); + _hc.SecretMasker.AddValue("Pass123!"); + _hc.SecretMasker.AddValue("Pass'word'123!"); + + // Assert. + Assert.Equal("123***123", _hc.SecretMasker.MaskSecrets("123Password123!123")); + Assert.Equal("password123", _hc.SecretMasker.MaskSecrets("password123")); + Assert.Equal("123***123", _hc.SecretMasker.MaskSecrets("123Pass\\\"word\\\"123!123")); + Assert.Equal("123***123", _hc.SecretMasker.MaskSecrets("123Pass%20word%20123%21123")); + Assert.Equal("123***123", _hc.SecretMasker.MaskSecrets("123Pass<word>123!123")); + Assert.Equal("123***123", _hc.SecretMasker.MaskSecrets("123Pass''word''123!123")); + Assert.Equal("OlBh***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($":Password123!")))); + Assert.Equal("YTpQ***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($"a:Password123!")))); + Assert.Equal("YWI6***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($"ab:Password123!")))); + Assert.Equal("YWJjOlBh***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($"abc:Password123!")))); + Assert.Equal("YWJjZDpQ***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($"abcd:Password123!")))); + Assert.Equal("YWJjZGU6***", _hc.SecretMasker.MaskSecrets(Convert.ToBase64String(Encoding.UTF8.GetBytes($"abcde:Password123!")))); + } + finally + { + // Cleanup. + Teardown(); + } + } + public void Setup([CallerMemberName] string testName = "") { _tokenSource = new CancellationTokenSource();