]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/rgw/test_rgw_lc.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
7 #include <gtest/gtest.h>
8 //#include <spawn/spawn.hpp>
13 static const char* xmldoc_1
=
29 TEST(TestLCFilterDecoder
, XMLDoc1
)
31 RGWXMLDecoder::XMLParser parser
;
32 ASSERT_TRUE(parser
.init());
33 ASSERT_TRUE(parser
.parse(xmldoc_1
, strlen(xmldoc_1
), 1));
35 auto result
= RGWXMLDecoder::decode_xml("Filter", filter
, &parser
, true);
37 /* check repeated Tag element */
38 auto tag_map
= filter
.get_tags().get_tags();
39 auto val1
= tag_map
.find("key1");
40 ASSERT_EQ(val1
->second
, "value1");
41 auto val2
= tag_map
.find("key2");
42 ASSERT_EQ(val2
->second
, "value2");
44 ASSERT_EQ(filter
.get_flags(), 0);
47 static const char* xmldoc_2
=
53 <Value>squarepants</Value>
59 TEST(TestLCFilterDecoder
, XMLDoc2
)
61 RGWXMLDecoder::XMLParser parser
;
62 ASSERT_TRUE(parser
.init());
63 ASSERT_TRUE(parser
.parse(xmldoc_2
, strlen(xmldoc_2
), 1));
65 auto result
= RGWXMLDecoder::decode_xml("Filter", filter
, &parser
, true);
68 auto tag_map
= filter
.get_tags().get_tags();
69 auto val1
= tag_map
.find("spongebob");
70 ASSERT_EQ(val1
->second
, "squarepants");
72 ASSERT_EQ(filter
.get_flags(), LCFilter::make_flag(LCFlagType::ArchiveZone
));
75 // invalid And element placement
76 static const char* xmldoc_3
=
86 <Value>squarepants</Value>
91 TEST(TestLCFilterInvalidAnd
, XMLDoc3
)
93 RGWXMLDecoder::XMLParser parser
;
94 ASSERT_TRUE(parser
.init());
95 ASSERT_TRUE(parser
.parse(xmldoc_3
, strlen(xmldoc_3
), 1));
97 auto result
= RGWXMLDecoder::decode_xml("Filter", filter
, &parser
, true);
99 /* check repeated Tag element */
100 auto tag_map
= filter
.get_tags().get_tags();
101 auto val1
= tag_map
.find("spongebob");
102 ASSERT_TRUE(val1
== tag_map
.end());
103 /* because the invalid 2nd tag element was not recognized,
104 * we cannot access it:
105 ASSERT_EQ(val1->second, "squarepants");
107 /* check our flags */
108 ASSERT_EQ(filter
.get_flags(), uint32_t(LCFlagType::none
));