Add new tests for multiple creations of account and outbound group sessions: check random generation function in JNI works properly

This commit is contained in:
pedroGitt 2016-10-27 18:14:04 +02:00
parent 6348a45515
commit 1f1cbf2b3e
2 changed files with 156 additions and 12 deletions

View file

@ -41,6 +41,7 @@ import java.io.ObjectOutputStream;
import java.util.Iterator; import java.util.Iterator;
import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@ -238,10 +239,10 @@ public class OlmAccountTest {
@Test @Test
public void test13Serialization() { public void test13Serialization() {
FileOutputStream fileOutput = null; FileOutputStream fileOutput;
ObjectOutputStream objectOutput = null; ObjectOutputStream objectOutput;
OlmAccount accountRef = null; OlmAccount accountRef = null;
OlmAccount accountDeserial = null; OlmAccount accountDeserial;
try { try {
accountRef = new OlmAccount(); accountRef = new OlmAccount();
@ -348,11 +349,82 @@ public class OlmAccountTest {
} catch (OlmException e) { } catch (OlmException e) {
assertTrue(e.getMessage(),false); assertTrue(e.getMessage(),false);
} }
String clearMsg = null; String signedMsg = olmAccount.signMessage(null);
String signedMsg = olmAccount.signMessage(clearMsg);
assertNull(signedMsg); assertNull(signedMsg);
olmAccount.releaseAccount(); olmAccount.releaseAccount();
} }
/**
* Create multiple accounts and check that identity keys are still different.
* This test validates random series are provide enough random values.
*/
@Test
public void test17MultipleAccountCreation() {
try {
OlmAccount account1 = new OlmAccount();
OlmAccount account2 = new OlmAccount();
OlmAccount account3 = new OlmAccount();
OlmAccount account4 = new OlmAccount();
OlmAccount account5 = new OlmAccount();
OlmAccount account6 = new OlmAccount();
OlmAccount account7 = new OlmAccount();
OlmAccount account8 = new OlmAccount();
OlmAccount account9 = new OlmAccount();
OlmAccount account10 = new OlmAccount();
JSONObject identityKeysJson1 = account1.identityKeys();
JSONObject identityKeysJson2 = account2.identityKeys();
JSONObject identityKeysJson3 = account3.identityKeys();
JSONObject identityKeysJson4 = account4.identityKeys();
JSONObject identityKeysJson5 = account5.identityKeys();
JSONObject identityKeysJson6 = account6.identityKeys();
JSONObject identityKeysJson7 = account7.identityKeys();
JSONObject identityKeysJson8 = account8.identityKeys();
JSONObject identityKeysJson9 = account9.identityKeys();
JSONObject identityKeysJson10 = account10.identityKeys();
String identityKey1 = TestHelper.getIdentityKey(identityKeysJson1);
String identityKey2 = TestHelper.getIdentityKey(identityKeysJson2);
assertFalse(identityKey1.equals(identityKey2));
String identityKey3 = TestHelper.getIdentityKey(identityKeysJson3);
assertFalse(identityKey2.equals(identityKey3));
String identityKey4 = TestHelper.getIdentityKey(identityKeysJson4);
assertFalse(identityKey3.equals(identityKey4));
String identityKey5 = TestHelper.getIdentityKey(identityKeysJson5);
assertFalse(identityKey4.equals(identityKey5));
String identityKey6 = TestHelper.getIdentityKey(identityKeysJson6);
assertFalse(identityKey5.equals(identityKey6));
String identityKey7 = TestHelper.getIdentityKey(identityKeysJson7);
assertFalse(identityKey6.equals(identityKey7));
String identityKey8 = TestHelper.getIdentityKey(identityKeysJson8);
assertFalse(identityKey7.equals(identityKey8));
String identityKey9 = TestHelper.getIdentityKey(identityKeysJson9);
assertFalse(identityKey8.equals(identityKey9));
String identityKey10 = TestHelper.getIdentityKey(identityKeysJson10);
assertFalse(identityKey9.equals(identityKey10));
account1.releaseAccount();
account2.releaseAccount();
account3.releaseAccount();
account4.releaseAccount();
account5.releaseAccount();
account6.releaseAccount();
account7.releaseAccount();
account8.releaseAccount();
account9.releaseAccount();
account10.releaseAccount();
} catch (OlmException e) {
assertTrue(e.getMessage(),false);
}
}
} }

View file

@ -51,7 +51,7 @@ public class OlmGroupSessionTest {
private static OlmOutboundGroupSession mAliceOutboundGroupSession; private static OlmOutboundGroupSession mAliceOutboundGroupSession;
private static String mAliceSessionIdentifier; private static String mAliceSessionIdentifier;
private static long mAliceMessageIndex; private static long mAliceMessageIndex;
public static final String CLEAR_MESSAGE1 = "Hello!"; private static final String CLEAR_MESSAGE1 = "Hello!";
private static String mAliceToBobMessage; private static String mAliceToBobMessage;
private static OlmInboundGroupSession mBobInboundGroupSession; private static OlmInboundGroupSession mBobInboundGroupSession;
private static String mAliceOutboundSessionKey; private static String mAliceOutboundSessionKey;
@ -172,7 +172,7 @@ public class OlmGroupSessionTest {
@Test @Test
public void test14SerializeOutboundSession() { public void test14SerializeOutboundSession() {
OlmOutboundGroupSession outboundGroupSessionRef=null; OlmOutboundGroupSession outboundGroupSessionRef=null;
OlmOutboundGroupSession outboundGroupSessionSerial=null; OlmOutboundGroupSession outboundGroupSessionSerial;
// create one OUTBOUND GROUP SESSION // create one OUTBOUND GROUP SESSION
try { try {
@ -238,14 +238,13 @@ public class OlmGroupSessionTest {
catch (Exception e) { catch (Exception e) {
Log.e(LOG_TAG, "## test03SessionSerialization(): Exception Msg==" + e.getMessage()); Log.e(LOG_TAG, "## test03SessionSerialization(): Exception Msg==" + e.getMessage());
} }
} }
@Test @Test
public void test15SerializeInboundSession() { public void test15SerializeInboundSession() {
OlmOutboundGroupSession aliceOutboundGroupSession=null; OlmOutboundGroupSession aliceOutboundGroupSession=null;
OlmInboundGroupSession bobInboundGroupSessionRef=null; OlmInboundGroupSession bobInboundGroupSessionRef=null;
OlmInboundGroupSession bobInboundGroupSessionSerial=null; OlmInboundGroupSession bobInboundGroupSessionSerial;
// alice creates OUTBOUND GROUP SESSION // alice creates OUTBOUND GROUP SESSION
try { try {
@ -306,13 +305,86 @@ public class OlmGroupSessionTest {
catch (IOException e) { catch (IOException e) {
Log.e(LOG_TAG, "## test03SessionSerialization(): Exception IOException Msg==" + e.getMessage()); Log.e(LOG_TAG, "## test03SessionSerialization(): Exception IOException Msg==" + e.getMessage());
} }
/*catch (OlmException e) {
Log.e(LOG_TAG, "## test03SessionSerialization(): Exception OlmException Msg==" + e.getMessage());
}*/
catch (Exception e) { catch (Exception e) {
Log.e(LOG_TAG, "## test03SessionSerialization(): Exception Msg==" + e.getMessage()); Log.e(LOG_TAG, "## test03SessionSerialization(): Exception Msg==" + e.getMessage());
} }
}
/**
* Create multiple outbound group sessions and check that session Keys are different.
* This test validates random series are provide enough random values.
*/
@Test
public void test16MultipleOutboundSession() {
OlmOutboundGroupSession outboundGroupSession1;
OlmOutboundGroupSession outboundGroupSession2;
OlmOutboundGroupSession outboundGroupSession3;
OlmOutboundGroupSession outboundGroupSession4;
OlmOutboundGroupSession outboundGroupSession5;
OlmOutboundGroupSession outboundGroupSession6;
OlmOutboundGroupSession outboundGroupSession7;
OlmOutboundGroupSession outboundGroupSession8;
try {
outboundGroupSession1 = new OlmOutboundGroupSession();
outboundGroupSession2 = new OlmOutboundGroupSession();
outboundGroupSession3 = new OlmOutboundGroupSession();
outboundGroupSession4 = new OlmOutboundGroupSession();
outboundGroupSession5 = new OlmOutboundGroupSession();
outboundGroupSession6 = new OlmOutboundGroupSession();
outboundGroupSession7 = new OlmOutboundGroupSession();
outboundGroupSession8 = new OlmOutboundGroupSession();
// get the session key from the outbound group sessions
String sessionKey1 = outboundGroupSession1.sessionKey();
String sessionKey2 = outboundGroupSession2.sessionKey();
assertFalse(sessionKey1.equals(sessionKey2));
String sessionKey3 = outboundGroupSession3.sessionKey();
assertFalse(sessionKey2.equals(sessionKey3));
String sessionKey4 = outboundGroupSession4.sessionKey();
assertFalse(sessionKey3.equals(sessionKey4));
String sessionKey5 = outboundGroupSession5.sessionKey();
assertFalse(sessionKey4.equals(sessionKey5));
String sessionKey6 = outboundGroupSession6.sessionKey();
assertFalse(sessionKey5.equals(sessionKey6));
String sessionKey7 = outboundGroupSession7.sessionKey();
assertFalse(sessionKey6.equals(sessionKey7));
String sessionKey8 = outboundGroupSession8.sessionKey();
assertFalse(sessionKey7.equals(sessionKey8));
// get the session IDs from the outbound group sessions
String sessionId1 = outboundGroupSession1.sessionIdentifier();
String sessionId2 = outboundGroupSession2.sessionIdentifier();
assertFalse(sessionId1.equals(sessionId2));
String sessionId3 = outboundGroupSession3.sessionKey();
assertFalse(sessionId2.equals(sessionId3));
String sessionId4 = outboundGroupSession4.sessionKey();
assertFalse(sessionId3.equals(sessionId4));
String sessionId5 = outboundGroupSession5.sessionKey();
assertFalse(sessionId4.equals(sessionId5));
String sessionId6 = outboundGroupSession6.sessionKey();
assertFalse(sessionId5.equals(sessionId6));
String sessionId7 = outboundGroupSession7.sessionKey();
assertFalse(sessionId6.equals(sessionId7));
String sessionId8 = outboundGroupSession8.sessionKey();
assertFalse(sessionId7.equals(sessionId8));
} catch (OlmException e) {
assertTrue("Exception in OlmOutboundGroupSession, Exception code=" + e.getExceptionCode(), false);
}
} }
} }