add unit tests for CommandApdu
This commit is contained in:
parent
911d2a1c96
commit
edaa629f46
|
@ -0,0 +1,102 @@
|
|||
package org.sufficientlysecure.keychain.securitytoken;
|
||||
|
||||
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.sufficientlysecure.keychain.KeychainTestRunner;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
@RunWith(KeychainTestRunner.class)
|
||||
public class CommandApduTest {
|
||||
static final byte[] DATA_LONG = new byte[500];
|
||||
static final byte[] DATA_SHORT = { 1, 2, 3 };
|
||||
static final int CLA = 1;
|
||||
static final int INS = 2;
|
||||
static final int P1 = 3;
|
||||
static final int P2 = 4;
|
||||
static final int NE_SHORT = 5;
|
||||
static final int NE_LONG = 500;
|
||||
static final int NE_SPECIAL = 256;
|
||||
|
||||
@Test
|
||||
public void testCase1() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase2s() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, NE_SHORT);
|
||||
|
||||
assertEquals(5, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase2e() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, NE_LONG);
|
||||
|
||||
assertEquals(7, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase2e_specialNe() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, NE_SPECIAL);
|
||||
|
||||
assertEquals(5, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase3s() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, DATA_SHORT);
|
||||
|
||||
assertEquals(4 + 1 + DATA_SHORT.length, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase3e() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, DATA_LONG);
|
||||
|
||||
assertEquals(4 + 3 + DATA_LONG.length, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase4s() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, DATA_SHORT, 5);
|
||||
|
||||
assertArrayEquals(Hex.decode("010203040301020305"), commandApdu.toBytes());
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCase4e() throws Exception {
|
||||
CommandApdu commandApdu = CommandApdu.create(CLA, INS, P1, P2, DATA_LONG, 5);
|
||||
|
||||
assertEquals(4 + 5 + DATA_LONG.length, commandApdu.toBytes().length);
|
||||
|
||||
assertParsesCorrectly(commandApdu);
|
||||
}
|
||||
|
||||
private void assertParsesCorrectly(CommandApdu commandApdu) {
|
||||
byte[] bytes = commandApdu.toBytes();
|
||||
CommandApdu parsedCommandApdu = CommandApdu.fromBytes(bytes);
|
||||
assertEquals(commandApdu, parsedCommandApdu);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue