From 7ae6410f3714cb56d337213fb47afddbb5935cf9 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 10 Oct 2016 18:00:54 +0200 Subject: OLMKit: Add tests for OLMInboundGroupSession and OLMOutboundGroupSession --- xcode/OLMKitTests/OLMKitGroupTests.m | 76 +++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 15 deletions(-) (limited to 'xcode/OLMKitTests') diff --git a/xcode/OLMKitTests/OLMKitGroupTests.m b/xcode/OLMKitTests/OLMKitGroupTests.m index bcf83ef..9f5ad10 100644 --- a/xcode/OLMKitTests/OLMKitGroupTests.m +++ b/xcode/OLMKitTests/OLMKitGroupTests.m @@ -1,13 +1,25 @@ -// -// OLMKitGroupTests.m -// OLMKit -// -// Created by Emmanuel ROHEE on 10/10/16. -// Copyright © 2016 matrix.org. All rights reserved. -// +/* + Copyright 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ #import +#import + +#include "olm/olm.h" + @interface OLMKitGroupTests : XCTestCase @end @@ -24,16 +36,50 @@ [super tearDown]; } -- (void)testExample { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. +- (void)testAliceAndBob { + + OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession]; + XCTAssertGreaterThan(aliceSession.sessionIdentifier.length, 0); + XCTAssertGreaterThan(aliceSession.sessionKey.length, 0); + XCTAssertEqual(aliceSession.messageIndex, 0); + + // Store the session key before starting encrypting + NSString *sessionKey = aliceSession.sessionKey; + + NSString *message = @"Hello!"; + NSString *aliceToBobMsg = [aliceSession encryptMessage:message]; + + XCTAssertEqual(aliceSession.messageIndex, 1); + XCTAssertGreaterThanOrEqual(aliceToBobMsg.length, 0); + + OLMInboundGroupSession *bobSession = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithSessionKey:sessionKey]; + XCTAssertEqualObjects(aliceSession.sessionIdentifier, bobSession.sessionIdentifier); + + NSString *plaintext = [bobSession decryptMessage:aliceToBobMsg]; + XCTAssertEqualObjects(message, plaintext); +} + +- (void)testOutboundGroupSessionSerialization { + + OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession]; + + NSData *aliceData = [NSKeyedArchiver archivedDataWithRootObject:aliceSession]; + OLMOutboundGroupSession *aliceSession2 = [NSKeyedUnarchiver unarchiveObjectWithData:aliceData]; + + XCTAssertEqualObjects(aliceSession2.sessionKey, aliceSession.sessionKey); + XCTAssertEqualObjects(aliceSession2.sessionIdentifier, aliceSession.sessionIdentifier); } -- (void)testPerformanceExample { - // This is an example of a performance test case. - [self measureBlock:^{ - // Put the code you want to measure the time of here. - }]; +- (void)testInboundGroupSessionSerialization { + + OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession]; + + OLMInboundGroupSession *bobSession = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithSessionKey:aliceSession.sessionKey]; + + NSData *bobData = [NSKeyedArchiver archivedDataWithRootObject:bobSession]; + OLMInboundGroupSession *bobSession2 = [NSKeyedUnarchiver unarchiveObjectWithData:bobData]; + + XCTAssertEqualObjects(bobSession2.sessionIdentifier, aliceSession.sessionIdentifier); } @end -- cgit v1.2.3