52 lines
1.9 KiB
C++
52 lines
1.9 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include <larra/stream.hpp>
|
|
|
|
namespace larra::xmpp {
|
|
|
|
constexpr std::string_view kSerializedData =
|
|
R"(<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' version='1.0' id='abc' from='user@example.com' />
|
|
)";
|
|
|
|
constexpr std::string_view kCheckSerializeData =
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" "
|
|
"from=\"user@example.com\" to=\"example.com\" id=\"abc\" version=\"1.0\" xml:lang=\"en\"/>\n";
|
|
|
|
TEST(Stream, Serialize) {
|
|
UserStream originalStream;
|
|
originalStream.from = BareJid{.username = "user", .server = "example.com"};
|
|
originalStream.to = "example.com";
|
|
originalStream.id = "abc";
|
|
originalStream.version = "1.0";
|
|
originalStream.xmlLang = "en";
|
|
xmlpp::Document doc;
|
|
auto streamNode = doc.create_root_node(UserStream::kDefaultName, UserStream::kDefaultNamespace, UserStream::kDefaultPrefix);
|
|
streamNode << originalStream;
|
|
|
|
const std::string serializedData = doc.write_to_string();
|
|
|
|
ASSERT_EQ(serializedData, kCheckSerializeData);
|
|
}
|
|
|
|
TEST(Stream, Deserialize) {
|
|
xmlpp::DomParser parser;
|
|
parser.parse_memory(static_cast<std::string>(kSerializedData));
|
|
auto parsedDoc = parser.get_document();
|
|
|
|
const UserStream deserializedStream = UserStream::Parse(parsedDoc->get_root_node());
|
|
ASSERT_TRUE(deserializedStream.from.has_value());
|
|
ASSERT_EQ(ToString(*deserializedStream.from), "user@example.com");
|
|
|
|
ASSERT_FALSE(deserializedStream.to.has_value());
|
|
|
|
ASSERT_TRUE(deserializedStream.id.has_value());
|
|
ASSERT_EQ(deserializedStream.id.value(), "abc");
|
|
|
|
ASSERT_TRUE(deserializedStream.version.has_value());
|
|
ASSERT_EQ(deserializedStream.version.value(), "1.0");
|
|
|
|
ASSERT_TRUE(deserializedStream.xmlLang.has_value());
|
|
ASSERT_EQ(deserializedStream.xmlLang.value(), "en");
|
|
}
|
|
|
|
} // namespace larra::xmpp
|