public async Task SiteExtensionShouldNotSeeButAbleToInstallUnlistedPackage() { const string appName = "SiteExtensionShouldNotSeeUnlistPackage"; const string externalPackageId = "SimpleSite"; const string unlistedVersion = "3.0.0"; const string latestListedVersion = "2.0.0"; const string externalFeed = "https://www.myget.org/F/simplesvc/"; await ApplicationManager.RunAsync(appName, async appManager => { var manager = appManager.SiteExtensionManager; await CleanSiteExtensions(manager); HttpResponseMessage response = await manager.GetRemoteExtension(externalPackageId, feedUrl: externalFeed); SiteExtensionInfo info = await response.Content.ReadAsAsync <SiteExtensionInfo>(); Assert.NotEqual(unlistedVersion, info.Version); response = await manager.GetRemoteExtension(externalPackageId, version: unlistedVersion, feedUrl: externalFeed); info = await response.Content.ReadAsAsync <SiteExtensionInfo>(); Assert.Equal(unlistedVersion, info.Version); 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); } response = await manager.InstallExtension(externalPackageId, feedUrl: externalFeed); info = await response.Content.ReadAsAsync <SiteExtensionInfo>(); Assert.Equal(externalPackageId, info.Id); Assert.Equal(latestListedVersion, info.Version); Assert.Equal(externalFeed, info.FeedUrl); TestTracer.Trace("Should able to installed unlisted package if specify version"); response = await manager.InstallExtension(externalPackageId, version: unlistedVersion, feedUrl: externalFeed); info = await response.Content.ReadAsAsync <SiteExtensionInfo>(); Assert.Equal(externalPackageId, info.Id); Assert.Equal(unlistedVersion, info.Version); Assert.Equal(externalFeed, info.FeedUrl); 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); 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); } response = await manager.InstallExtension(externalPackageId, feedUrl: externalFeed); Assert.Equal(HttpStatusCode.Created, response.StatusCode); await PollAndVerifyAfterArmInstallation(manager, externalPackageId); response = await manager.GetLocalExtension(externalPackageId); armInfo = await response.Content.ReadAsAsync <ArmEntry <SiteExtensionInfo> >(); Assert.Equal(externalPackageId, armInfo.Properties.Id); Assert.Equal(latestListedVersion, armInfo.Properties.Version); Assert.Equal(externalFeed, armInfo.Properties.FeedUrl); response = await manager.InstallExtension(externalPackageId, version: unlistedVersion, feedUrl: externalFeed); Assert.Equal(HttpStatusCode.Created, response.StatusCode); await PollAndVerifyAfterArmInstallation(manager, externalPackageId); response = await manager.GetLocalExtension(externalPackageId); armInfo = await response.Content.ReadAsAsync <ArmEntry <SiteExtensionInfo> >(); Assert.Equal(externalPackageId, armInfo.Properties.Id); Assert.Equal(unlistedVersion, armInfo.Properties.Version); Assert.Equal(externalFeed, armInfo.Properties.FeedUrl); }); }
public async Task SiteExtensionGetArmTest() { const string appName = "SiteExtensionGetAsyncTest"; const string externalPackageId = "filecounter"; const string externalFeed = "https://api.nuget.org/v3/index.json"; const string installationArgument = "arg0"; await ApplicationManager.RunAsync(appName, async appManager => { var manager = appManager.SiteExtensionManager; await CleanSiteExtensions(manager); UpdateHeaderIfGoingToBeArmRequest(manager.Client, true); TestTracer.Trace("GetRemoteExtensions with Arm header, expecting site extension info will be wrap inside Arm envelop"); HttpResponseMessage responseMessage = await manager.GetRemoteExtensions(externalPackageId, true, externalFeed); ArmListEntry <SiteExtensionInfo> armResultList = await responseMessage.Content.ReadAsAsync <ArmListEntry <SiteExtensionInfo> >(); Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode); Assert.NotNull(armResultList); Assert.NotEmpty(armResultList.Value); Assert.NotNull(armResultList.Value.Where(item => string.Equals(externalPackageId, item.Properties.Id, StringComparison.OrdinalIgnoreCase))); Assert.True(responseMessage.Headers.Contains(Constants.RequestIdHeader)); TestTracer.Trace("GetRemoteExtension with Arm header, expecting site extension info will be wrap inside Arm envelop"); responseMessage = await manager.GetRemoteExtension(externalPackageId, feedUrl: externalFeed); ArmEntry <SiteExtensionInfo> armResult = await responseMessage.Content.ReadAsAsync <ArmEntry <SiteExtensionInfo> >(); Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode); Assert.NotNull(armResult); Assert.Equal(externalPackageId, armResult.Properties.Id); Assert.True(responseMessage.Headers.Contains(Constants.RequestIdHeader)); UpdateHeaderIfGoingToBeArmRequest(manager.Client, false); responseMessage = await manager.InstallExtension(externalPackageId, feedUrl: externalFeed, installationArgs: installationArgument); SiteExtensionInfo syncResult = await responseMessage.Content.ReadAsAsync <SiteExtensionInfo>(); Assert.Equal(externalPackageId, syncResult.Id); Assert.True(responseMessage.Headers.Contains(Constants.RequestIdHeader)); UpdateHeaderIfGoingToBeArmRequest(manager.Client, true); TestTracer.Trace("GetLocalExtensions (no filter) with Arm header, expecting site extension info will be wrap inside Arm envelop"); responseMessage = await manager.GetLocalExtensions(); armResultList = await responseMessage.Content.ReadAsAsync <ArmListEntry <SiteExtensionInfo> >(); Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode); Assert.NotNull(armResultList); Assert.NotEmpty(armResultList.Value); Assert.NotNull(armResultList.Value.Where(item => string.Equals(externalPackageId, item.Properties.Id, StringComparison.OrdinalIgnoreCase))); Assert.Equal(Constants.SiteExtensionProvisioningStateSucceeded, armResultList.Value.First <ArmEntry <SiteExtensionInfo> >().Properties.ProvisioningState); Assert.True(responseMessage.Headers.Contains(Constants.RequestIdHeader)); foreach (var item in armResultList.Value) { Assert.Equal(Constants.SiteExtensionProvisioningStateSucceeded, item.Properties.ProvisioningState); Assert.Equal(installationArgument, item.Properties.InstallationArgs); } TestTracer.Trace("GetLocalExtensions (with filter) with Arm header, expecting site extension info will be wrap inside Arm envelop"); responseMessage = await manager.GetLocalExtensions(externalPackageId); armResultList = await responseMessage.Content.ReadAsAsync <ArmListEntry <SiteExtensionInfo> >(); Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode); Assert.NotNull(armResultList); Assert.NotEmpty(armResultList.Value); Assert.NotNull(armResultList.Value.Where(item => string.Equals(externalPackageId, item.Properties.Id, StringComparison.OrdinalIgnoreCase))); Assert.True(responseMessage.Headers.Contains(Constants.RequestIdHeader)); foreach (var item in armResultList.Value) { Assert.Equal(Constants.SiteExtensionProvisioningStateSucceeded, item.Properties.ProvisioningState); Assert.Equal(installationArgument, item.Properties.InstallationArgs); } }); }