This commit is contained in:
Konstantinos Sideris 2017-09-24 17:39:06 +03:00
parent 37ff1398b7
commit 9def76aa08
4 changed files with 669 additions and 696 deletions

View File

@ -18,12 +18,12 @@
#include "MainWindow.h"
#include "Config.h"
#include <QApplication>
#include <QLayout>
#include <QNetworkReply>
#include <QSettings>
#include <QSystemTrayIcon>
#include <QShortcut>
#include <QApplication>
#include <QSystemTrayIcon>
MainWindow *MainWindow::instance_ = nullptr;

View File

@ -23,8 +23,7 @@ using namespace matrix::events;
TEST(EventCollection, Deserialize)
{
auto events = QJsonArray{
QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "prev_content", QJsonObject{ { "name", "Previous Name" } } },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
@ -32,8 +31,7 @@ TEST(EventCollection, Deserialize)
{ "origin_server_ts", 1323238293289323LL },
{ "state_key", "" },
{ "type", "m.room.name" } },
QJsonObject{
{"content", QJsonObject{{"topic", "Topic"}}},
QJsonObject{ { "content", QJsonObject{ { "topic", "Topic" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "prev_content", QJsonObject{ { "topic", "Previous Topic" } } },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
@ -68,8 +66,7 @@ TEST(EventCollection, DeserializationException)
{
// Using wrong event types.
auto events = QJsonArray{
QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "prev_content", QJsonObject{ { "name", "Previous Name" } } },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
@ -77,8 +74,7 @@ TEST(EventCollection, DeserializationException)
{ "origin_server_ts", 1323238293289323LL },
{ "state_key", "" },
{ "type", "m.room.topic" } },
QJsonObject{
{"content", QJsonObject{{"topic", "Topic"}}},
QJsonObject{ { "content", QJsonObject{ { "topic", "Topic" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "prev_content", QJsonObject{ { "topic", "Previous Topic" } } },
{ "room_id", "!aasdfaeae23r9:matrix.org" },

View File

@ -1,6 +1,6 @@
#include <gtest/gtest.h>
#include <QDebug>
#include <QJsonArray>
#include <gtest/gtest.h>
#include "Event.h"
#include "RoomEvent.h"
@ -22,8 +22,7 @@ using namespace matrix::events;
TEST(BaseEvent, Deserialization)
{
// NameEventContent
auto data = QJsonObject{
{"content", QJsonObject{{"name", "Room Name"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "name", "Room Name" } } },
{ "type", "m.room.name" } };
Event<NameEventContent> name_event;
@ -32,8 +31,7 @@ TEST(BaseEvent, Deserialization)
EXPECT_EQ(name_event.serialize(), data);
// TopicEventContent
data = QJsonObject{
{"content", QJsonObject{{"topic", "Room Topic"}}},
data = QJsonObject{ { "content", QJsonObject{ { "topic", "Room Topic" } } },
{ "type", "m.room.topic" } };
Event<TopicEventContent> topic_event;
@ -42,8 +40,7 @@ TEST(BaseEvent, Deserialization)
EXPECT_EQ(topic_event.serialize(), data);
// AvatarEventContent
data = QJsonObject{
{"content", QJsonObject{{"url", "https://matrix.org"}}},
data = QJsonObject{ { "content", QJsonObject{ { "url", "https://matrix.org" } } },
{ "type", "m.room.avatar" } };
Event<AvatarEventContent> avatar_event;
@ -52,8 +49,10 @@ TEST(BaseEvent, Deserialization)
EXPECT_EQ(avatar_event.serialize(), data);
// AliasesEventContent
data = QJsonObject{
{"content", QJsonObject{{"aliases", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}}},
data =
QJsonObject{ { "content",
QJsonObject{
{ "aliases", QJsonArray{ "#test:matrix.org", "#test2:matrix.org" } } } },
{ "type", "m.room.aliases" } };
Event<AliasesEventContent> aliases_event;
@ -62,8 +61,7 @@ TEST(BaseEvent, Deserialization)
EXPECT_EQ(aliases_event.serialize(), data);
// CreateEventContent
data = QJsonObject{
{"content", QJsonObject{{"creator", "@alice:matrix.org"}}},
data = QJsonObject{ { "content", QJsonObject{ { "creator", "@alice:matrix.org" } } },
{ "type", "m.room.create" } };
Event<CreateEventContent> create_event;
@ -72,8 +70,7 @@ TEST(BaseEvent, Deserialization)
EXPECT_EQ(create_event.serialize(), data);
// JoinRulesEventContent
data = QJsonObject{
{"content", QJsonObject{{"join_rule", "private"}}},
data = QJsonObject{ { "content", QJsonObject{ { "join_rule", "private" } } },
{ "type", "m.room.join_rules" } };
Event<JoinRulesEventContent> join_rules_event;
@ -84,15 +81,13 @@ TEST(BaseEvent, Deserialization)
TEST(BaseEvent, DeserializationException)
{
auto data = QJsonObject{
{"content", QJsonObject{{"rule", "private"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "rule", "private" } } },
{ "type", "m.room.join_rules" } };
Event<JoinRulesEventContent> event1;
ASSERT_THROW(event1.deserialize(data), DeserializationException);
data = QJsonObject{
{"contents", QJsonObject{{"join_rule", "private"}}},
data = QJsonObject{ { "contents", QJsonObject{ { "join_rule", "private" } } },
{ "type", "m.room.join_rules" } };
Event<JoinRulesEventContent> event2;
@ -101,8 +96,7 @@ TEST(BaseEvent, DeserializationException)
TEST(RoomEvent, Deserialization)
{
auto data = QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -122,8 +116,7 @@ TEST(RoomEvent, Deserialization)
TEST(RoomEvent, DeserializationException)
{
auto data = QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "origin_server_ts", 1323238293289323LL },
@ -140,8 +133,7 @@ TEST(RoomEvent, DeserializationException)
TEST(StateEvent, Deserialization)
{
auto data = QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "state_key", "some_state_key" },
{ "prev_content", QJsonObject{ { "name", "Previous Name" } } },
@ -165,8 +157,7 @@ TEST(StateEvent, Deserialization)
TEST(StateEvent, DeserializationException)
{
auto data = QJsonObject{
{"content", QJsonObject{{"name", "Name"}}},
auto data = QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "prev_content", QJsonObject{ { "name", "Previous Name" } } },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
@ -185,24 +176,35 @@ TEST(StateEvent, DeserializationException)
TEST(EventType, Mapping)
{
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.aliases"}}), EventType::RoomAliases);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.avatar"}}), EventType::RoomAvatar);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.canonical_alias"}}), EventType::RoomCanonicalAlias);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.create"}}), EventType::RoomCreate);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.history_visibility"}}), EventType::RoomHistoryVisibility);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.join_rules"}}), EventType::RoomJoinRules);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.member"}}), EventType::RoomMember);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.message"}}), EventType::RoomMessage);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.aliases" } }),
EventType::RoomAliases);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.avatar" } }),
EventType::RoomAvatar);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.canonical_alias" } }),
EventType::RoomCanonicalAlias);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.create" } }),
EventType::RoomCreate);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.history_visibility" } }),
EventType::RoomHistoryVisibility);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.join_rules" } }),
EventType::RoomJoinRules);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.member" } }),
EventType::RoomMember);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.message" } }),
EventType::RoomMessage);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.name" } }), EventType::RoomName);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.power_levels"}}), EventType::RoomPowerLevels);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.topic"}}), EventType::RoomTopic);
EXPECT_EQ(extractEventType(QJsonObject{{"type", "m.room.unknown"}}), EventType::Unsupported);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.power_levels" } }),
EventType::RoomPowerLevels);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.topic" } }),
EventType::RoomTopic);
EXPECT_EQ(extractEventType(QJsonObject{ { "type", "m.room.unknown" } }),
EventType::Unsupported);
}
TEST(AliasesEventContent, Deserialization)
{
auto data = QJsonObject{
{"aliases", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}};
auto data =
QJsonObject{ { "aliases", QJsonArray{ "#test:matrix.org", "#test2:matrix.org" } } };
AliasesEventContent content;
content.deserialize(data);
@ -221,8 +223,7 @@ TEST(AliasesEventContent, NotAnObject)
TEST(AliasesEventContent, MissingKey)
{
auto data = QJsonObject{
{"key", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}};
auto data = QJsonObject{ { "key", QJsonArray{ "#test:matrix.org", "#test2:matrix.org" } } };
AliasesEventContent content;
ASSERT_THROW(content.deserialize(data), DeserializationException);

View File

@ -19,19 +19,15 @@ using namespace matrix::events;
TEST(MessageEvent, Audio)
{
auto info = QJsonObject{
{"duration", 2140786},
{"mimetype", "audio/mpeg"},
{"size", 1563688}};
auto info =
QJsonObject{ { "duration", 2140786 }, { "mimetype", "audio/mpeg" }, { "size", 1563688 } };
auto content = QJsonObject{
{"body", "Bee Gees - Stayin' Alive"},
auto content = QJsonObject{ { "body", "Bee Gees - Stayin' Alive" },
{ "msgtype", "m.audio" },
{ "url", "mxc://localhost/2sdfj23f33r3faad" },
{ "info", info } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -49,12 +45,9 @@ TEST(MessageEvent, Audio)
TEST(MessageEvent, Emote)
{
auto content = QJsonObject{
{"body", "emote message"},
{"msgtype", "m.emote"}};
auto content = QJsonObject{ { "body", "emote message" }, { "msgtype", "m.emote" } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -70,26 +63,21 @@ TEST(MessageEvent, Emote)
TEST(MessageEvent, File)
{
auto thumbnail_info = QJsonObject{
{"h", 300},
{"w", 400},
{"size", 3432434},
{"mimetype", "image/jpeg"}};
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
};
auto file_info = QJsonObject{
{"size", 24242424},
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"},
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},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -111,10 +99,7 @@ TEST(MessageEvent, File)
TEST(MessageEvent, Image)
{
auto thumbinfo = QJsonObject{
{"h", 11},
{"w", 22},
{"size", 212},
{"mimetype", "img/jpeg"},
{ "h", 11 }, { "w", 22 }, { "size", 212 }, { "mimetype", "img/jpeg" },
};
auto imginfo = QJsonObject{
@ -126,14 +111,12 @@ TEST(MessageEvent, Image)
{ "thumbnail_info", thumbinfo },
};
auto content = QJsonObject{
{"body", "Image title"},
auto content = QJsonObject{ { "body", "Image title" },
{ "msgtype", "m.image" },
{ "url", "https://images.com/image.jpg" },
{ "info", imginfo } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -154,23 +137,18 @@ TEST(MessageEvent, Image)
TEST(MessageEvent, Location)
{
auto thumbnail_info = QJsonObject{
{"h", 300},
{"w", 400},
{"size", 3432434},
{"mimetype", "image/jpeg"}};
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
};
auto info = QJsonObject{
{"thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3"},
auto info = QJsonObject{ { "thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3" },
{ "thumbnail_info", thumbnail_info } };
auto content = QJsonObject{
{"body", "Big Ben, London, UK"},
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},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -189,12 +167,9 @@ TEST(MessageEvent, Location)
TEST(MessageEvent, Notice)
{
auto content = QJsonObject{
{"body", "notice message"},
{"msgtype", "m.notice"}};
auto content = QJsonObject{ { "body", "notice message" }, { "msgtype", "m.notice" } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -209,12 +184,9 @@ TEST(MessageEvent, Notice)
TEST(MessageEvent, Text)
{
auto content = QJsonObject{
{"body", "text message"},
{"msgtype", "m.text"}};
auto content = QJsonObject{ { "body", "text message" }, { "msgtype", "m.text" } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -230,13 +202,10 @@ TEST(MessageEvent, Text)
TEST(MessageEvent, Video)
{
auto thumbnail_info = QJsonObject{
{"h", 300},
{"w", 400},
{"size", 3432434},
{"mimetype", "image/jpeg"}};
{ "h", 300 }, { "w", 400 }, { "size", 3432434 }, { "mimetype", "image/jpeg" }
};
auto video_info = QJsonObject{
{"h", 222},
auto video_info = QJsonObject{ { "h", 222 },
{ "w", 333 },
{ "duration", 232323 },
{ "size", 24242424 },
@ -244,14 +213,12 @@ TEST(MessageEvent, Video)
{ "thumbnail_url", "mxc://localhost/adfaefaFAFSDFF3" },
{ "thumbnail_info", thumbnail_info } };
auto content = QJsonObject{
{"body", "Gangnam Style"},
auto content = QJsonObject{ { "body", "Gangnam Style" },
{ "url", "mxc://localhost/23d233d32r3r2r" },
{ "info", video_info },
{ "msgtype", "m.video" } };
auto event = QJsonObject{
{"content", content},
auto event = QJsonObject{ { "content", content },
{ "event_id", "$asdfafdf8af:matrix.org" },
{ "room_id", "!aasdfaeae23r9:matrix.org" },
{ "sender", "@alice:matrix.org" },
@ -272,39 +239,48 @@ TEST(MessageEvent, Video)
TEST(MessageEvent, Types)
{
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.audio" } } }, { "type", "m.room.message" },
}),
MessageEventType::Audio);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.emote" } } }, { "type", "m.room.message" },
}),
MessageEventType::Emote);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.file" } } }, { "type", "m.room.message" },
}),
MessageEventType::File);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.image" } } }, { "type", "m.room.message" },
}),
MessageEventType::Image);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.location" } } }, { "type", "m.room.message" },
}),
MessageEventType::Location);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.notice" } } }, { "type", "m.room.message" },
}),
MessageEventType::Notice);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.text" } } }, { "type", "m.room.message" },
}),
MessageEventType::Text);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.video" } } }, { "type", "m.room.message" },
}),
MessageEventType::Video);
EXPECT_EQ(extractMessageEventType(QJsonObject{
EXPECT_EQ(
extractMessageEventType(QJsonObject{
{ "content", QJsonObject{ { "msgtype", "m.random" } } }, { "type", "m.room.message" },
}),
MessageEventType::Unknown);