@@ -69,7 +69,8 @@ private static PackagesController CreateController(
6969 Mock < IContentObjectService > contentObjectService = null ,
7070 Mock < ISymbolPackageUploadService > symbolPackageUploadService = null ,
7171 Mock < ICoreLicenseFileService > coreLicenseFileService = null ,
72- Mock < ILicenseExpressionSplitter > licenseExpressionSplitter = null )
72+ Mock < ILicenseExpressionSplitter > licenseExpressionSplitter = null ,
73+ Mock < IFeatureFlagService > featureFlagService = null )
7374 {
7475 packageService = packageService ?? new Mock < IPackageService > ( ) ;
7576 if ( uploadFileService == null )
@@ -181,6 +182,12 @@ private static PackagesController CreateController(
181182
182183 licenseExpressionSplitter = licenseExpressionSplitter ?? new Mock < ILicenseExpressionSplitter > ( ) ;
183184
185+ if ( featureFlagService == null )
186+ {
187+ featureFlagService = new Mock < IFeatureFlagService > ( ) ;
188+ featureFlagService . SetReturnsDefault < bool > ( true ) ;
189+ }
190+
184191 var diagnosticsService = new Mock < IDiagnosticsService > ( ) ;
185192 var controller = new Mock < PackagesController > (
186193 packageService . Object ,
@@ -207,7 +214,8 @@ private static PackagesController CreateController(
207214 symbolPackageUploadService . Object ,
208215 diagnosticsService . Object ,
209216 coreLicenseFileService . Object ,
210- licenseExpressionSplitter . Object ) ;
217+ licenseExpressionSplitter . Object ,
218+ featureFlagService . Object ) ;
211219
212220 controller . CallBase = true ;
213221 controller . Object . SetOwinContextOverride ( Fakes . CreateOwinContext ( ) ) ;
@@ -966,6 +974,111 @@ public void GivenAExistentPackageWithUnlistedAvailablePackagesIt404s()
966974 ResultAssert . IsNotFound ( result ) ;
967975 }
968976
977+ [ Theory ]
978+ [ InlineData ( false ) ]
979+ [ InlineData ( true ) ]
980+ public void GivenAnExistentPackageTheFeatureFlagHidesTheFeed ( bool enabled )
981+ {
982+ // Arrange
983+ var httpContext = new Mock < HttpContextBase > ( ) ;
984+ var packageService = new Mock < IPackageService > ( ) ;
985+ var configurationService = GetConfigurationService ( ) ;
986+ configurationService . Current . Brand = "Test Gallery" ;
987+ var featureFlagService = new Mock < IFeatureFlagService > ( ) ;
988+ featureFlagService
989+ . Setup ( x => x . IsPackagesAtomFeedEnabled ( ) )
990+ . Returns ( enabled ) ;
991+
992+ var controller = CreateController (
993+ configurationService ,
994+ packageService : packageService ,
995+ featureFlagService : featureFlagService ,
996+ httpContext : httpContext ) ;
997+
998+ var packageRegistration = new PackageRegistration ( ) ;
999+ packageRegistration . Id = "Foo" ;
1000+
1001+ var onlyVersion = new Package
1002+ {
1003+ Listed = true ,
1004+ PackageStatusKey = PackageStatus . Available ,
1005+ NormalizedVersion = "2.0.0" ,
1006+ Version = "2.0.0" ,
1007+ IsPrerelease = true ,
1008+ PackageRegistration = new PackageRegistration ( )
1009+ {
1010+ Id = "Foo"
1011+ }
1012+ } ;
1013+ packageRegistration . Packages . Add ( onlyVersion ) ;
1014+
1015+ packageService . Setup ( p => p . FindPackageRegistrationById ( "Foo" ) )
1016+ . Returns ( packageRegistration ) ;
1017+
1018+ // Act
1019+ var result = controller . AtomFeed ( "Foo" ) ;
1020+
1021+ // Assert
1022+ if ( enabled )
1023+ {
1024+ Assert . IsType < SyndicationAtomActionResult > ( result ) ;
1025+ }
1026+ else
1027+ {
1028+ ResultAssert . IsNotFound ( result ) ;
1029+ }
1030+ }
1031+
1032+ [ Theory ]
1033+ [ InlineData ( false ) ]
1034+ [ InlineData ( true ) ]
1035+ public void GivenAExistentPackagePrereleaseVersionsCanBeFilteredOut ( bool includePrerelease )
1036+ {
1037+ // Arrange
1038+ var httpContext = new Mock < HttpContextBase > ( ) ;
1039+ var packageService = new Mock < IPackageService > ( ) ;
1040+ var configurationService = GetConfigurationService ( ) ;
1041+ configurationService . Current . Brand = "Test Gallery" ;
1042+
1043+ var controller = CreateController (
1044+ configurationService ,
1045+ packageService : packageService ,
1046+ httpContext : httpContext ) ;
1047+
1048+ var packageRegistration = new PackageRegistration ( ) ;
1049+ packageRegistration . Id = "Foo" ;
1050+
1051+ var onlyVersion = new Package
1052+ {
1053+ Listed = true ,
1054+ PackageStatusKey = PackageStatus . Available ,
1055+ NormalizedVersion = "2.0.0-beta" ,
1056+ Version = "2.0.0-beta" ,
1057+ IsPrerelease = true ,
1058+ PackageRegistration = new PackageRegistration ( )
1059+ {
1060+ Id = "Foo"
1061+ }
1062+ } ;
1063+ packageRegistration . Packages . Add ( onlyVersion ) ;
1064+
1065+ packageService . Setup ( p => p . FindPackageRegistrationById ( "Foo" ) )
1066+ . Returns ( packageRegistration ) ;
1067+
1068+ // Act
1069+ var result = controller . AtomFeed ( "Foo" , includePrerelease ) ;
1070+
1071+ // Assert
1072+ if ( includePrerelease )
1073+ {
1074+ Assert . IsType < SyndicationAtomActionResult > ( result ) ;
1075+ }
1076+ else
1077+ {
1078+ ResultAssert . IsNotFound ( result ) ;
1079+ }
1080+ }
1081+
9691082 [ Fact ]
9701083 public void GivenAExistentPackageWithListedUnavailablePackagesIt404s ( )
9711084 {
@@ -1034,8 +1147,9 @@ public void GivenAExistentPackageWithListedAvailablePackagesItReturnsSyndication
10341147 {
10351148 Listed = true ,
10361149 PackageStatusKey = PackageStatus . Available ,
1037- NormalizedVersion = "2.0.0" ,
1038- Version = "2.0.0" ,
1150+ NormalizedVersion = "2.0.0-beta" ,
1151+ Version = "2.0.0-beta" ,
1152+ IsPrerelease = true ,
10391153 Description = "Most recent version: Test Package" ,
10401154 Created = dateTimeYesterDay ,
10411155 PackageRegistration = new PackageRegistration ( )
@@ -1078,8 +1192,8 @@ public void GivenAExistentPackageWithListedAvailablePackagesItReturnsSyndication
10781192
10791193 Assert . Equal ( 3 , syndicationFeedItems . Count ) ;
10801194
1081- Assert . Equal ( "https://localhost/packages/Foo/2.0.0" , syndicationFeedItems [ 0 ] . Id ) ;
1082- Assert . Equal ( "Foo 2.0.0" , syndicationFeedItems [ 0 ] . Title . Text ) ;
1195+ Assert . Equal ( "https://localhost/packages/Foo/2.0.0-beta " , syndicationFeedItems [ 0 ] . Id ) ;
1196+ Assert . Equal ( "Foo 2.0.0-beta " , syndicationFeedItems [ 0 ] . Title . Text ) ;
10831197 Assert . Equal ( "Most recent version: Test Package" , ( syndicationFeedItems [ 0 ] . Content as System . ServiceModel . Syndication . TextSyndicationContent ) . Text ) ;
10841198 Assert . Equal ( dateTimeYesterDay , syndicationFeedItems [ 0 ] . PublishDate ) ;
10851199 Assert . Equal ( dateTimeYesterDay , syndicationFeedItems [ 0 ] . LastUpdatedTime ) ;
0 commit comments