forked from mirror/nheko
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
312 lines
8.8 KiB
312 lines
8.8 KiB
8 years ago
|
#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);
|
||
|
}
|