public void GetRemotePackagesTest() { // Arrange var siteRoot = "x:\\"; var localRepository = new MockPackageRepository(); var sourceRepository = new MockServiceBasePackageRepository(); var projectSystem = new WebProjectSystem(siteRoot); var pathResolver = new DefaultPackagePathResolver(projectSystem); var projectManager = new ProjectManager(sourceRepository, pathResolver, projectSystem, localRepository); var net40 = new FrameworkName(".NETFramework", new Version("4.0.0.0")); var net45 = new FrameworkName(".NETFramework", new Version("4.5.0.0")); IPackage packageA = PackageFactory.Create("A", new Version("1.0"), null, new FrameworkName[] { net40 }); IPackage packageB = PackageFactory.Create("B", new Version("1.0"), null, new FrameworkName[] { net45 }); IPackage packageC = PackageFactory.Create("C", new Version("1.0")); sourceRepository.AddPackage(packageA); sourceRepository.AddPackage(packageB); sourceRepository.AddPackage(packageC); // NOTE THAT target framework used by WebProjectManager would be .NETFramework, Version=4.0.0.0 var webProjectManager = new WebProjectManager(projectManager, siteRoot); // Act var packages = webProjectManager.GetRemotePackages(null, false).ToList(); // Assert Assert.Equal(2, packages.Count); Assert.Equal(packageA, packages[0]); Assert.Equal(packageC, packages[1]); }
public void SourceWithPackages() { using (var thread = new TemporaryDispatcherThread()) { var feedSource = new FeedSource("http://1.com", "source1"); var feedSourceStore = new InMemoryFeedSourceStore(feedSource); var packageSourcesViewModel = new PackageSourcesViewModel(new PackageSourcesModel(feedSource, feedSourceStore)); var packageManager = new InMemoryPackageManager(); packageManager.RemotePackages.Add(PackageFactory.Create("package1")); NuGetViewModel viewModel = null; thread.Dispatcher.Invoke((Action)(() => { viewModel = new NuGetViewModel( this.Descriptor.Object, this.Host.Object, packageSourcesViewModel, (uri, site) => packageManager, this.ReadonlyDestination, thread.Scheduler); })); viewModel.WaitUntilComplete(); Assert.True(viewModel.Filters.Any(f => f.Count > 0), "One of the filters should have some items"); } }
public void UpdateAllPackagesFromUpdates() { using (var thread = new TemporaryDispatcherThread()) { var installed1 = PackageFactory.Create("update1", new Version(1, 0)); var installed2 = PackageFactory.Create("update2", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed1); this.PackageManager.InstalledPackages.Add(installed2); var remote1 = PackageFactory.Create("update1", new Version(2, 0)); var remote2 = PackageFactory.Create("update2", new Version(2, 0)); this.PackageManager.RemotePackages.Add(remote1); this.PackageManager.RemotePackages.Add(remote2); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Updated, installed1.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.UpdateAllButton, PackageViewModelAction.UpdateAll); Assert.True(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should be shown."); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.UpdateAll, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.AcceptButton); var installedPackages = this.PackageManager.InstalledPackages.ToArray(); Assert.Equal(remote1, installedPackages[0]); Assert.Equal(remote2, installedPackages[1]); } }
public void DeclineEula() { using (var thread = new TemporaryDispatcherThread()) { var package = PackageFactory.Create("install"); this.PackageManager.RemotePackages.Add(package); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_All, package.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.InstallButton, PackageViewModelAction.InstallOrUninstall); Assert.True(buttonBarViewModel.NuGetViewModel.IsDetailsPaneVisible, "The details page should be shown."); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.InstallOrUninstall, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.YesButton); Assert.True(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should be shown."); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.DeclineButton); Assert.False(buttonBarViewModel.NuGetViewModel.IsDetailsPaneVisible, "The details page should not be shown."); Assert.False(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should not be shown."); Assert.False(this.PackageManager.InstalledPackages.Any(), "Nothing should be installed."); } }
public void UpdatePackageFromInstalled() { using (var thread = new TemporaryDispatcherThread()) { var installed = PackageFactory.Create("update", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed); var remote = PackageFactory.Create("update", new Version(2, 0)); this.PackageManager.RemotePackages.Add(remote); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, installed.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.UpdateButton, PackageViewModelAction.Update); Assert.True(buttonBarViewModel.NuGetViewModel.IsDetailsPaneVisible, "The details page should be shown."); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.Update, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.YesButton); Assert.True(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should be shown."); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.AcceptButton); var installedPackage = this.PackageManager.InstalledPackages.FirstOrDefault(); Assert.Equal(remote, installedPackage); } }
private void PackageKeyTest() { CipherDescription cd1 = new CipherDescription( SymmetricEngines.RHX, 192, IVSizes.V128, CipherModes.CTR, PaddingModes.None, BlockSizes.B128, RoundCounts.R22); CSPPrng rnd = new CSPPrng(); byte[] di = new byte[16]; byte[] oi = new byte[16]; byte[] pi = new byte[16]; byte[] pd = new byte[32]; byte[] ti = new byte[16]; rnd.GetBytes(di); rnd.GetBytes(oi); rnd.GetBytes(pi); rnd.GetBytes(pd); rnd.GetBytes(ti); KeyAuthority ka1 = new KeyAuthority(di, oi, pi, pd, KeyPolicies.IdentityRestrict | KeyPolicies.NoExport | KeyPolicies.NoNarrative, 1, ti); MemoryStream mk = new MemoryStream(); PackageKey pk1 = new PackageKey(ka1, cd1, 100); PackageFactory pf = new PackageFactory(mk, ka1); pf.Create(pk1); byte[] bpk = pk1.ToBytes(); PackageKey pk2 = new PackageKey(bpk); if (!pk1.Equals(pk2)) { throw new Exception("KeyFactoryTest: PackageKey serialization has failed!"); } PackageKey pk3 = new PackageKey(mk); if (!pk1.Equals(pk3)) { throw new Exception("KeyFactoryTest: PackageKey serialization has failed!"); } if (pk1.GetHashCode() != pk2.GetHashCode() || pk1.GetHashCode() != pk3.GetHashCode()) { throw new Exception("KeyFactoryTest: PackageKey hash code test has failed!"); } pf.Dispose(); }
public void UpdateAllPackagesFromUpdatesAndInstallAnotherPackage() { using (var thread = new TemporaryDispatcherThread()) { var installed1 = PackageFactory.Create("update1", new Version(1, 0)); var installed2 = PackageFactory.Create("update2", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed1); this.PackageManager.InstalledPackages.Add(installed2); var remote1 = PackageFactory.Create("update1", new Version(2, 0)); var remote2 = PackageFactory.Create("update2", new Version(2, 0)); var remote3 = PackageFactory.Create("install1", new Version(1, 0)); this.PackageManager.RemotePackages.Add(remote1); this.PackageManager.RemotePackages.Add(remote2); this.PackageManager.RemotePackages.Add(remote3); // Perform UpdateAll now ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Updated, installed1.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.UpdateAllButton, PackageViewModelAction.UpdateAll); Assert.True(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should be shown."); Assert.True(buttonBarViewModel.NuGetViewModel.IsUpdatingAll, "Updating all should be true"); Assert.False(buttonBarViewModel.NuGetViewModel.NotUpdatingAll, "Not Updating all should be false"); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.UpdateAll, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.AcceptButton); // Perform Install Now this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_All, remote3.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.InstallButton, PackageViewModelAction.InstallOrUninstall); Assert.True(buttonBarViewModel.NuGetViewModel.IsDetailsPaneVisible, "The details page should be shown."); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.InstallOrUninstall, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.YesButton); Assert.True(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should be shown."); Assert.False(buttonBarViewModel.NuGetViewModel.IsUpdatingAll, "Updating all should be false"); Assert.True(buttonBarViewModel.NuGetViewModel.NotUpdatingAll, "Not Updating all should be true"); Assert.Equal <PackageViewModelAction>(PackageViewModelAction.InstallOrUninstall, buttonBarViewModel.NuGetViewModel.PackageAction); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.AcceptButton); var installedPackages = this.PackageManager.InstalledPackages.ToArray(); Assert.Equal(remote1, installedPackages[0]); Assert.Equal(remote2, installedPackages[1]); Assert.Equal(remote3, installedPackages[2]); } }
public void SelectAnotherSourceHidesDetails() { using (var thread = new TemporaryDispatcherThread()) { var feedSource1 = new FeedSource("http://1.com", "source1"); var feedSource2 = new FeedSource("http://2.com", "source2"); var sources = new FeedSource[] { feedSource1, feedSource2 }; var feedSourceStore = new InMemoryFeedSourceStore(feedSource1, sources); var packageSourcesViewModel = new PackageSourcesViewModel(new PackageSourcesModel(feedSource1, feedSourceStore)); var packageManager = new InMemoryPackageManager(); packageManager.RemotePackages.Add(PackageFactory.Create("select me")); NuGetViewModel viewModel = null; thread.Dispatcher.Invoke((Action)(() => { viewModel = new NuGetViewModel( this.Descriptor.Object, this.Host.Object, packageSourcesViewModel, (uri, site) => packageManager, this.ReadonlyDestination, thread.Scheduler); })); viewModel.WaitUntilComplete(); Assert.Equal <FeedSource>(feedSource1, viewModel.SelectedFeedSource); var firstFilter = viewModel.Filters[0]; var itemToSelect = firstFilter.FilteredItems.OfType <object>().First(); thread.Invoke(() => { viewModel.SelectedItem = itemToSelect; // show the details page viewModel.IsDetailsPaneVisible = true; }); thread.Dispatcher.Invoke((Action)(() => { viewModel.SelectedFeedSourceItem = feedSource2; })); viewModel.WaitUntilComplete(); Assert.Equal <FeedSource>(feedSource2, viewModel.SelectedFeedSource); Assert.False(viewModel.IsDetailsPaneVisible, "The details pane should be hidden now."); } }
public void InstalledPackageSelectedInstalledFilter() { using (var thread = new TemporaryDispatcherThread()) { var package = PackageFactory.Create("installed"); this.PackageManager.InstalledPackages.Add(package); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, package.Id); Assert.Equal( new ButtonViewModel[] { buttonBarViewModel.UninstallButton, buttonBarViewModel.CloseButton }, buttonBarViewModel.ActionButtons); } }
public void SelectMandatoryPackage() { using (var thread = new TemporaryDispatcherThread()) { this.PackageManager.SupportsEnableDisable = true; var installed = PackageFactory.Create("WebMatrixExtensionsGallery", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, installed.Id); Assert.False(buttonBarViewModel.NuGetViewModel.UninstallCommand.CanExecute(null), "The uninstall command should be disabled"); Assert.True(buttonBarViewModel.NuGetViewModel.DisableCommand.CanExecute(null), "The disable command should be enabled"); } }
public void UpdateAllNotShownWhenOnly1PackageHasUpdates() { using (var thread = new TemporaryDispatcherThread()) { var installedPackage1 = PackageFactory.Create("update1", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installedPackage1); var remotePackage1 = PackageFactory.Create("update1", new Version(2, 0)); this.PackageManager.RemotePackages.Add(remotePackage1); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Updated, installedPackage1.Id); Assert.False(buttonBarViewModel.ActionButtons.Contains(buttonBarViewModel.UpdateAllButton)); Assert.True(buttonBarViewModel.ActionButtons.Contains(buttonBarViewModel.UpdateButton)); } }
public void DisablablePackageSelected() { using (var thread = new TemporaryDispatcherThread()) { this.PackageManager.SupportsEnableDisable = true; var installedPackage = PackageFactory.Create("disable", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installedPackage); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, installedPackage.Id); Assert.Equal( new ButtonViewModel[] { buttonBarViewModel.DisableButton, buttonBarViewModel.UninstallButton, buttonBarViewModel.CloseButton }, buttonBarViewModel.ActionButtons); } }
public void UninstallPackageFromInstalled() { using (var thread = new TemporaryDispatcherThread()) { var package = PackageFactory.Create("uninstall"); this.PackageManager.InstalledPackages.Add(package); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, package.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.UninstallButton); Assert.True(buttonBarViewModel.NuGetViewModel.IsUninstallPageVisible, "The uninstall page should be shown."); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.YesButton); Assert.False(this.PackageManager.InstalledPackages.Any(), "The package should be uninstalled"); } }
public void UpdatablePackageSelectedUpdatesFilter() { using (var thread = new TemporaryDispatcherThread()) { var installedPackage = PackageFactory.Create("update", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installedPackage); var remotePackage = PackageFactory.Create("update", new Version(2, 0)); this.PackageManager.RemotePackages.Add(remotePackage); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Updated, installedPackage.Id); Assert.Equal( new ButtonViewModel[] { buttonBarViewModel.UpdateButton, buttonBarViewModel.UninstallButton, buttonBarViewModel.CloseButton }, buttonBarViewModel.ActionButtons); } }
public async Task <CreatePackageResponse> Handle(string projectId, int componentId, CreatePackageRequest request) { var componentExists = await _dbContext .Components .FromProject(projectId) .WithId(componentId) .AnyAsync(); if (!componentExists) { throw new InvalidOperationException( $"Component {componentId} in project {projectId} doesn't exist." ); } var deploymentProcessId = await GetDeploymentProcess(componentId, request.DeploymentProcessId); var lastPackage = await GetLastPackage(projectId, componentId); var mappedVariables = MapVariables(request.VariableUpdates); var updatedVariables = UpdateExistingValues(lastPackage.Variables.Variables, mappedVariables); var newPackage = await _packageFactory.Create( projectId : projectId, deploymentProcessId : deploymentProcessId, componentId : componentId, description : request.Description, variableCollection : new VariableCollection { Variables = updatedVariables } ); _dbContext.Packages.Add(newPackage); await _dbContext.SaveChangesAsync(); return(new CreatePackageResponse { CreatedPackageId = newPackage.Id }); }
public void UninstallPageButtons() { using (var thread = new TemporaryDispatcherThread()) { var package = PackageFactory.Create("installed"); this.PackageManager.InstalledPackages.Add(package); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, package.Id); Assert.True(buttonBarViewModel.UninstallButton.Command.CanExecute(null)); thread.Invoke(() => { buttonBarViewModel.UninstallButton.Command.Execute(null); }); buttonBarViewModel.NuGetViewModel.WaitUntilComplete(); Assert.Equal( new ButtonViewModel[] { buttonBarViewModel.YesButton, buttonBarViewModel.NoButton }, buttonBarViewModel.ActionButtons); } }
public void PrereleaseFilterVisibilityForExtensionsGallery() { using (var thread = new TemporaryDispatcherThread()) { this.PackageManager.SupportsEnableDisable = true; var installed = PackageFactory.Create("update", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed); var remote = PackageFactory.Create("update", new Version(2, 0)); this.PackageManager.RemotePackages.Add(remote); installed = PackageFactory.Create("disable", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, installed.Id); buttonBarViewModel.NuGetViewModel.ShouldShowPrereleaseFilter = false; this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.DisableButton); // At this point, there are 2 packages installed; 1 has an update and 1 is disabled // Select All Filter and check that the prerelease filter is visible this.SelectFilter(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_All); Assert.NotEqual <Visibility>(buttonBarViewModel.NuGetViewModel.ShowPrereleaseFilter, Visibility.Visible); // Select Disabled Filter and check that the prerelease filter is NOT visible this.SelectFilter(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Disabled); Assert.NotEqual <Visibility>(buttonBarViewModel.NuGetViewModel.ShowPrereleaseFilter, Visibility.Visible); // Select Updates Filter and check that the prerelease filter is visible this.SelectFilter(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Updated); Assert.NotEqual <Visibility>(buttonBarViewModel.NuGetViewModel.ShowPrereleaseFilter, Visibility.Visible); // Select Installed Filter and check that the prerelease filter is NOT visible this.SelectFilter(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed); Assert.NotEqual <Visibility>(buttonBarViewModel.NuGetViewModel.ShowPrereleaseFilter, Visibility.Visible); } }
public void EnablePackage() { using (var thread = new TemporaryDispatcherThread()) { this.PackageManager.SupportsEnableDisable = true; var installed = PackageFactory.Create("enable", new Version(1, 0)); this.PackageManager.InstalledPackages.Add(installed); this.PackageManager.DisabledPackages.Add(installed); ButtonBarViewModel buttonBarViewModel = this.CreateViewModel(thread); this.SelectPackage(thread, buttonBarViewModel.NuGetViewModel, Resources.Filter_Installed, installed.Id); this.ClickButton(thread, buttonBarViewModel, buttonBarViewModel.EnableButton); Assert.False(buttonBarViewModel.NuGetViewModel.IsDetailsPaneVisible, "The details page should not be shown."); Assert.False(buttonBarViewModel.NuGetViewModel.IsLicensePageVisible, "The license page should not be shown."); Assert.False(this.PackageManager.DisabledPackages.Any(), "No packages should be disabled."); } }
public void SelectAPackage() { using (var thread = new TemporaryDispatcherThread()) { var feedSource = new FeedSource("http://1.com", "source1"); var feedSourceStore = new InMemoryFeedSourceStore(feedSource); var packageSourcesViewModel = new PackageSourcesViewModel(new PackageSourcesModel(feedSource, feedSourceStore)); var packageManager = new InMemoryPackageManager(); packageManager.RemotePackages.Add(PackageFactory.Create("package1")); NuGetViewModel viewModel = null; thread.Invoke(() => { viewModel = new NuGetViewModel( this.Descriptor.Object, this.Host.Object, packageSourcesViewModel, (uri, site) => packageManager, this.ReadonlyDestination, thread.Scheduler); }); viewModel.WaitUntilComplete(); var filterToSelect = viewModel.Filters.First(f => f.Count > 0); if (viewModel.SelectedFilter != filterToSelect) { viewModel.SelectedFilter = filterToSelect; } Assert.Equal <IListViewFilter>(filterToSelect, viewModel.SelectedFilter); Assert.Null(viewModel.SelectedItem); var itemToSelect = filterToSelect.FilteredItems.OfType <object>().First(); thread.Invoke(() => { viewModel.SelectedItem = itemToSelect; }); Assert.Equal(itemToSelect, viewModel.SelectedItem); Assert.NotNull(itemToSelect); } }
/// <summary> /// Creates a temporary PackageKey on disk, extracts and compares the copy /// <para>Throws an Exception on failure</</para> /// </summary> public static void PackageFactoryTest() { string path = GetTempPath(); KeyGenerator kgen = new KeyGenerator(); // populate a KeyAuthority structure KeyAuthority authority = new KeyAuthority(kgen.GetBytes(16), kgen.GetBytes(16), kgen.GetBytes(16), kgen.GetBytes(32), 0); // cipher paramaters CipherDescription desc = new CipherDescription( SymmetricEngines.RHX, 32, IVSizes.V128, CipherModes.CTR, PaddingModes.X923, BlockSizes.B128, RoundCounts.R14, Digests.Keccak512, 64, Digests.Keccak512); // create the package key PackageKey pkey = new PackageKey(authority, desc, 10); // write a key file using (PackageFactory pf = new PackageFactory(new FileStream(path, FileMode.Open, FileAccess.ReadWrite), authority)) pf.Create(pkey); for (int i = 0; i < pkey.SubKeyCount; i++) { CipherDescription desc2; KeyParams kp1; KeyParams kp2; byte[] ext; byte[] id = pkey.SubKeyID[i]; // get at index using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read)) kp2 = PackageKey.AtIndex(stream, i); // read the package from id using (PackageFactory pf = new PackageFactory(new FileStream(path, FileMode.Open, FileAccess.ReadWrite), authority)) pf.Extract(id, out desc2, out kp1); // compare key material if (!Evaluate.AreEqual(kp1.Key, kp2.Key)) { throw new Exception(); } if (!Evaluate.AreEqual(kp1.IV, kp2.IV)) { throw new Exception(); } if (!desc.Equals(desc2)) { throw new Exception(); } } if (File.Exists(path)) { File.Delete(path); } }