mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-29 14:18:49 +03:00
287 lines
12 KiB
C++
287 lines
12 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include <QJsonArray>
|
|
#include <QJsonObject>
|
|
|
|
#include "MessageEvent.h"
|
|
#include "MessageEventContent.h"
|
|
|
|
#include "Audio.h"
|
|
#include "Emote.h"
|
|
#include "File.h"
|
|
#include "Image.h"
|
|
#include "Location.h"
|
|
#include "Notice.h"
|
|
#include "Text.h"
|
|
#include "Video.h"
|
|
|
|
using namespace matrix::events;
|
|
|
|
TEST(MessageEvent, Audio)
|
|
{
|
|
auto info =
|
|
QJsonObject{ { "duration", 2140786 }, { "mimetype", "audio/mpeg" }, { "size", 1563688 } };
|
|
|
|
auto content = QJsonObject{ { "body", "Bee Gees - Stayin' Alive" },
|
|
{ "msgtype", "m.audio" },
|
|
{ "url", "mxc://localhost/2sdfj23f33r3faad" },
|
|
{ "info", info } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Audio> audio;
|
|
audio.deserialize(event);
|
|
|
|
EXPECT_EQ(audio.msgContent().info().duration, 2140786);
|
|
EXPECT_EQ(audio.msgContent().info().size, 1563688);
|
|
EXPECT_EQ(audio.msgContent().info().mimetype, "audio/mpeg");
|
|
EXPECT_EQ(audio.content().body(), "Bee Gees - Stayin' Alive");
|
|
}
|
|
|
|
TEST(MessageEvent, Emote)
|
|
{
|
|
auto content = QJsonObject{ { "body", "emote message" }, { "msgtype", "m.emote" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Emote> emote;
|
|
emote.deserialize(event);
|
|
|
|
EXPECT_EQ(emote.content().body(), "emote message");
|
|
}
|
|
|
|
TEST(MessageEvent, File)
|
|
{
|
|
auto thumbnail_info = QJsonObject{
|
|
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
|
|
};
|
|
|
|
auto file_info = QJsonObject{ { "size", 24242424 },
|
|
{ "mimetype", "application/msword" },
|
|
{ "thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3" },
|
|
{ "thumbnail_info", thumbnail_info } };
|
|
|
|
auto content = QJsonObject{ { "body", "something-important.doc" },
|
|
{ "filename", "something-important.doc" },
|
|
{ "url", "mxc://localhost/23d233d32r3r2r" },
|
|
{ "info", file_info },
|
|
{ "msgtype", "m.file" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::File> file;
|
|
file.deserialize(event);
|
|
|
|
EXPECT_EQ(file.content().body(), "something-important.doc");
|
|
EXPECT_EQ(file.msgContent().info().thumbnail_info.h, 300);
|
|
EXPECT_EQ(file.msgContent().info().thumbnail_info.w, 400);
|
|
EXPECT_EQ(file.msgContent().info().thumbnail_info.mimetype, "image/jpeg");
|
|
EXPECT_EQ(file.msgContent().info().mimetype, "application/msword");
|
|
EXPECT_EQ(file.msgContent().info().size, 24242424);
|
|
EXPECT_EQ(file.content().body(), "something-important.doc");
|
|
}
|
|
|
|
TEST(MessageEvent, Image)
|
|
{
|
|
auto thumbinfo = QJsonObject{
|
|
{ "h", 11 }, { "w", 22 }, { "size", 212 }, { "mimetype", "img/jpeg" },
|
|
};
|
|
|
|
auto imginfo = QJsonObject{
|
|
{ "h", 110 },
|
|
{ "w", 220 },
|
|
{ "size", 2120 },
|
|
{ "mimetype", "img/jpeg" },
|
|
{ "thumbnail_url", "https://images.com/image-thumb.jpg" },
|
|
{ "thumbnail_info", thumbinfo },
|
|
};
|
|
|
|
auto content = QJsonObject{ { "body", "Image title" },
|
|
{ "msgtype", "m.image" },
|
|
{ "url", "https://images.com/image.jpg" },
|
|
{ "info", imginfo } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Image> img;
|
|
img.deserialize(event);
|
|
|
|
EXPECT_EQ(img.content().body(), "Image title");
|
|
EXPECT_EQ(img.msgContent().info().h, 110);
|
|
EXPECT_EQ(img.msgContent().info().w, 220);
|
|
EXPECT_EQ(img.msgContent().info().thumbnail_info.w, 22);
|
|
EXPECT_EQ(img.msgContent().info().mimetype, "img/jpeg");
|
|
EXPECT_EQ(img.msgContent().info().thumbnail_url, "https://images.com/image-thumb.jpg");
|
|
}
|
|
|
|
TEST(MessageEvent, Location)
|
|
{
|
|
auto thumbnail_info = QJsonObject{
|
|
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
|
|
};
|
|
|
|
auto info = QJsonObject{ { "thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3" },
|
|
{ "thumbnail_info", thumbnail_info } };
|
|
|
|
auto content = QJsonObject{ { "body", "Big Ben, London, UK" },
|
|
{ "geo_uri", "geo:51.5008,0.1247" },
|
|
{ "info", info },
|
|
{ "msgtype", "m.location" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Location> location;
|
|
location.deserialize(event);
|
|
|
|
EXPECT_EQ(location.msgContent().info().thumbnail_info.h, 300);
|
|
EXPECT_EQ(location.msgContent().info().thumbnail_info.w, 400);
|
|
EXPECT_EQ(location.msgContent().info().thumbnail_info.mimetype, "image/jpeg");
|
|
EXPECT_EQ(location.msgContent().info().thumbnail_url, "mxc://localhost/adfaefaFAFSDFF3");
|
|
EXPECT_EQ(location.content().body(), "Big Ben, London, UK");
|
|
}
|
|
|
|
TEST(MessageEvent, Notice)
|
|
{
|
|
auto content = QJsonObject{ { "body", "notice message" }, { "msgtype", "m.notice" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Notice> notice;
|
|
notice.deserialize(event);
|
|
|
|
EXPECT_EQ(notice.content().body(), "notice message");
|
|
}
|
|
|
|
TEST(MessageEvent, Text)
|
|
{
|
|
auto content = QJsonObject{ { "body", "text message" }, { "msgtype", "m.text" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Text> text;
|
|
text.deserialize(event);
|
|
|
|
EXPECT_EQ(text.content().body(), "text message");
|
|
}
|
|
|
|
TEST(MessageEvent, Video)
|
|
{
|
|
auto thumbnail_info = QJsonObject{
|
|
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
|
|
};
|
|
|
|
auto video_info = QJsonObject{ { "h", 222 },
|
|
{ "w", 333 },
|
|
{ "duration", 232323 },
|
|
{ "size", 24242424 },
|
|
{ "mimetype", "video/mp4" },
|
|
{ "thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3" },
|
|
{ "thumbnail_info", thumbnail_info } };
|
|
|
|
auto content = QJsonObject{ { "body", "Gangnam Style" },
|
|
{ "url", "mxc://localhost/23d233d32r3r2r" },
|
|
{ "info", video_info },
|
|
{ "msgtype", "m.video" } };
|
|
|
|
auto event = QJsonObject{ { "content", content },
|
|
{ "event_id", "$asdfafdf8af:matrix.org" },
|
|
{ "room_id", "!aasdfaeae23r9:matrix.org" },
|
|
{ "sender", "@alice:matrix.org" },
|
|
{ "origin_server_ts", 1323238293289323LL },
|
|
{ "type", "m.room.message" } };
|
|
|
|
MessageEvent<messages::Video> video;
|
|
video.deserialize(event);
|
|
|
|
EXPECT_EQ(video.msgContent().info().thumbnail_info.h, 300);
|
|
EXPECT_EQ(video.msgContent().info().thumbnail_info.w, 400);
|
|
EXPECT_EQ(video.msgContent().info().thumbnail_info.mimetype, "image/jpeg");
|
|
EXPECT_EQ(video.msgContent().info().duration, 232323);
|
|
EXPECT_EQ(video.msgContent().info().size, 24242424);
|
|
EXPECT_EQ(video.msgContent().info().mimetype, "video/mp4");
|
|
EXPECT_EQ(video.content().body(), "Gangnam Style");
|
|
}
|
|
|
|
TEST(MessageEvent, Types)
|
|
{
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.audio" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Audio);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.emote" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Emote);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.file" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::File);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.image" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Image);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.location" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Location);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.notice" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Notice);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.text" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Text);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.video" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Video);
|
|
EXPECT_EQ(
|
|
extractMessageEventType(QJsonObject{
|
|
{ "content", QJsonObject{ { "msgtype", "m.random" } } }, { "type", "m.room.message" },
|
|
}),
|
|
MessageEventType::Unknown);
|
|
}
|