ExportFlow.cpp (5937B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "WorkflowCommon.h" 5 #include <Commands/ExportCommand.h> 6 7 using namespace TestCommon; 8 using namespace AppInstaller::CLI; 9 10 TEST_CASE("ExportFlow_ExportAll", "[ExportFlow][workflow]") 11 { 12 TestCommon::TempFile exportResultPath("TestExport.json"); 13 14 std::ostringstream exportOutput; 15 TestContext context{ exportOutput, std::cin }; 16 auto previousThreadGlobals = context.SetForCurrentThread(); 17 OverrideForCompositeInstalledSource(context, CreateTestSource({ 18 TSR::TestInstaller_Exe, 19 TSR::TestInstaller_Exe_UnknownVersion, 20 TSR::TestInstaller_Msix, 21 TSR::TestInstaller_MSStore, 22 TSR::TestInstaller_Portable, 23 TSR::TestInstaller_Zip, 24 })); 25 context.Args.AddArg(Execution::Args::Type::OutputFile, exportResultPath); 26 27 ExportCommand exportCommand({}); 28 exportCommand.Execute(context); 29 INFO(exportOutput.str()); 30 31 // Verify contents of exported collection 32 const auto& exportedCollection = context.Get<Execution::Data::PackageCollection>(); 33 REQUIRE(exportedCollection.Sources.size() == 1); 34 REQUIRE(exportedCollection.Sources[0].Details.Identifier == "*TestSource"); 35 36 const auto& exportedPackages = exportedCollection.Sources[0].Packages; 37 REQUIRE(exportedPackages.size() == 6); 38 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 39 { 40 return p.Id == "AppInstallerCliTest.TestExeInstaller" && p.VersionAndChannel.GetVersion().ToString().empty(); 41 })); 42 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 43 { 44 return p.Id == "AppInstallerCliTest.TestMsixInstaller" && p.VersionAndChannel.GetVersion().ToString().empty(); 45 })); 46 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 47 { 48 return p.Id == "AppInstallerCliTest.TestMSStoreInstaller" && p.VersionAndChannel.GetVersion().ToString().empty(); 49 })); 50 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 51 { 52 return p.Id == "AppInstallerCliTest.TestPortableInstaller" && p.VersionAndChannel.GetVersion().ToString().empty(); 53 })); 54 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 55 { 56 return p.Id == "AppInstallerCliTest.TestZipInstaller" && p.VersionAndChannel.GetVersion().ToString().empty(); 57 })); 58 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 59 { 60 return p.Id == "AppInstallerCliTest.TestExeUnknownVersion" && p.VersionAndChannel.GetVersion().ToString().empty(); 61 })); 62 } 63 64 TEST_CASE("ExportFlow_ExportAll_WithVersions", "[ExportFlow][workflow]") 65 { 66 TestCommon::TempFile exportResultPath("TestExport.json"); 67 68 std::ostringstream exportOutput; 69 TestContext context{ exportOutput, std::cin }; 70 auto previousThreadGlobals = context.SetForCurrentThread(); 71 OverrideForCompositeInstalledSource(context, CreateTestSource({ 72 TSR::TestInstaller_Exe, 73 TSR::TestInstaller_Exe_UnknownVersion, 74 TSR::TestInstaller_Msix, 75 TSR::TestInstaller_MSStore, 76 TSR::TestInstaller_Portable, 77 TSR::TestInstaller_Zip, 78 })); 79 context.Args.AddArg(Execution::Args::Type::OutputFile, exportResultPath); 80 context.Args.AddArg(Execution::Args::Type::IncludeVersions); 81 82 ExportCommand exportCommand({}); 83 exportCommand.Execute(context); 84 INFO(exportOutput.str()); 85 86 // Verify contents of exported collection 87 const auto& exportedCollection = context.Get<Execution::Data::PackageCollection>(); 88 REQUIRE(exportedCollection.Sources.size() == 1); 89 REQUIRE(exportedCollection.Sources[0].Details.Identifier == "*TestSource"); 90 91 const auto& exportedPackages = exportedCollection.Sources[0].Packages; 92 REQUIRE(exportedPackages.size() == 6); 93 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 94 { 95 return p.Id == "AppInstallerCliTest.TestExeInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0"; 96 })); 97 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 98 { 99 return p.Id == "AppInstallerCliTest.TestMsixInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0"; 100 })); 101 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 102 { 103 return p.Id == "AppInstallerCliTest.TestMSStoreInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0"; 104 })); 105 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 106 { 107 return p.Id == "AppInstallerCliTest.TestPortableInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0"; 108 })); 109 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 110 { 111 return p.Id == "AppInstallerCliTest.TestZipInstaller" && p.VersionAndChannel.GetVersion().ToString() == "1.0.0.0"; 112 })); 113 REQUIRE(exportedPackages.end() != std::find_if(exportedPackages.begin(), exportedPackages.end(), [](const auto& p) 114 { 115 return p.Id == "AppInstallerCliTest.TestExeUnknownVersion" && p.VersionAndChannel.GetVersion().ToString() == "unknown"; 116 })); 117 }