winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

FindPackagesInterop.cs (11874B)


      1 // -----------------------------------------------------------------------------
      2 // <copyright file="FindPackagesInterop.cs" company="Microsoft Corporation">
      3 //     Copyright (c) Microsoft Corporation. Licensed under the MIT License.
      4 // </copyright>
      5 // -----------------------------------------------------------------------------
      6 
      7 namespace AppInstallerCLIE2ETests.Interop
      8 {
      9     using System;
     10     using Microsoft.Management.Deployment;
     11     using Microsoft.Management.Deployment.Projection;
     12     using NUnit.Framework;
     13 
     14     /// <summary>
     15     /// Test find package interop.
     16     /// </summary>
     17     [TestFixtureSource(typeof(InstanceInitializersSource), nameof(InstanceInitializersSource.InProcess), Category = nameof(InstanceInitializersSource.InProcess))]
     18     [TestFixtureSource(typeof(InstanceInitializersSource), nameof(InstanceInitializersSource.OutOfProcess), Category = nameof(InstanceInitializersSource.OutOfProcess))]
     19     public class FindPackagesInterop : BaseInterop
     20     {
     21         private PackageManager packageManager;
     22         private PackageCatalogReference testSource;
     23 
     24         /// <summary>
     25         /// Initializes a new instance of the <see cref="FindPackagesInterop"/> class.
     26         /// </summary>
     27         /// <param name="initializer">Initializer.</param>
     28         public FindPackagesInterop(IInstanceInitializer initializer)
     29             : base(initializer)
     30         {
     31         }
     32 
     33         /// <summary>
     34         /// Set up.
     35         /// </summary>
     36         [SetUp]
     37         public void SetUp()
     38         {
     39             this.packageManager = this.TestFactory.CreatePackageManager();
     40             this.testSource = this.packageManager.GetPackageCatalogByName(Constants.TestSourceName);
     41         }
     42 
     43         /// <summary>
     44         /// Test find package. no package.
     45         /// </summary>
     46         [Test]
     47         public void FindPackageDoesNotExist()
     48         {
     49             // Find package
     50             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "DoesNotExist");
     51 
     52             // Assert
     53             Assert.AreEqual(0, searchResult.Count);
     54         }
     55 
     56         /// <summary>
     57         /// Test find package with multiple match.
     58         /// </summary>
     59         [Test]
     60         public void FindPackagesMultipleMatchingQuery()
     61         {
     62             // Find package
     63             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Name, PackageFieldMatchOption.Equals, "TestExeInstaller");
     64 
     65             // Assert
     66             Assert.AreEqual(2, searchResult.Count);
     67         }
     68 
     69         /// <summary>
     70         /// Test to find a package and verify the CatalogPackageMetadata COM output.
     71         /// </summary>
     72         [Test]
     73         public void FindPackagesVerifyDefaultLocaleFields()
     74         {
     75             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "AppInstallerTest.CatalogPackageMetadata");
     76 
     77             Assert.AreEqual(1, searchResult.Count);
     78 
     79             var catalogPackage = searchResult[0].CatalogPackage;
     80             var packageVersionId = catalogPackage.AvailableVersions[0];
     81             var packageVersionInfo = catalogPackage.GetPackageVersionInfo(packageVersionId);
     82             var catalogPackageMetadata = packageVersionInfo.GetCatalogPackageMetadata();
     83 
     84             Assert.AreEqual("testAuthor", catalogPackageMetadata.Author);
     85             Assert.AreEqual("AppInstallerTest", catalogPackageMetadata.Publisher);
     86             Assert.AreEqual("https://testPublisherUrl.com", catalogPackageMetadata.PublisherUrl);
     87             Assert.AreEqual("https://testPublisherSupportUrl.com", catalogPackageMetadata.PublisherSupportUrl);
     88             Assert.AreEqual("https://testPrivacyUrl.com", catalogPackageMetadata.PrivacyUrl);
     89 
     90             Assert.AreEqual("https://testPackageUrl.com", catalogPackageMetadata.PackageUrl);
     91             Assert.AreEqual("testLicense", catalogPackageMetadata.License);
     92             Assert.AreEqual("https://testLicenseUrl.com", catalogPackageMetadata.LicenseUrl);
     93             Assert.AreEqual("testCopyright", catalogPackageMetadata.Copyright);
     94             Assert.AreEqual("https://testCopyrightUrl.com", catalogPackageMetadata.CopyrightUrl);
     95             Assert.AreEqual("testDescription", catalogPackageMetadata.Description);
     96             Assert.AreEqual("testShortDescription", catalogPackageMetadata.ShortDescription);
     97             Assert.AreEqual("https://testPurchaseUrl.com", catalogPackageMetadata.PurchaseUrl);
     98 
     99             var tags = catalogPackageMetadata.Tags;
    100             Assert.AreEqual(2, tags.Count);
    101             Assert.AreEqual("tag1", tags[0]);
    102             Assert.AreEqual("tag2", tags[1]);
    103             Assert.AreEqual("testReleaseNotes", catalogPackageMetadata.ReleaseNotes);
    104             Assert.AreEqual("https://testReleaseNotes.net", catalogPackageMetadata.ReleaseNotesUrl);
    105             Assert.AreEqual("testInstallationNotes", catalogPackageMetadata.InstallationNotes);
    106 
    107             var packageAgreements = catalogPackageMetadata.Agreements;
    108             Assert.AreEqual(1, packageAgreements.Count);
    109 
    110             var agreement = packageAgreements[0];
    111             Assert.AreEqual("testAgreementLabel", agreement.Label);
    112             Assert.AreEqual("testAgreementText", agreement.Text);
    113             Assert.AreEqual("https://testAgreementUrl.net", agreement.Url);
    114 
    115             var documentations = catalogPackageMetadata.Documentations;
    116             Assert.AreEqual(1, documentations.Count);
    117 
    118             var documentation = documentations[0];
    119             Assert.AreEqual("testDocumentLabel", documentation.DocumentLabel);
    120             Assert.AreEqual("https://testDocumentUrl.com", documentation.DocumentUrl);
    121 
    122             var icons = catalogPackageMetadata.Icons;
    123             Assert.AreEqual(1, icons.Count);
    124 
    125             var icon = icons[0];
    126             Assert.AreEqual("https://testIcon", icon.Url);
    127             Assert.AreEqual(IconFileType.Ico, icon.FileType);
    128             Assert.AreEqual(IconTheme.Default, icon.Theme);
    129             Assert.AreEqual(IconResolution.Custom, icon.Resolution);
    130             Assert.AreEqual(Convert.FromHexString("69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8123"), icon.Sha256);
    131         }
    132 
    133         /// <summary>
    134         /// Verifies that an exception is thrown if the provided locale string is invalid.
    135         /// </summary>
    136         [Test]
    137         public void FindPackagesInvalidLocale()
    138         {
    139             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "AppInstallerTest.CatalogPackageMetadata");
    140             var catalogPackage = searchResult[0].CatalogPackage;
    141             var packageVersionId = catalogPackage.AvailableVersions[0];
    142             var packageVersionInfo = catalogPackage.GetPackageVersionInfo(packageVersionId);
    143             Assert.Throws<System.ArgumentException>(() => packageVersionInfo.GetCatalogPackageMetadata("badLocale"));
    144         }
    145 
    146         /// <summary>
    147         /// Verifies that the correct CatalogPackageMetadata is exposed when specifying a locale.
    148         /// </summary>
    149         [Test]
    150         public void FindPackagesGetCatalogPackageMetadataLocale()
    151         {
    152             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "AppInstallerTest.MultipleLocale");
    153             Assert.AreEqual(1, searchResult.Count);
    154 
    155             var catalogPackage = searchResult[0].CatalogPackage;
    156             var packageVersionId = catalogPackage.AvailableVersions[0];
    157             var packageVersionInfo = catalogPackage.GetPackageVersionInfo(packageVersionId);
    158             var catalogPackageMetadata = packageVersionInfo.GetCatalogPackageMetadata("zh-CN");
    159 
    160             Assert.AreEqual("zh-CN", catalogPackageMetadata.Locale);
    161             Assert.AreEqual("localeLicense", catalogPackageMetadata.License);
    162             Assert.AreEqual("localePackageName", catalogPackageMetadata.PackageName);
    163             Assert.AreEqual("localePublisher", catalogPackageMetadata.Publisher);
    164             Assert.AreEqual("localeReleaseNotes", catalogPackageMetadata.ReleaseNotes);
    165             Assert.AreEqual("https://localeReleaseNotesUrl.com", catalogPackageMetadata.ReleaseNotesUrl);
    166             Assert.AreEqual("https://localePurchaseUrl.com", catalogPackageMetadata.PurchaseUrl);
    167 
    168             var tags = catalogPackageMetadata.Tags;
    169             Assert.AreEqual(2, tags.Count);
    170             Assert.AreEqual("tag1", tags[0]);
    171             Assert.AreEqual("tag2", tags[1]);
    172 
    173             var packageAgreements = catalogPackageMetadata.Agreements;
    174             Assert.AreEqual(1, packageAgreements.Count);
    175 
    176             var agreement = packageAgreements[0];
    177             Assert.AreEqual("localeAgreementLabel", agreement.Label);
    178             Assert.AreEqual("localeAgreement", agreement.Text);
    179             Assert.AreEqual("https://localeAgreementUrl.net", agreement.Url);
    180 
    181             var documentations = catalogPackageMetadata.Documentations;
    182             Assert.AreEqual(1, documentations.Count);
    183 
    184             var documentation = documentations[0];
    185             Assert.AreEqual("localeDocumentLabel", documentation.DocumentLabel);
    186             Assert.AreEqual("https://localeDocumentUrl.com", documentation.DocumentUrl);
    187 
    188             var icons = catalogPackageMetadata.Icons;
    189             Assert.AreEqual(1, icons.Count);
    190 
    191             var icon = icons[0];
    192             Assert.AreEqual("https://localeTestIcon", icon.Url);
    193             Assert.AreEqual(IconFileType.Png, icon.FileType);
    194             Assert.AreEqual(IconTheme.Light, icon.Theme);
    195             Assert.AreEqual(IconResolution.Square32, icon.Resolution);
    196             Assert.AreEqual(Convert.FromHexString("69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8321"), icon.Sha256);
    197         }
    198 
    199         /// <summary>
    200         /// Verifies that GetCatalogPackageMetadata returns the correct metadata based on the specified locale.
    201         /// </summary>
    202         [Test]
    203         public void FindPackagesGetAllCatalogPackageMetadata()
    204         {
    205             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "AppInstallerTest.MultipleLocale");
    206             Assert.AreEqual(1, searchResult.Count);
    207 
    208             var catalogPackage = searchResult[0].CatalogPackage;
    209             var packageVersionId = catalogPackage.AvailableVersions[0];
    210             var packageVersionInfo = catalogPackage.GetPackageVersionInfo(packageVersionId);
    211 
    212             var catalogPackageMetadata1 = packageVersionInfo.GetCatalogPackageMetadata("zh-CN");
    213             Assert.AreEqual("zh-CN", catalogPackageMetadata1.Locale);
    214 
    215             var catalogPackageMetadata2 = packageVersionInfo.GetCatalogPackageMetadata("en-GB");
    216             Assert.AreEqual("en-GB", catalogPackageMetadata2.Locale);
    217             Assert.AreEqual("packageNameUK", catalogPackageMetadata2.PackageName);
    218         }
    219 
    220         /// <summary>
    221         /// Verifies that GetCatalogPackageMetadata returns the correct metadata based on the specified locale.
    222         /// </summary>
    223         [Test]
    224         public void FindPackagesGetVersionMetadata()
    225         {
    226             var searchResult = this.FindAllPackages(this.testSource, PackageMatchField.Id, PackageFieldMatchOption.Equals, "AppInstallerTest.MultipleLocale");
    227             Assert.AreEqual(1, searchResult.Count);
    228 
    229             var catalogPackage = searchResult[0].CatalogPackage;
    230             var packageVersionId = catalogPackage.AvailableVersions[0];
    231             var packageVersionInfo = catalogPackage.GetPackageVersionInfo(packageVersionId);
    232 
    233             string metadata = packageVersionInfo.GetMetadata(PackageVersionMetadataField.SilentUninstallCommand);
    234             Assert.IsEmpty(metadata);
    235         }
    236     }
    237 }