larra/tests/stream.cpp
2024-09-14 15:21:42 +00:00

54 lines
1.7 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 =
R"(<stream:stream from="user@example.com" to="example.com" id="abc" version="1.0" xml:lang="en" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" />
)";
TEST(Stream, Serialize) {
UserStream originalStream;
originalStream.from = BareJid{"user", "example.com"};
originalStream.to = "example.com";
originalStream.id = "abc";
originalStream.version = "1.0";
originalStream.xmlLang = "en";
pugi::xml_document doc;
pugi::xml_node streamNode = doc.append_child("stream:stream");
streamNode << originalStream;
std::ostringstream oss;
doc.child("stream:stream").print(oss, "\t");
const std::string serializedData = oss.str();
ASSERT_EQ(serializedData, kCheckSerializeData);
}
TEST(Stream, Deserialize) {
pugi::xml_document parsedDoc;
parsedDoc.load_string(kSerializedData.data());
const UserStream deserializedStream = UserStream::Parse(parsedDoc.child("stream:stream"));
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