Skip to content

Commit

Permalink
FIXED: #1492, should not see or install unlisted packages
Browse files Browse the repository at this point in the history
  • Loading branch information
Xiaomin Wu committed Mar 10, 2015
1 parent 1c76add commit a0ec7ad
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Kudu.Core/SiteExtensions/FeedExtensions.cs
Expand Up @@ -42,7 +42,7 @@ public static async Task<UIPackageMetadata> GetLatestPackageById(this SourceRepo
{
UIPackageMetadata latestPackage = null;
var metadataResource = await srcRepo.GetResourceAsync<UIMetadataResource>();
IEnumerable<UIPackageMetadata> packages = await metadataResource.GetMetadata(packageId, true, true, CancellationToken.None);
IEnumerable<UIPackageMetadata> packages = await metadataResource.GetMetadata(packageId, includePrerelease: true, includeUnlisted: false, token: CancellationToken.None);
foreach (var p in packages)
{
if (latestPackage == null ||
Expand All @@ -61,7 +61,7 @@ public static async Task<UIPackageMetadata> GetLatestPackageById(this SourceRepo
public static async Task<UIPackageMetadata> GetPackageByIdentity(this SourceRepository srcRepo, string packageId, string version)
{
var metadataResource = await srcRepo.GetResourceAsync<UIMetadataResource>();
IEnumerable<UIPackageMetadata> packages = await metadataResource.GetMetadata(packageId, true, true, CancellationToken.None);
IEnumerable<UIPackageMetadata> packages = await metadataResource.GetMetadata(packageId, includePrerelease: true, includeUnlisted: false, token: CancellationToken.None);
NuGetVersion expectedVersion = NuGetVersion.Parse(version);
return packages.FirstOrDefault((p) =>
{
Expand Down
51 changes: 51 additions & 0 deletions Kudu.FunctionalTests/SiteExtensionApiFacts.cs
Expand Up @@ -490,6 +490,57 @@ public async Task SiteExtensionParallelInstallationTest(string feedEndpoint, str
});
}

[Fact]
public async Task SiteExtensionShouldNotSeeUnlistPackage()
{
const string appName = "SiteExtensionShouldNotSeeUnlistPackage";
const string externalPackageId = "SimpleSite";
const string unlistedVersion = "3.0.0";
const string externalFeed = "https://www.myget.org/F/simplesvc/";

await ApplicationManager.RunAsync(appName, async appManager =>
{
var manager = appManager.SiteExtensionManager;
HttpResponseMessage response = await manager.GetRemoteExtension(externalPackageId, feedUrl: externalFeed);
SiteExtensionInfo info = await response.Content.ReadAsAsync<SiteExtensionInfo>();
Assert.NotEqual(unlistedVersion, info.Version);
var ex = await KuduAssert.ThrowsUnwrappedAsync<HttpUnsuccessfulRequestException>(async () =>
{
await manager.GetRemoteExtension(externalPackageId, version: unlistedVersion, feedUrl: externalFeed);
});
Assert.Equal(HttpStatusCode.NotFound, ex.ResponseMessage.StatusCode);
response = await manager.GetRemoteExtensions(externalPackageId, allowPrereleaseVersions: true, feedUrl: externalFeed);
List<SiteExtensionInfo> infos = await response.Content.ReadAsAsync<List<SiteExtensionInfo>>();
Assert.NotEmpty(infos);
foreach (var item in infos)
{
Assert.NotEqual(unlistedVersion, item.Version);
}
UpdateHeaderIfGoingToBeArmRequest(manager.Client, isArmRequest: true);
response = await manager.GetRemoteExtension(externalPackageId, feedUrl: externalFeed);
ArmEntry<SiteExtensionInfo> armInfo = await response.Content.ReadAsAsync<ArmEntry<SiteExtensionInfo>>();
Assert.NotEqual(unlistedVersion, armInfo.Properties.Version);
ex = await KuduAssert.ThrowsUnwrappedAsync<HttpUnsuccessfulRequestException>(async () =>
{
await manager.GetRemoteExtension(externalPackageId, version: unlistedVersion, feedUrl: externalFeed);
});
Assert.Equal(HttpStatusCode.NotFound, ex.ResponseMessage.StatusCode);
response = await manager.GetRemoteExtensions(externalPackageId, allowPrereleaseVersions: true, feedUrl: externalFeed);
ArmListEntry<SiteExtensionInfo> armInfos = await response.Content.ReadAsAsync<ArmListEntry<SiteExtensionInfo>>();
Assert.NotEmpty(armInfos.Value);
foreach (var item in armInfos.Value)
{
Assert.NotEqual(unlistedVersion, item.Properties.Version);
}
});
}

private async Task<HttpResponseMessage> PollAndVerifyAfterArmInstallation(RemoteSiteExtensionManager manager, string packageId)
{
TestTracer.Trace("Polling for status for '{0}'", packageId);
Expand Down

0 comments on commit a0ec7ad

Please sign in to comment.