Skip to content

Commit 56126b1

Browse files
authored
Fix default value bug and add tests (#6630)
1 parent 2cf936f commit 56126b1

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

src/NuGetGallery/Services/TyposquattingConfiguration.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ namespace NuGetGallery.Services
77
{
88
public sealed class TyposquattingConfiguration : ITyposquattingConfiguration
99
{
10-
private const int DefaultPackageIdCheckListLength = 20000;
11-
private const double DefaultPackageIdChecklistCacheExpireTimeInHours = 24;
10+
public const int DefaultPackageIdCheckListLength = 10000;
11+
public const double DefaultPackageIdChecklistCacheExpireTimeInHours = 24.0;
1212
public int PackageIdChecklistLength { get; }
1313
public bool IsCheckEnabled { get; }
1414
public bool IsBlockUsersEnabled { get; }
@@ -29,10 +29,10 @@ public TyposquattingConfiguration(
2929
bool isBlockUsersEnabled,
3030
double packageIdChecklistCacheExpireTimeInHours)
3131
{
32-
PackageIdChecklistLength = packageIdChecklistLength;
32+
PackageIdChecklistLength = packageIdChecklistLength == default(int) ? DefaultPackageIdCheckListLength : packageIdChecklistLength;
3333
IsCheckEnabled = isCheckEnabled;
3434
IsBlockUsersEnabled = isBlockUsersEnabled;
35-
PackageIdChecklistCacheExpireTimeInHours = packageIdChecklistCacheExpireTimeInHours;
35+
PackageIdChecklistCacheExpireTimeInHours = packageIdChecklistCacheExpireTimeInHours == default(double) ? DefaultPackageIdChecklistCacheExpireTimeInHours : packageIdChecklistCacheExpireTimeInHours;
3636
}
3737
}
3838
}

tests/NuGetGallery.Facts/Services/ContentObjectServiceFacts.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ public void ObjectsHaveDefaultStateIfNotRefreshed()
3636
Assert.False(symbolsConfiguration.IsSymbolsUploadEnabledForAll);
3737
Assert.Empty(symbolsConfiguration.AlwaysEnabledForDomains);
3838
Assert.Empty(symbolsConfiguration.AlwaysEnabledForEmailAddresses);
39+
40+
var typosquattingConfiguration = service.TyposquattingConfiguration as TyposquattingConfiguration;
41+
42+
Assert.Equal(TyposquattingConfiguration.DefaultPackageIdCheckListLength, typosquattingConfiguration.PackageIdChecklistLength);
43+
Assert.False(typosquattingConfiguration.IsCheckEnabled);
44+
Assert.False(typosquattingConfiguration.IsBlockUsersEnabled);
45+
Assert.Equal(TyposquattingConfiguration.DefaultPackageIdChecklistCacheExpireTimeInHours, typosquattingConfiguration.PackageIdChecklistCacheExpireTimeInHours);
3946
}
4047

4148
[Fact]
@@ -55,6 +62,9 @@ public async Task RefreshRefreshesObject()
5562
var alwaysEnabledForDomains = new[] { "a" };
5663
var alwaysEnabledForEmailAddresses = new[] { "b" };
5764

65+
var packageIdChecklistLength = 20000;
66+
var packageIdChecklistCacheExpireTimeInHours = 12.0;
67+
5868
var certificatesConfiguration = new CertificatesConfiguration(
5969
isUIEnabledByDefault,
6070
alwaysEnabledForDomains,
@@ -67,6 +77,13 @@ public async Task RefreshRefreshesObject()
6777
alwaysEnabledForEmailAddresses: alwaysEnabledForEmailAddresses);
6878
var symbolsJson = JsonConvert.SerializeObject(symbolsConfiguration);
6979

80+
var typosquattingConfiguration = new TyposquattingConfiguration(
81+
packageIdChecklistLength: packageIdChecklistLength,
82+
isCheckEnabled: true,
83+
isBlockUsersEnabled: true,
84+
packageIdChecklistCacheExpireTimeInHours: packageIdChecklistCacheExpireTimeInHours);
85+
var typosquattingJson = JsonConvert.SerializeObject(typosquattingConfiguration);
86+
7087
var contentService = GetMock<IContentService>();
7188

7289
contentService
@@ -81,6 +98,10 @@ public async Task RefreshRefreshesObject()
8198
.Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.SymbolsConfiguration, It.IsAny<TimeSpan>()))
8299
.Returns(Task.FromResult<IHtmlString>(new HtmlString(symbolsJson)));
83100

101+
contentService
102+
.Setup(x => x.GetContentItemAsync(GalleryConstants.ContentNames.TyposquattingConfiguration, It.IsAny<TimeSpan>()))
103+
.Returns(Task.FromResult<IHtmlString>(new HtmlString(typosquattingJson)));
104+
84105
var service = GetService<ContentObjectService>();
85106

86107
// Act
@@ -89,6 +110,7 @@ public async Task RefreshRefreshesObject()
89110
loginDiscontinuationConfiguration = service.LoginDiscontinuationConfiguration as LoginDiscontinuationConfiguration;
90111
certificatesConfiguration = service.CertificatesConfiguration as CertificatesConfiguration;
91112
symbolsConfiguration = service.SymbolsConfiguration as SymbolsConfiguration;
113+
typosquattingConfiguration = service.TyposquattingConfiguration as TyposquattingConfiguration;
92114

93115
// Assert
94116
Assert.True(loginDiscontinuationConfiguration.DiscontinuedForEmailAddresses.SequenceEqual(emails));
@@ -103,6 +125,11 @@ public async Task RefreshRefreshesObject()
103125
Assert.True(symbolsConfiguration.IsSymbolsUploadEnabledForAll);
104126
Assert.Equal(alwaysEnabledForDomains, symbolsConfiguration.AlwaysEnabledForDomains);
105127
Assert.Equal(alwaysEnabledForEmailAddresses, symbolsConfiguration.AlwaysEnabledForEmailAddresses);
128+
129+
Assert.Equal(packageIdChecklistLength, typosquattingConfiguration.PackageIdChecklistLength);
130+
Assert.True(typosquattingConfiguration.IsCheckEnabled);
131+
Assert.True(typosquattingConfiguration.IsBlockUsersEnabled);
132+
Assert.Equal(packageIdChecklistCacheExpireTimeInHours, typosquattingConfiguration.PackageIdChecklistCacheExpireTimeInHours);
106133
}
107134
}
108135
}

0 commit comments

Comments
 (0)