//* Licensed Materials - Property of *
//* IBM *
//* Miracle A/S *
//* Alexandra Instituttet A/S *
//* *
//* eu.abc4trust.pabce.1.34 *
//* *
//* (C) Copyright IBM Corp. 2014. All Rights Reserved. *
//* (C) Copyright Miracle A/S, Denmark. 2014. All Rights Reserved. *
//* (C) Copyright Alexandra Instituttet A/S, Denmark. 2014. All *
//* Rights Reserved. *
//* US Government Users Restricted Rights - Use, duplication or *
//* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *
//* *
//* This file is licensed under the Apache License, Version 2.0 (the *
//* "License"); you may not use this file except in compliance with *
//* the License. You may obtain a copy of the License at: *
//* http://www.apache.org/licenses/LICENSE-2.0 *
//* Unless required by applicable law or agreed to in writing, *
//* software distributed under the License is distributed on an *
//* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
//* KIND, either express or implied. See the License for the *
//* specific language governing permissions and limitations *
//* under the License. *
//*/**/****************************************************************
package eu.abc4trust.ri.servicehelper.issuer;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import eu.abc4trust.ri.servicehelper.user.UserHelper;
import eu.abc4trust.xml.IssuanceMessage;
import eu.abc4trust.xml.ObjectFactory;
import eu.abc4trust.xml.RevocationAuthorityParameters;
import eu.abc4trust.xml.util.XmlUtils;
/**
* Unit test for simple App.
*/
public class IssuanceHelperTest {
@Before
public void alwaysResetEngine() throws Exception {
IssuanceHelper.resetInstance();
UserHelper.resetInstance();
}
@Test(expected = IllegalStateException.class)
public void test_notInit() throws Exception {
IssuanceHelper.getInstance();
}
static ObjectFactory of = new ObjectFactory();
private final SpecAndPolicy idcard_idemix = new SpecAndPolicy("idcard_idemix",
CryptoTechnology.IDEMIX, null, 10, 0,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationSimpleIdentitycard.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicySimpleIdentitycard.xml",
"http://my.country/identitycard/issuancekey_v1.0/idemix");
private final SpecAndPolicy idcard_uprove = new SpecAndPolicy("idcard_uprove",
CryptoTechnology.UPROVE, null, 10, 1,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationSimpleIdentitycard.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicySimpleIdentitycard.xml",
"http://my.country/identitycard/issuancekey_v1.0/uprove");
@SuppressWarnings("unused")
private final SpecAndPolicy idcard_missmatch = new SpecAndPolicy("idcard_missmatch",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationSimpleIdentitycard.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicySimpleIdentitycard.xml");
private final SpecAndPolicy creditcard_visa = new SpecAndPolicy("creditcard_visa",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationRevocableCreditcard.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicyRevocableCreditcardVisa.xml");
private final SpecAndPolicy creditcard_amex = new SpecAndPolicy("creditcard_amex",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationRevocableCreditcardAmex.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicyRevocableCreditcardAmex.xml");
private final SpecAndPolicy passport_ch = new SpecAndPolicy("passport_ch",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/credspecs/credentialSpecificationPassport.xml",
"/eu/abc4trust/sampleXml/issuance/issuancePolicyPassport.xml");
private final SpecAndPolicy patras_university = new SpecAndPolicy("patras_university",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/patras/credentialSpecificationPatrasUniversity.xml",
"/eu/abc4trust/sampleXml/patras/issuancePolicyPatrasUniversity.xml");
private final SpecAndPolicy patras_cource = new SpecAndPolicy("patras_course",
CryptoTechnology.IDEMIX, 10, 0,
"/eu/abc4trust/sampleXml/patras/credentialSpecificationPatrasCourse.xml",
"/eu/abc4trust/sampleXml/patras/issuancePolicyPatrasCourse.xml");
@SuppressWarnings("unused")
private final String credSpecUID = "http://my.country/identitycard/specification";
private String getFolderName() {
if (new File("target").exists()) {
return "target";
} else {
return "service-helper/target";
}
}
private String getCurrentIssuerPrefix(String name) {
final String file_part_of_name;
file_part_of_name = "issuer_ut_" + name + "_";
return this.getFolderName() + "/" + file_part_of_name;
}
private void test_init(String test_name, SpecAndPolicy... list) throws Exception {
this.test_init(false, test_name, list);
}
private void test_init(boolean clearFiles, String test_name, SpecAndPolicy... list)
throws Exception {
String fileStoragePrefix;
String folderName = this.getFolderName();
File folder = new File(folderName);
fileStoragePrefix = this.getCurrentIssuerPrefix(test_name);
System.out.println("FILESTORAGE PREFIX!!!" + fileStoragePrefix);
if (clearFiles && folder.exists()) {
File[] storage_file_list = folder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File arg0, String arg1) {
if (arg1.startsWith("issuer_ut_")) {
return true;
} else {
return false;
}
}
});
System.out.println("DELETE FILES : " + storage_file_list);
for (File f : storage_file_list) {
System.out.println("Delete Files : " + f.getAbsolutePath());
f.delete();
}
}
String systemAndIssuerParamsPrefix = fileStoragePrefix;
IssuanceHelper.initInstance(1024, systemAndIssuerParamsPrefix, fileStoragePrefix, list,
new ArrayList<RevocationAuthorityParameters>());
}
// @Test()
public void test_initIssuance() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("idcard", this.idcard_idemix);
IssuanceHelper helper = IssuanceHelper.getInstance();
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("Firstname", "Hans Guldager");
attributeValueMap.put("Lastname", "Knudsen");
attributeValueMap.put("Birthday", new Date());
helper.initIssuance("idcard", attributeValueMap);
}
// @Test()
public void test_initIssuance_reuse() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("idcard", this.idcard_idemix);
IssuanceHelper helper = IssuanceHelper.getInstance();
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("Firstname", "Hans Guldager");
attributeValueMap.put("Lastname", "Knudsen");
attributeValueMap.put("Birthday", new Date());
helper.initIssuance("idcard", attributeValueMap);
}
@Test()
public void test_patrasCredSpecs() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("patras", this.patras_university, this.patras_cource);
}
@Test()
public void test_creditcard_visa() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("visa", this.creditcard_visa);
}
@Test()
public void test_creditcard_amex() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("amex", this.creditcard_amex);
}
@Test()
public void test_passport_ch() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("passport", this.passport_ch);
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("http://abc4trust.eu/wp2/abcschemav1.0/revocationhandle",
"http://admin.ch/passport/revocation/parameters");
attributeValueMap.put("Name", "Alice");
attributeValueMap.put("LastName", "Nextdoor");
attributeValueMap.put("PassportNumber", 42);
Calendar cal = Calendar.getInstance();
cal.set(2011, 1, 1, 0, 0, 0);
attributeValueMap.put("Issued", cal.getTime());
cal.set(2014, 1, 1, 0, 0, 0);
attributeValueMap.put("Expires", cal.getTime());
attributeValueMap.put("IssuedBy", "service_issuer_integration_test");
IssuanceMessage server_im =
IssuanceHelper.getInstance().initIssuance("passport_ch", attributeValueMap);
System.out.println(" - initial message - server : "
+ XmlUtils.toXml(of.createIssuanceMessage(server_im), false));
}
@Test
public void test_idcard_init_idemix() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("bridged_idcard_idemix", this.idcard_idemix);
IssuanceHelper helper = IssuanceHelper.getInstance();
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("FirstName", "Hans Guldager");
attributeValueMap.put("LastName", "Knudsen");
attributeValueMap.put("Birthday", new Date());
IssuanceMessage im = helper.initIssuance("idcard_idemix", attributeValueMap);
System.out
.println("IssuanceMessage - Idemix : " + XmlUtils.toXml(of.createIssuanceMessage(im)));
}
@Test
public void test_idcard_init_uprove() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("bridged_idcard_uprove", this.idcard_uprove);
IssuanceHelper helper = IssuanceHelper.getInstance();
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("FirstName", "Hans Guldager");
attributeValueMap.put("LastName", "Knudsen");
attributeValueMap.put("Birthday", new Date());
IssuanceMessage im = helper.initIssuance("idcard_uprove", attributeValueMap);
System.out
.println("IssuanceMessage - Idemix : " + XmlUtils.toXml(of.createIssuanceMessage(im)));
}
@Test
public void test_bridged_init_both() throws Exception {
IssuanceHelper.resetInstance();
this.test_init("bridged_idcard_both", this.idcard_idemix, this.idcard_uprove);
IssuanceHelper helper = IssuanceHelper.getInstance();
Map<String, Object> attributeValueMap = new HashMap<String, Object>();
attributeValueMap.put("FirstName", "Hans Guldager");
attributeValueMap.put("LastName", "Knudsen");
attributeValueMap.put("Birthday", new Date());
IssuanceMessage im_idemix = helper.initIssuance("idcard_idemix", attributeValueMap);
System.out.println("IssuanceMessage - Idemix : "
+ XmlUtils.toXml(of.createIssuanceMessage(im_idemix)));
IssuanceMessage im_uprove = helper.initIssuance("idcard_uprove", attributeValueMap);
System.out.println("IssuanceMessage - UProve : "
+ XmlUtils.toXml(of.createIssuanceMessage(im_uprove)));
}
}