package de.persosim.simulator.test.globaltester.perso;
import static org.globaltester.logging.BasicLogger.log;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import org.junit.Test;
import de.persosim.simulator.perso.DefaultPersoGt;
import de.persosim.simulator.test.globaltester.GlobalTesterTest;
import de.persosim.simulator.test.globaltester.GtConstants;
import de.persosim.simulator.test.globaltester.GtSuiteDescriptor;
import de.persosim.simulator.test.globaltester.JobDescriptor;
import de.persosim.simulator.test.globaltester.SimulatorReset;
/**
* Main testcase that checks the configuration of the DefaultPerso against all
* GlobalTester tests known to be good.
* <p/>
* This TestCase shall be extended for each new working functionality and
* provide a means to quickly check the overall status.
* <p/>
* For debugging purposes the content of this Suite can be quickly adapted to
* contain only specific configurations. Therefore code is contained in line
* comments that can be quickly adapted to specific test means. When using this
* option keep in mind that all results of such debugging should be covered by a
* specific unit test.
*
* @author amay
*
*/
public class GtDefaultPersoTest extends GlobalTesterTest {
@Override
public void resetPersonalization() {
persoCache = new DefaultPersoGt();
}
@Override
public Collection<String> getSupportedProfiles() {
HashSet<String> retVal = new HashSet<String>();
retVal.add(GtConstants.PROFILE_ECDH);
retVal.add(GtConstants.PROFILE_PACE);
retVal.add(GtConstants.PROFILE_PACE_CAN);
retVal.add(GtConstants.PROFILE_PACE_ECDH);
retVal.add(GtConstants.PROFILE_PACE_GM);
retVal.add(GtConstants.PROFILE_CA2);
retVal.add(GtConstants.PROFILE_CS);
retVal.add(GtConstants.PROFILE_TA2);
retVal.add(GtConstants.PROFILE_ECDSA);
retVal.add(GtConstants.PROFILE_eID);
retVal.add(GtConstants.PROFILE_eID_DG1);
retVal.add(GtConstants.PROFILE_eID_DG2);
retVal.add(GtConstants.PROFILE_eID_DG3);
retVal.add(GtConstants.PROFILE_eID_DG4);
retVal.add(GtConstants.PROFILE_eID_DG5);
retVal.add(GtConstants.PROFILE_eID_DG6);
retVal.add(GtConstants.PROFILE_eID_DG7);
retVal.add(GtConstants.PROFILE_eID_DG8);
retVal.add(GtConstants.PROFILE_eID_DG9);
// retVal.add(GtConstants.PROFILE_eID_DG10);
// retVal.add(GtConstants.PROFILE_eID_DG11);
// retVal.add(GtConstants.PROFILE_eID_DG12);
retVal.add(GtConstants.PROFILE_eID_DG13);
retVal.add(GtConstants.PROFILE_eID_DG17);
retVal.add(GtConstants.PROFILE_eID_DG18);
// retVal.add(GtConstants.PROFILE_eID_DG19);
// retVal.add(GtConstants.PROFILE_eID_DG20);
// retVal.add(GtConstants.PROFILE_eID_DG21);
retVal.add(GtConstants.PROFILE_EPASSPORT);
retVal.add(GtConstants.PROFILE_EPASSPORT_DG3);
retVal.add(GtConstants.PROFILE_EPASSPORT_DG4);
retVal.add(GtConstants.PROFILE_NOT_CNG_CAN_AR);
retVal.add(GtConstants.PROFILE_CNG_PIN_AR);
retVal.add(GtConstants.PROFILE_CNG_PIN_PUK);
retVal.add(GtConstants.PROFILE_AUX);
retVal.add(GtConstants.PROFILE_RI);
retVal.add(GtConstants.PROFILE_RI_DP);
retVal.add(GtConstants.PROFILE_MIG);
return retVal;
}
@Override
public Collection<JobDescriptor> getAllApplicableGtTests() {
Collection<JobDescriptor> retVal =
new ArrayList<JobDescriptor>();
retVal.add(GtConstants.SUITE_EAC2_ISO7816_H);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_I);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_J);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_K);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_L);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_M);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_N);
retVal.add(new SimulatorReset());
retVal.add(GtConstants.SUITE_EAC2_ISO7816_O);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_P);
retVal.add(new SimulatorReset());
retVal.add(GtConstants.SUITE_EAC2_ISO7816_Q);
retVal.add(GtConstants.SUITE_EAC2_ISO7816_R);
retVal.add(GtConstants.SUITE_EAC2_DATA_A);
retVal.add(GtConstants.SUITE_EAC2_DATA_B);
retVal.add(GtConstants.SUITE_EAC2_DATA_C);
retVal.add(GtConstants.SUITE_EAC2_EIDDATA_B);
retVal.add(GtConstants.SUITE_SAC_ISO7816_P);
return retVal;
}
@Test
public void testAllApplicableTests() throws Exception {
String suiteName;
gtServer.clearCollectedResults();
Collection<JobDescriptor> suites = getAllApplicableGtTests();
for (JobDescriptor curSuite : suites) {
if (curSuite instanceof SimulatorReset){
resetSimulator();
} else if (curSuite instanceof GtSuiteDescriptor){
suiteName = ((GtSuiteDescriptor)curSuite).getTestSuiteName();
log(this, "RINOTE: test suite name: " + suiteName);
if((suiteName.equals("testsuite_ISO7816_R")) || (suiteName.startsWith("EAC2_ISO7816_R"))) {
this.setRiKey((byte) 0x01, false);//TODO make this magic values dependent on the actual perso
gtServer.runSuiteAndSaveResults((GtSuiteDescriptor)curSuite);
this.setRiKey((byte) 0x02, true);
gtServer.runSuiteAndSaveResults((GtSuiteDescriptor)curSuite);
} else {
gtServer.runSuiteAndSaveResults((GtSuiteDescriptor)curSuite);
}
}
}
gtServer.checkAndClearResults(0, 0);
}
}