AppFileTests.cpp (5396B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 4 #include "ContentUtil.h" 5 #include "sfsclient/AppFile.h" 6 7 #include <catch2/catch_test_macros.hpp> 8 9 #define TEST(...) TEST_CASE("[AppFileTests] " __VA_ARGS__) 10 #define TEST_SCENARIO(...) TEST_CASE("[AppFileTests] Scenario: " __VA_ARGS__) 11 12 using namespace SFS; 13 using namespace SFS::details; 14 using namespace SFS::details::contentutil; 15 16 namespace 17 { 18 std::unique_ptr<AppFile> GetAppFile(const std::string& fileId, 19 const std::string& url, 20 uint64_t sizeInBytes, 21 const std::unordered_map<HashType, std::string>& hashes, 22 std::vector<Architecture> architectures, 23 std::vector<std::string> platformApplicabilityForPackage, 24 std::string fileMoniker) 25 { 26 std::unique_ptr<AppFile> file; 27 REQUIRE(AppFile::Make(fileId, 28 url, 29 sizeInBytes, 30 hashes, 31 architectures, 32 platformApplicabilityForPackage, 33 fileMoniker, 34 file) == Result::Success); 35 REQUIRE(file != nullptr); 36 return file; 37 } 38 } // namespace 39 40 TEST("Testing AppFile::Make()") 41 { 42 const std::string fileId{"myFileId"}; 43 const std::string url{"myUrl"}; 44 const uint64_t sizeInBytes{1234}; 45 const std::unordered_map<HashType, std::string> hashes{{HashType::Sha1, "mySha1"}, {HashType::Sha256, "mySha256"}}; 46 const std::vector<Architecture> architectures{Architecture::Amd64}; 47 const std::vector<std::string> platformApplicabilityForPackage{"myPlatformApplicabilityForPackage"}; 48 const std::string fileMoniker{"myFileMoniker"}; 49 50 const std::unique_ptr<AppFile> file = 51 GetAppFile(fileId, url, sizeInBytes, hashes, architectures, platformApplicabilityForPackage, fileMoniker); 52 53 CHECK(fileId == file->GetFileId()); 54 CHECK(url == file->GetUrl()); 55 CHECK(sizeInBytes == file->GetSizeInBytes()); 56 CHECK(hashes == file->GetHashes()); 57 58 SECTION("Testing File equality operators") 59 { 60 SECTION("Equal") 61 { 62 auto CompareFileEqual = [&file](const std::unique_ptr<AppFile>& sameFile) { 63 REQUIRE((*file == *sameFile)); 64 REQUIRE_FALSE((*file != *sameFile)); 65 }; 66 67 CompareFileEqual(GetAppFile(fileId, 68 url, 69 sizeInBytes, 70 hashes, 71 architectures, 72 platformApplicabilityForPackage, 73 fileMoniker)); 74 } 75 76 SECTION("Not equal") 77 { 78 auto CompareFileNotEqual = [&file](const std::unique_ptr<AppFile>& otherFile) { 79 REQUIRE((*file != *otherFile)); 80 REQUIRE_FALSE((*file == *otherFile)); 81 }; 82 83 CompareFileNotEqual( 84 GetAppFile("", url, sizeInBytes, hashes, architectures, platformApplicabilityForPackage, fileMoniker)); 85 CompareFileNotEqual(GetAppFile(fileId, 86 "", 87 sizeInBytes, 88 hashes, 89 architectures, 90 platformApplicabilityForPackage, 91 fileMoniker)); 92 CompareFileNotEqual( 93 GetAppFile(fileId, url, 0, hashes, architectures, platformApplicabilityForPackage, fileMoniker)); 94 CompareFileNotEqual( 95 GetAppFile(fileId, url, sizeInBytes, {}, architectures, platformApplicabilityForPackage, fileMoniker)); 96 CompareFileNotEqual( 97 GetAppFile(fileId, url, sizeInBytes, hashes, {}, platformApplicabilityForPackage, fileMoniker)); 98 CompareFileNotEqual(GetAppFile(fileId, url, sizeInBytes, hashes, architectures, {}, fileMoniker)); 99 CompareFileNotEqual(GetAppFile(fileId, url, sizeInBytes, hashes, {}, platformApplicabilityForPackage, {})); 100 CompareFileNotEqual(GetAppFile("", "", 0, {}, architectures, platformApplicabilityForPackage, fileMoniker)); 101 CompareFileNotEqual(GetAppFile("MYFILEID", 102 url, 103 sizeInBytes, 104 hashes, 105 architectures, 106 platformApplicabilityForPackage, 107 fileMoniker)); 108 CompareFileNotEqual(GetAppFile(fileId, 109 "MYURL", 110 sizeInBytes, 111 hashes, 112 architectures, 113 platformApplicabilityForPackage, 114 fileMoniker)); 115 } 116 } 117 }