forked from SciSharp/BotSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSettingServiceTests.cs
More file actions
87 lines (76 loc) · 2.5 KB
/
SettingServiceTests.cs
File metadata and controls
87 lines (76 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using BotSharp.Core.Infrastructures;
using Xunit;
namespace BotSharp.Core.UnitTests.Infrastructures;
public class SettingServiceTests
{
[Fact]
public void Mask_null_or_empty_returns_empty()
{
Assert.Equal(string.Empty, SettingService.Mask(null!));
Assert.Equal(string.Empty, SettingService.Mask(string.Empty));
}
[Theory]
[InlineData("a", "*")]
[InlineData("ab", "**")]
[InlineData("abc", "a**")]
[InlineData("abcd", "a***")]
[InlineData("0123456789", "0123******")]
public void Mask_short_and_medium_inputs_matches_expected_masked_form(string input, string expected)
{
var actual = SettingService.Mask(input);
Assert.Equal(expected, actual);
}
[Fact]
public void Mask_long_value_preserves_length_and_replaces_suffix_with_stars()
{
var input = new string('x', 64);
var masked = SettingService.Mask(input);
Assert.Equal(64, masked.Length);
Assert.NotEqual(input, masked);
Assert.Contains('*', masked);
Assert.StartsWith("x", masked, StringComparison.Ordinal);
Assert.EndsWith("*", masked);
}
[Theory]
[InlineData("e", 1)]
[InlineData("ef", 2)]
[InlineData("efg", 3)]
[InlineData("efgh", 4)]
[InlineData("123456789012345", 15)]
[InlineData("abcdefghijklmnopqrstuvwxyz", 26)]
public void Mask_preserves_original_string_length(string input, int expectedLength)
{
var masked = SettingService.Mask(input);
Assert.Equal(expectedLength, masked.Length);
}
[Theory]
[InlineData("a")]
[InlineData("ab")]
[InlineData("abc")]
[InlineData("password123")]
public void Mask_contains_at_least_one_asterisk(string input)
{
var masked = SettingService.Mask(input);
Assert.Contains('*', masked);
}
[Fact]
public void Mask_very_long_string()
{
var input = new string('a', 1000);
var masked = SettingService.Mask(input);
Assert.Equal(1000, masked.Length);
Assert.Contains('*', masked);
var keepLength = (1000 - 1) / 2;
var asteriskCount = 1000 - keepLength;
Assert.Equal(asteriskCount, masked.Count(c => c == '*'));
}
[Fact]
public void Mask_api_key_like_string()
{
var input = "sk_live_1234567890abcdef";
var masked = SettingService.Mask(input);
Assert.Equal(input.Length, masked.Length);
Assert.Contains('*', masked);
Assert.StartsWith("sk_li", masked);
}
}