1 #include "file_test_utilities.hpp"
2 #include "metadata.hpp"
3 
4 #include <filesystem>
5 #include <format>
6 #include <string_view>
7 
8 #include <gtest/gtest.h>
9 
10 namespace redfish
11 {
12 namespace
13 {
14 
15 /*
16 Example from Redfish and OData whitepaper.
17 
18 https://www.dmtf.org/sites/default/files/standards/documents/DSP2052_1.0.0.pdf
19 */
20 constexpr std::string_view content =
21     "<edmx:Edmx xmlns:edms=\"http://docs.oasis-open.org/odata/ns/edmx\" Version=\"4.0\">\n"
22     "  <edmx:Reference Uri=\"http://contoso.org/schemas/ExternalSchema.xml\">\n"
23     "    <edmx:Include Namespace=\"ExternalNamespace\"/>\n"
24     "    <edmx:Include Namespace=\"Other.Namespace\"/>\n"
25     "  </edmx:Reference>\n"
26     "  <edmx:DataServices>\n"
27     "    <Schema xmlns=\"http://docs.oasis-open.org/odata/ns/edm\" Namespace=\"MyNewNamespace\">\n"
28     "      <ComplexType Name=\"MyDataType\">\n"
29     "        <Property Name=\"MyProperty\" Type=\"ExternalNamespace.ReferencedDataType\"/>\n"
30     "        <Property Name=\"MyProperty2\" Type=\"Other.Namespace.OtherDataType\"/>\n"
31     "        <Property Name=\"MyProperty3\" Type=\"Edm.Int64\"/>\n"
32     "      </ComplexType>\n"
33     "    </Schema>\n"
34     "  </edmx:DataServices>\n"
35     "</edmx:Edmx>\n";
36 
37 TEST(MetadataGet, GetOneFile)
38 {
39     TemporaryFileHandle file(content);
40 
41     std::filesystem::path path{file.stringPath};
42     EXPECT_EQ(
43         getMetadataPieceForFile(path),
44         std::format("    <edmx:Reference Uri=\"/redfish/v1/schema/{}\">\n"
45                     "        <edmx:Include Namespace=\"MyNewNamespace\"/>\n"
46                     "    </edmx:Reference>\n",
47                     path.filename().string()));
48 
49     EXPECT_EQ(getMetadataPieceForFile("DoesNotExist_v1.xml"), "");
50 }
51 
52 } // namespace
53 } // namespace redfish
54