aboutsummaryrefslogtreecommitdiff
path: root/tests/test_message.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_message.cpp')
-rw-r--r--tests/test_message.cpp59
1 files changed, 58 insertions, 1 deletions
diff --git a/tests/test_message.cpp b/tests/test_message.cpp
index ff14649..30c10a0 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,61 @@ assert_equals(message2, output, 35);
} /* Message encode test */
+
+{ /* group message encode test */
+
+ TestCase test_case("Group message encode test");
+
+ const uint8_t session_id[] = "sessionid";
+ size_t session_id_len = 9;
+
+ size_t length = _olm_encode_group_message_length(
+ session_id_len, 200, 10, 8);
+ size_t expected_length = 1 + (2+session_id_len) + (1+2) + (2+10) + 8;
+ assert_equals(expected_length, length);
+
+ uint8_t output[50];
+ uint8_t *ciphertext_ptr;
+
+ _olm_encode_group_message(
+ 3,
+ session_id, session_id_len,
+ 200, // counter
+ 10, // ciphertext length
+ output,
+ &ciphertext_ptr
+ );
+
+ uint8_t expected[] =
+ "\x03"
+ "\x0A\x09sessionid"
+ "\x10\xC8\x01"
+ "\x1A\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"
+ "\x0A\x09sessionid"
+ "\x10\xC8\x01"
+ "\x1A\x0A" "ciphertext"
+ "hmacsha2";
+
+ const uint8_t expected_session_id[] = "sessionid";
+
+ _olm_decode_group_message(message, sizeof(message)-1, 8, &results);
+ assert_equals(std::uint8_t(3), results.version);
+ assert_equals(std::size_t(9), results.session_id_length);
+ assert_equals(expected_session_id, results.session_id, 9);
+ 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 */
}