summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/event_collection.cc111
-rw-r--r--tests/events.cc707
-rw-r--r--tests/message_events.cc287
3 files changed, 0 insertions, 1105 deletions
diff --git a/tests/event_collection.cc b/tests/event_collection.cc
deleted file mode 100644

index 0ba7d227..00000000 --- a/tests/event_collection.cc +++ /dev/null
@@ -1,111 +0,0 @@ -#include <gtest/gtest.h> - -#include <QJsonArray> -#include <QJsonObject> - -#include "Event.h" -#include "RoomEvent.h" -#include "StateEvent.h" - -#include "AliasesEventContent.h" -#include "AvatarEventContent.h" -#include "CanonicalAliasEventContent.h" -#include "CreateEventContent.h" -#include "HistoryVisibilityEventContent.h" -#include "JoinRulesEventContent.h" -#include "MemberEventContent.h" -#include "NameEventContent.h" -#include "PowerLevelsEventContent.h" -#include "TopicEventContent.h" - -using namespace matrix::events; - -TEST(EventCollection, Deserialize) -{ - auto events = QJsonArray{ - QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } }, - { "event_id", "$asdfafdf8af:matrix.org" }, - { "prev_content", QJsonObject{ { "name", "Previous Name" } } }, - { "room_id", "!aasdfaeae23r9:matrix.org" }, - { "sender", "@alice:matrix.org" }, - { "origin_server_ts", 1323238293289323LL }, - { "state_key", "" }, - { "type", "m.room.name" } }, - QJsonObject{ { "content", QJsonObject{ { "topic", "Topic" } } }, - { "event_id", "$asdfafdf8af:matrix.org" }, - { "prev_content", QJsonObject{ { "topic", "Previous Topic" } } }, - { "room_id", "!aasdfaeae23r9:matrix.org" }, - { "state_key", "" }, - { "sender", "@alice:matrix.org" }, - { "origin_server_ts", 1323238293289323LL }, - { "type", "m.room.topic" } }, - }; - - for (const auto &event : events) { - EventType ty = extractEventType(event.toObject()); - - if (ty == EventType::RoomName) { - StateEvent<NameEventContent> name_event; - name_event.deserialize(event); - - EXPECT_EQ(name_event.content().name(), "Name"); - EXPECT_EQ(name_event.previousContent().name(), "Previous Name"); - } else if (ty == EventType::RoomTopic) { - StateEvent<TopicEventContent> topic_event; - topic_event.deserialize(event); - - EXPECT_EQ(topic_event.content().topic(), "Topic"); - EXPECT_EQ(topic_event.previousContent().topic(), "Previous Topic"); - } else { - ASSERT_EQ(false, true); - } - } -} - -TEST(EventCollection, DeserializationException) -{ - // Using wrong event types. - auto events = QJsonArray{ - QJsonObject{ { "content", QJsonObject{ { "name", "Name" } } }, - { "event_id", "$asdfafdf8af:matrix.org" }, - { "prev_content", QJsonObject{ { "name", "Previous Name" } } }, - { "room_id", "!aasdfaeae23r9:matrix.org" }, - { "sender", "@alice:matrix.org" }, - { "origin_server_ts", 1323238293289323LL }, - { "state_key", "" }, - { "type", "m.room.topic" } }, - QJsonObject{ { "content", QJsonObject{ { "topic", "Topic" } } }, - { "event_id", "$asdfafdf8af:matrix.org" }, - { "prev_content", QJsonObject{ { "topic", "Previous Topic" } } }, - { "room_id", "!aasdfaeae23r9:matrix.org" }, - { "state_key", "" }, - { "sender", "@alice:matrix.org" }, - { "origin_server_ts", 1323238293289323LL }, - { "type", "m.room.name" } }, - }; - - for (const auto &event : events) { - EventType ty = extractEventType(event.toObject()); - - if (ty == EventType::RoomName) { - StateEvent<NameEventContent> name_event; - - try { - name_event.deserialize(event); - } catch (const DeserializationException &e) { - ASSERT_STREQ("name key is missing", e.what()); - } - - } else if (ty == EventType::RoomTopic) { - StateEvent<TopicEventContent> topic_event; - - try { - topic_event.deserialize(event); - } catch (const DeserializationException &e) { - ASSERT_STREQ("topic key is missing", e.what()); - } - } else { - ASSERT_EQ(false, true); - } - } -} diff --git a/tests/events.cc b/tests/events.cc deleted file mode 100644
index a4f6fedf..00000000 --- a/tests/events.cc +++ /dev/null
@@ -1,707 +0,0 @@ -#include <QDebug> -#include <QJsonArray> -#include <gtest/gtest.h> - -#include "Event.h" -#include "RoomEvent.h" -#include "StateEvent.h" - -#include "AliasesEventContent.h" -#include "AvatarEventContent.h" -#include "CanonicalAliasEventContent.h" -#include "CreateEventContent.h" -#include "HistoryVisibilityEventContent.h" -#include "JoinRulesEventContent.h" -#include "MemberEventContent.h" -#include "NameEventContent.h" -#include "PowerLevelsEventContent.h" -#include "TopicEventContent.h" - -using namespace matrix::events; - -TEST(BaseEvent, Deserialization) -{ - // NameEventContent - auto data = - QJsonObject{{"content", QJsonObject{{"name", "Room Name"}}}, {"type", "m.room.name"}}; - - Event<NameEventContent> name_event; - name_event.deserialize(data); - EXPECT_EQ(name_event.content().name(), "Room Name"); - EXPECT_EQ(name_event.serialize(), data); - - // TopicEventContent - data = QJsonObject{{"content", QJsonObject{{"topic", "Room Topic"}}}, - {"unsigned", QJsonObject{{"age", 22}, {"transaction_id", "randomid"}}}, - {"type", "m.room.topic"}}; - - Event<TopicEventContent> topic_event; - topic_event.deserialize(data); - EXPECT_EQ(topic_event.content().topic(), "Room Topic"); - EXPECT_EQ(topic_event.unsignedData().age(), 22); - EXPECT_EQ(topic_event.unsignedData().transactionId(), "randomid"); - EXPECT_EQ(topic_event.serialize(), data); - - // AvatarEventContent - data = QJsonObject{ - {"content", QJsonObject{{"url", "https://matrix.org"}}}, - {"unsigned", QJsonObject{{"age", 1343434343}, {"transaction_id", "m33434.33"}}}, - {"type", "m.room.avatar"}}; - - Event<AvatarEventContent> avatar_event; - avatar_event.deserialize(data); - EXPECT_EQ(avatar_event.content().url().toString(), "https://matrix.org"); - EXPECT_EQ(avatar_event.unsignedData().age(), 1343434343); - EXPECT_EQ(avatar_event.unsignedData().transactionId(), "m33434.33"); - EXPECT_EQ(avatar_event.serialize(), data); - - // AliasesEventContent - data = QJsonObject{ - {"content", - QJsonObject{{"aliases", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}}}, - {"unsigned", QJsonObject{{"transaction_id", "m33434.33"}}}, - {"type", "m.room.aliases"}}; - - Event<AliasesEventContent> aliases_event; - aliases_event.deserialize(data); - EXPECT_EQ(aliases_event.content().aliases().size(), 2); - EXPECT_EQ(aliases_event.unsignedData().transactionId(), "m33434.33"); - EXPECT_EQ(aliases_event.serialize(), data); - - // CreateEventContent - data = QJsonObject{{"content", QJsonObject{{"creator", "@alice:matrix.org"}}}, - {"unsigned", QJsonObject{{"age", 2233}}}, - {"type", "m.room.create"}}; - - Event<CreateEventContent> create_event; - create_event.deserialize(data); - EXPECT_EQ(create_event.content().creator(), "@alice:matrix.org"); - EXPECT_EQ(create_event.unsignedData().age(), 2233); - EXPECT_EQ(create_event.serialize(), data); - - // JoinRulesEventContent - data = QJsonObject{{"content", QJsonObject{{"join_rule", "private"}}}, - {"type", "m.room.join_rules"}}; - - Event<JoinRulesEventContent> join_rules_event; - join_rules_event.deserialize(data); - EXPECT_EQ(join_rules_event.content().joinRule(), JoinRule::Private); - EXPECT_EQ(join_rules_event.serialize(), data); -} - -TEST(BaseEvent, DeserializationException) -{ - 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"}}}, - {"type", "m.room.join_rules"}}; - - Event<JoinRulesEventContent> event2; - ASSERT_THROW(event2.deserialize(data), DeserializationException); - - data = QJsonObject{{"contents", QJsonObject{{"join_rule", "private"}}}, - {"unsigned", QJsonObject{{"age", "222"}}}, - {"type", "m.room.join_rules"}}; - - Event<JoinRulesEventContent> event3; - ASSERT_THROW(event3.deserialize(data), DeserializationException); -} - -TEST(RoomEvent, Deserialization) -{ - auto data = QJsonObject{{"content", QJsonObject{{"name", "Name"}}}, - {"event_id", "$asdfafdf8af:matrix.org"}, - {"room_id", "!aasdfaeae23r9:matrix.org"}, - {"sender", "@alice:matrix.org"}, - {"origin_server_ts", 1323238293289323LL}, - {"type", "m.room.name"}}; - - RoomEvent<NameEventContent> event; - event.deserialize(data); - - EXPECT_EQ(event.eventId(), "$asdfafdf8af:matrix.org"); - EXPECT_EQ(event.roomId(), "!aasdfaeae23r9:matrix.org"); - EXPECT_EQ(event.sender(), "@alice:matrix.org"); - EXPECT_EQ(event.timestamp(), 1323238293289323); - EXPECT_EQ(event.content().name(), "Name"); - EXPECT_EQ(event.serialize(), data); -} - -TEST(RoomEvent, DeserializationException) -{ - auto data = QJsonObject{{"content", QJsonObject{{"name", "Name"}}}, - {"event_id", "$asdfafdf8af:matrix.org"}, - {"room_id", "!aasdfaeae23r9:matrix.org"}, - {"origin_server_ts", 1323238293289323LL}, - {"type", "m.room.name"}}; - - RoomEvent<NameEventContent> event; - - try { - event.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("sender key is missing", e.what()); - } -} - -TEST(StateEvent, Deserialization) -{ - auto data = QJsonObject{{"content", QJsonObject{{"name", "Name"}}}, - {"event_id", "$asdfafdf8af:matrix.org"}, - {"state_key", "some_state_key"}, - {"prev_content", QJsonObject{{"name", "Previous Name"}}}, - {"room_id", "!aasdfaeae23r9:matrix.org"}, - {"sender", "@alice:matrix.org"}, - {"origin_server_ts", 1323238293289323LL}, - {"type", "m.room.name"}}; - - StateEvent<NameEventContent> event; - event.deserialize(data); - - EXPECT_EQ(event.eventId(), "$asdfafdf8af:matrix.org"); - EXPECT_EQ(event.roomId(), "!aasdfaeae23r9:matrix.org"); - EXPECT_EQ(event.sender(), "@alice:matrix.org"); - EXPECT_EQ(event.timestamp(), 1323238293289323); - EXPECT_EQ(event.content().name(), "Name"); - EXPECT_EQ(event.stateKey(), "some_state_key"); - EXPECT_EQ(event.previousContent().name(), "Previous Name"); - EXPECT_EQ(event.serialize(), data); -} - -TEST(StateEvent, DeserializationException) -{ - auto data = QJsonObject{{"content", QJsonObject{{"name", "Name"}}}, - {"event_id", "$asdfafdf8af:matrix.org"}, - {"prev_content", QJsonObject{{"name", "Previous Name"}}}, - {"room_id", "!aasdfaeae23r9:matrix.org"}, - {"sender", "@alice:matrix.org"}, - {"origin_server_ts", 1323238293289323LL}, - {"type", "m.room.name"}}; - - StateEvent<NameEventContent> event; - - try { - event.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("state_key key is missing", e.what()); - } -} - -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.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); -} - -TEST(AliasesEventContent, Deserialization) -{ - auto data = QJsonObject{{"aliases", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}}; - - AliasesEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.aliases().size(), 2); - EXPECT_EQ(content.serialize(), data); -} - -TEST(AliasesEventContent, NotAnObject) -{ - auto data = QJsonArray{"#test:matrix.org", "#test2:matrix.org"}; - - AliasesEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(AliasesEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", QJsonArray{"#test:matrix.org", "#test2:matrix.org"}}}; - - AliasesEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("aliases key is missing", e.what()); - } -} - -TEST(AvatarEventContent, Deserialization) -{ - auto data = QJsonObject{{"url", "https://matrix.org/avatar.png"}}; - - AvatarEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.url().toString(), "https://matrix.org/avatar.png"); - EXPECT_EQ(content.serialize(), data); -} - -TEST(AvatarEventContent, NotAnObject) -{ - auto data = QJsonArray{"key", "url"}; - - AvatarEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(AvatarEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", "https://matrix.org"}}; - - AvatarEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("url key is missing", e.what()); - } -} - -TEST(CreateEventContent, Deserialization) -{ - auto data = QJsonObject{{"creator", "@alice:matrix.org"}}; - - CreateEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.creator(), "@alice:matrix.org"); - EXPECT_EQ(content.serialize(), data); -} - -TEST(CreateEventContent, NotAnObject) -{ - auto data = QJsonArray{"creator", "alice"}; - - CreateEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(CreateEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", "@alice:matrix.org"}}; - - CreateEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("creator key is missing", e.what()); - } -} - -TEST(HistoryVisibilityEventContent, Deserialization) -{ - auto data = QJsonObject{{"history_visibility", "invited"}}; - - HistoryVisibilityEventContent content; - content.deserialize(data); - EXPECT_EQ(content.historyVisibility(), HistoryVisibility::Invited); - - data = QJsonObject{{"history_visibility", "joined"}}; - - content.deserialize(data); - EXPECT_EQ(content.historyVisibility(), HistoryVisibility::Joined); - - data = QJsonObject{{"history_visibility", "shared"}}; - - content.deserialize(data); - EXPECT_EQ(content.historyVisibility(), HistoryVisibility::Shared); - - data = QJsonObject{{"history_visibility", "world_readable"}}; - - content.deserialize(data); - EXPECT_EQ(content.historyVisibility(), HistoryVisibility::WorldReadable); -} - -TEST(HistoryVisibilityEventContent, NotAnObject) -{ - auto data = QJsonArray{"history_visibility", "alice"}; - - HistoryVisibilityEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(HistoryVisibilityEventContent, InvalidHistoryVisibility) -{ - auto data = QJsonObject{{"history_visibility", "wrong"}}; - - HistoryVisibilityEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("Unknown history_visibility value: wrong", e.what()); - } -} - -TEST(HistoryVisibilityEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", "joined"}}; - - HistoryVisibilityEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("history_visibility key is missing", e.what()); - } -} - -TEST(JoinRulesEventContent, Deserialization) -{ - auto data = QJsonObject{{"join_rule", "invite"}}; - - JoinRulesEventContent content; - content.deserialize(data); - EXPECT_EQ(content.joinRule(), JoinRule::Invite); - - data = QJsonObject{{"join_rule", "knock"}}; - - content.deserialize(data); - EXPECT_EQ(content.joinRule(), JoinRule::Knock); - - data = QJsonObject{{"join_rule", "private"}}; - - content.deserialize(data); - EXPECT_EQ(content.joinRule(), JoinRule::Private); - - data = QJsonObject{{"join_rule", "public"}}; - - content.deserialize(data); - EXPECT_EQ(content.joinRule(), JoinRule::Public); -} - -TEST(JoinRulesEventContent, NotAnObject) -{ - auto data = QJsonArray{"rule", "alice"}; - - JoinRulesEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(JoinRulesEventContent, InvalidHistoryVisibility) -{ - auto data = QJsonObject{{"join_rule", "wrong"}}; - - JoinRulesEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("Unknown join_rule value: wrong", e.what()); - } -} - -TEST(JoinRulesEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", "invite"}}; - - JoinRulesEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("join_rule key is missing", e.what()); - } -} - -TEST(CanonicalAliasEventContent, Deserialization) -{ - auto data = QJsonObject{{"alias", "Room Alias"}}; - - CanonicalAliasEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.alias(), "Room Alias"); - EXPECT_EQ(content.serialize(), data); -} - -TEST(CanonicalAliasEventContent, NotAnObject) -{ - auto data = QJsonArray{"alias", "Room Alias"}; - - CanonicalAliasEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(CanonicalAliasEventContent, MissingKey) -{ - auto data = QJsonObject{{"key", "alias"}}; - - CanonicalAliasEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("alias key is missing", e.what()); - } -} - -TEST(MemberEventContent, Deserialization) -{ - MemberEventContent content; - - auto data = QJsonObject{{"membership", "join"}}; - - content.deserialize(data); - EXPECT_EQ(content.membershipState(), Membership::Join); - - data = QJsonObject{{"membership", "invite"}, {"displayname", "Username"}}; - - content.deserialize(data); - EXPECT_EQ(content.membershipState(), Membership::Invite); - EXPECT_EQ(content.displayName(), "Username"); - - data = QJsonObject{{"membership", "leave"}, {"avatar_url", "https://matrix.org"}}; - - content.deserialize(data); - EXPECT_EQ(content.membershipState(), Membership::Leave); - EXPECT_EQ(content.avatarUrl().toString(), "https://matrix.org"); - - data = QJsonObject{{"membership", "ban"}}; - - content.deserialize(data); - EXPECT_EQ(content.membershipState(), Membership::Ban); - - data = QJsonObject{{"membership", "knock"}}; - - content.deserialize(data); - EXPECT_EQ(content.membershipState(), Membership::Knock); -} - -TEST(MemberEventContent, InvalidMembership) -{ - auto data = QJsonObject{{"membership", "wrong"}}; - - MemberEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("Unknown membership value: wrong", e.what()); - } -} - -TEST(MemberEventContent, NotAnObject) -{ - auto data = QJsonArray{"name", "join"}; - - MemberEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(MemberEventContent, MissingName) -{ - auto data = QJsonObject{{"key", "random"}}; - - MemberEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("membership key is missing", e.what()); - } -} - -TEST(NameEventContent, Deserialization) -{ - auto data = QJsonObject{{"name", "Room Name"}}; - - NameEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.name(), "Room Name"); - EXPECT_EQ(content.serialize(), data); -} - -TEST(NameEventContent, NotAnObject) -{ - auto data = QJsonArray{"name", "Room Name"}; - - NameEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(NameEventContent, MissingName) -{ - auto data = QJsonObject{{"key", "Room Name"}}; - - NameEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("name key is missing", e.what()); - } -} - -TEST(PowerLevelsEventContent, DefaultValues) -{ - PowerLevelsEventContent power_levels; - - EXPECT_EQ(power_levels.banLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.inviteLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator)); - - EXPECT_EQ(power_levels.eventsDefaultLevel(), static_cast<int>(PowerLevels::User)); - EXPECT_EQ(power_levels.usersDefaultLevel(), static_cast<int>(PowerLevels::User)); - EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator)); - - // Default levels. - EXPECT_EQ(power_levels.userLevel("@joe:matrix.org"), static_cast<int>(PowerLevels::User)); - EXPECT_EQ(power_levels.eventLevel("m.room.message"), static_cast<int>(PowerLevels::User)); -} - -TEST(PowerLevelsEventContent, FullDeserialization) -{ - auto data = QJsonObject{ - {"ban", 1}, - {"invite", 2}, - {"kick", 3}, - {"redact", 4}, - - {"events_default", 5}, - {"state_default", 6}, - {"users_default", 7}, - - {"events", QJsonObject{{"m.message.text", 8}, {"m.message.image", 9}}}, - {"users", QJsonObject{{"@alice:matrix.org", 10}, {"@bob:matrix.org", 11}}}, - }; - - PowerLevelsEventContent power_levels; - power_levels.deserialize(data); - - EXPECT_EQ(power_levels.banLevel(), 1); - EXPECT_EQ(power_levels.inviteLevel(), 2); - EXPECT_EQ(power_levels.kickLevel(), 3); - EXPECT_EQ(power_levels.redactLevel(), 4); - - EXPECT_EQ(power_levels.eventsDefaultLevel(), 5); - EXPECT_EQ(power_levels.stateDefaultLevel(), 6); - EXPECT_EQ(power_levels.usersDefaultLevel(), 7); - - EXPECT_EQ(power_levels.userLevel("@alice:matrix.org"), 10); - EXPECT_EQ(power_levels.userLevel("@bob:matrix.org"), 11); - EXPECT_EQ(power_levels.userLevel("@carl:matrix.org"), 7); - - EXPECT_EQ(power_levels.eventLevel("m.message.text"), 8); - EXPECT_EQ(power_levels.eventLevel("m.message.image"), 9); - EXPECT_EQ(power_levels.eventLevel("m.message.gif"), 5); - - EXPECT_EQ(power_levels.serialize(), data); -} - -TEST(PowerLevelsEventContent, PartialDeserialization) -{ - auto data = QJsonObject{ - {"ban", 1}, - {"invite", 2}, - - {"events_default", 5}, - {"users_default", 7}, - - {"users", QJsonObject{{"@alice:matrix.org", 10}, {"@bob:matrix.org", 11}}}, - }; - - PowerLevelsEventContent power_levels; - power_levels.deserialize(data); - - EXPECT_EQ(power_levels.banLevel(), 1); - EXPECT_EQ(power_levels.inviteLevel(), 2); - EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator)); - - EXPECT_EQ(power_levels.eventsDefaultLevel(), 5); - EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.usersDefaultLevel(), 7); - - EXPECT_EQ(power_levels.userLevel("@alice:matrix.org"), 10); - EXPECT_EQ(power_levels.userLevel("@bob:matrix.org"), 11); - EXPECT_EQ(power_levels.userLevel("@carl:matrix.org"), 7); - - EXPECT_EQ(power_levels.eventLevel("m.message.text"), 5); - EXPECT_EQ(power_levels.eventLevel("m.message.image"), 5); - EXPECT_EQ(power_levels.eventLevel("m.message.gif"), 5); -} - -TEST(PowerLevelsEventContent, NotAnObject) -{ - auto data = QJsonArray{"test", "test2"}; - - PowerLevelsEventContent power_levels; - - ASSERT_THROW(power_levels.deserialize(data), DeserializationException); -} - -TEST(TopicEventContent, Deserialization) -{ - auto data = QJsonObject{{"topic", "Room Topic"}}; - - TopicEventContent content; - content.deserialize(data); - - EXPECT_EQ(content.topic(), "Room Topic"); - EXPECT_EQ(content.serialize(), data); -} - -TEST(TopicEventContent, NotAnObject) -{ - auto data = QJsonArray{"topic", "Room Topic"}; - - TopicEventContent content; - - ASSERT_THROW(content.deserialize(data), DeserializationException); -} - -TEST(TopicEventContent, MissingName) -{ - auto data = QJsonObject{{"key", "Room Name"}}; - - TopicEventContent content; - ASSERT_THROW(content.deserialize(data), DeserializationException); - - try { - content.deserialize(data); - } catch (const DeserializationException &e) { - ASSERT_STREQ("topic key is missing", e.what()); - } -} diff --git a/tests/message_events.cc b/tests/message_events.cc deleted file mode 100644
index dfff50ab..00000000 --- a/tests/message_events.cc +++ /dev/null
@@ -1,287 +0,0 @@ -#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); -}