diff options
Diffstat (limited to 'tests/test_message.cpp')
-rw-r--r-- | tests/test_message.cpp | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/tests/test_message.cpp b/tests/test_message.cpp index ff14649..25693f5 100644 --- a/tests/test_message.cpp +++ b/tests/test_message.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015 OpenMarket Ltd +/* Copyright 2015-2016 OpenMarket Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,4 +62,51 @@ assert_equals(message2, output, 35); } /* Message encode test */ + +{ /* group message encode test */ + + TestCase test_case("Group message encode test"); + + size_t length = _olm_encode_group_message_length(200, 10, 8, 64); + size_t expected_length = 1 + (1+2) + (2+10) + 8 + 64; + assert_equals(expected_length, length); + + uint8_t output[50]; + uint8_t *ciphertext_ptr; + + _olm_encode_group_message( + 3, + 200, // counter + 10, // ciphertext length + output, + &ciphertext_ptr + ); + + uint8_t expected[] = + "\x03" + "\x08\xC8\x01" + "\x12\x0A"; + + assert_equals(expected, output, sizeof(expected)-1); + assert_equals(output+sizeof(expected)-1, ciphertext_ptr); +} /* group message encode test */ + +{ + TestCase test_case("Group message decode test"); + + struct _OlmDecodeGroupMessageResults results; + std::uint8_t message[] = + "\x03" + "\x08\xC8\x01" + "\x12\x0A" "ciphertext" + "hmacsha2" + "ed25519signature"; + + _olm_decode_group_message(message, sizeof(message)-1, 8, 16, &results); + assert_equals(std::uint8_t(3), results.version); + assert_equals(1, results.has_message_index); + assert_equals(std::uint32_t(200), results.message_index); + assert_equals(std::size_t(10), results.ciphertext_length); + assert_equals(ciphertext, results.ciphertext, 10); +} /* group message decode test */ } |