package de.persosim.simulator.cardobjects; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import de.persosim.simulator.exception.AccessDeniedException; import de.persosim.simulator.seccondition.SecCondition; import de.persosim.simulator.secstatus.SecStatus; import de.persosim.simulator.test.PersoSimTestCase; import de.persosim.simulator.tlv.ConstructedTlvDataObject; import de.persosim.simulator.tlv.TlvTag; import mockit.Mocked; public class DedicatedFileTest extends PersoSimTestCase { byte [] dfName; DedicatedFileIdentifier dfIdentifier; FileIdentifier fileIdentifier; @Mocked SecStatus mockedSecurityStatus; @Before public void setUp(){ dfName = new byte []{1,2,3,4,5}; dfIdentifier = new DedicatedFileIdentifier(dfName); fileIdentifier = new FileIdentifier(1); } @Test public void testGetFileControlParameterObject(){ DedicatedFile df = new DedicatedFile(fileIdentifier, dfIdentifier); ConstructedTlvDataObject fcp = df.getFileControlParameterDataObject(); TlvTag dfNameTag = new TlvTag((byte)0x84); assertTrue(fcp.containsTlvDataObject(dfNameTag)); assertArrayEquals(dfName, fcp.getTlvDataObject(dfNameTag).getValueField()); } @Test(expected = AccessDeniedException.class) public void testAddChildNoAccessRights() throws Exception{ DedicatedFile df = new DedicatedFile(fileIdentifier, dfIdentifier); df.setSecStatus(mockedSecurityStatus); df.updateLifeCycleState(Iso7816LifeCycleState.OPERATIONAL_ACTIVATED); assertTrue(df.getChildren().size() == 0); df.addChild(new NullCardObject()); } @Test(expected = AccessDeniedException.class) public void testAddChildAccessRightsValid() throws Exception{ DedicatedFile df = new DedicatedFile(fileIdentifier, dfIdentifier, SecCondition.DENIED); df.setSecStatus(mockedSecurityStatus); df.updateLifeCycleState(Iso7816LifeCycleState.OPERATIONAL_ACTIVATED); assertTrue(df.getChildren().size() == 0); df.addChild(new NullCardObject()); } }