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 }