package de.persosim.simulator.platform; import static org.junit.Assert.assertArrayEquals; import java.util.Collection; import java.util.NoSuchElementException; import org.junit.Before; import org.junit.Test; import de.persosim.simulator.cardobjects.CardObject; import de.persosim.simulator.cardobjects.DedicatedFile; import de.persosim.simulator.cardobjects.DedicatedFileIdentifier; import de.persosim.simulator.cardobjects.ElementaryFile; import de.persosim.simulator.cardobjects.FileIdentifier; import de.persosim.simulator.cardobjects.MasterFile; import de.persosim.simulator.cardobjects.ShortFileIdentifier; import de.persosim.simulator.exception.AccessDeniedException; import de.persosim.simulator.perso.DefaultPersoTestPki; import de.persosim.simulator.perso.Personalization; import de.persosim.simulator.test.PersoSimTestCase; import de.persosim.simulator.utils.HexString; public class PersonalizationHelperTest extends PersoSimTestCase { Personalization perso; FileIdentifier fid1; ShortFileIdentifier sfid1; byte[] content1; FileIdentifier fid2; ShortFileIdentifier sfid2; byte[] content2; DedicatedFileIdentifier df; /** * Create the test environment containing the elementary files and content. * * @throws AccessDeniedException */ @Before public void setUp() throws AccessDeniedException { perso = new DefaultPersoTestPki(); MasterFile mf = PersonalizationHelper.getUniqueCompatibleLayer(perso.getLayerList(), CommandProcessor.class) .getObjectTree(); fid1 = new FileIdentifier(0x0110); sfid1 = new ShortFileIdentifier(0x10); content1 = new byte[] { 1, 2, 3 }; fid2 = new FileIdentifier(0x010F); sfid2 = new ShortFileIdentifier(0x0F); content2 = new byte[] { 4, 5, 6 }; ElementaryFile file = new ElementaryFile(fid1, sfid1, content1); mf.addChild(file); ElementaryFile file2 = new ElementaryFile(fid2, sfid2, content2); df = new DedicatedFileIdentifier(HexString.toByteArray("A0 00 00 02 47 10 01")); Collection<CardObject> parentCandidates = mf.findChildren(df); ((DedicatedFile)parentCandidates.iterator().next()).addChild(file2); } /** * Test if getFileFromPerso returns the correct file content. * * @throws AccessDeniedException */ @Test public void testGetFileFromPerso() throws AccessDeniedException { byte[] foundFile = PersonalizationHelper.getFileFromPerso(perso, 272, null); assertArrayEquals("Content of found file does not match expected value", foundFile, content1); } /** * Test if getFileFromPerso returns the correct file content from ePass application. * * @throws AccessDeniedException */ @Test public void testGetFileFromPersoFromEpass() throws AccessDeniedException { byte[] foundFile = PersonalizationHelper.getFileFromPerso(perso, 271, df); assertArrayEquals("Content of found file does not match expected value", foundFile, content2); } /** * Use getFileFromPerso with file identifier not existing in given perso. * * @throws AccessDeniedException */ @Test(expected = NoSuchElementException.class) public void testGetFileFromPersoWrongFid() throws AccessDeniedException { PersonalizationHelper.getFileFromPerso(perso, 273, null); } }