Changeset View
Changeset View
Standalone View
Standalone View
src/tests/crypto/inbound-group-session-test.cpp
| Show All 14 Lines | |||||
| static const auto resource = cryptoDumpResource(); | static const auto resource = cryptoDumpResource(); | ||||
| TEST_CASE("InboundGroupSession conversion from libolm to vodozemac") | TEST_CASE("InboundGroupSession conversion from libolm to vodozemac") | ||||
| { | { | ||||
| auto sessionJson = resource["a"]["inboundGroupSessions"][0][1]; | auto sessionJson = resource["a"]["inboundGroupSessions"][0][1]; | ||||
| auto session = sessionJson.template get<InboundGroupSession>(); | auto session = sessionJson.template get<InboundGroupSession>(); | ||||
| REQUIRE(session.valid()); | REQUIRE(session.valid()); | ||||
| REQUIRE(!session.isImported()); | |||||
| REQUIRE(session.ed25519Key() == sessionJson["ed25519Key"]); | REQUIRE(session.ed25519Key() == sessionJson["ed25519Key"]); | ||||
| auto encrypted = resource["megolmEncrypted"]; | auto encrypted = resource["megolmEncrypted"]; | ||||
| auto plainText = resource["megolmPlainText"]; | auto plainText = resource["megolmPlainText"]; | ||||
| auto a = Crypto(); | auto a = Crypto(); | ||||
| a.loadJson(resource["a"]); | a.loadJson(resource["a"]); | ||||
| auto decrypted = a.decrypt(encrypted); | auto decrypted = a.decrypt(encrypted); | ||||
| REQUIRE(decrypted.has_value()); | REQUIRE(decrypted.has_value()); | ||||
| auto decryptedJson = json::parse(decrypted.value()); | auto decryptedJson = json::parse(decrypted.value()); | ||||
| ▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| TEST_CASE("invalid InboundGroupSession is copyable") | TEST_CASE("invalid InboundGroupSession is copyable") | ||||
| { | { | ||||
| InboundGroupSession session("AAAAAA", "ed25519Key"); | InboundGroupSession session("AAAAAA", "ed25519Key"); | ||||
| REQUIRE(!session.valid()); | REQUIRE(!session.valid()); | ||||
| auto session2 = session; | auto session2 = session; | ||||
| REQUIRE(!session.valid()); | REQUIRE(!session.valid()); | ||||
| } | |||||
| TEST_CASE("export and import InboundGroupSession", "[crypto]") | |||||
| { | |||||
| auto ogs = OutboundGroupSession(RandomTag{}, genRandomData(OutboundGroupSession::constructRandomSize()), 0); | |||||
| auto igs = InboundGroupSession(ogs.sessionKey(), "placeholder"); | |||||
| auto exported = igs.toExportFormat(); | |||||
| auto imported = InboundGroupSession(exported, "placeholder"); | |||||
| REQUIRE(imported.valid()); | |||||
| REQUIRE(imported.isImported()); | |||||
| WHEN("try to decrypt") { | |||||
| auto encrypted1 = ogs.encrypt("text"); | |||||
| auto res = imported.decrypt(encrypted1, "$1", 1234); | |||||
| REQUIRE(res.has_value()); | |||||
| REQUIRE(res.value() == "text"); | |||||
| } | |||||
| WHEN("serialization") { | |||||
| auto j = json(imported); | |||||
| auto deserialized = j.template get<InboundGroupSession>(); | |||||
| REQUIRE(deserialized.valid()); | |||||
| REQUIRE(deserialized.isImported()); | |||||
| } | |||||
| } | } | ||||