/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.intel.mtwilson.as.rest.v2.resource;
import com.intel.dcsg.cpg.crypto.RsaUtil;
import com.intel.dcsg.cpg.crypto.Sha1Digest;
import com.intel.dcsg.cpg.crypto.Sha256Digest;
import com.intel.dcsg.cpg.io.UUID;
import com.intel.dcsg.cpg.x509.X509Builder;
import com.intel.mtwilson.user.management.rest.v2.model.Status;
import com.intel.mtwilson.user.management.rest.v2.model.UserLoginCertificate;
import com.intel.mtwilson.user.management.rest.v2.model.UserLoginCertificateCollection;
import com.intel.mtwilson.user.management.rest.v2.model.UserLoginCertificateFilterCriteria;
import com.intel.mtwilson.user.management.rest.v2.model.UserLoginCertificateLocator;
import com.intel.mtwilson.user.management.rest.v2.repository.UserLoginCertificateRepository;
import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
/**
*
* @author ssbangal
*/
public class UserLoginCertificateTest {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserLoginCertificateTest.class);
@Test
public void testUserLoginCertificate() throws Exception {
UserLoginCertificateRepository repo = new UserLoginCertificateRepository();
KeyPair keyPair;
X509Certificate certificate;
String userName = "superadmin1";
UUID userId = UUID.valueOf("8d29aa87-386d-490d-9491-ab0be4f5e7f9");
keyPair = RsaUtil.generateRsaKeyPair(RsaUtil.MINIMUM_RSA_KEY_SIZE);
certificate = X509Builder.factory().selfSigned(String.format("CN=%s", userName), keyPair).expires(365, TimeUnit.DAYS).build();
UUID userLoginCertId = new UUID();
UserLoginCertificate userLoginCertificate = new UserLoginCertificate();
userLoginCertificate.setId(userLoginCertId);
userLoginCertificate.setUserId(userId);
userLoginCertificate.setCertificate(certificate.getEncoded());
userLoginCertificate.setComment("Self signed cert.");
userLoginCertificate.setExpires(certificate.getNotAfter());
userLoginCertificate.setSha1Hash(Sha1Digest.digestOf(certificate.getEncoded()).toByteArray());
userLoginCertificate.setSha256Hash(Sha256Digest.digestOf(certificate.getEncoded()).toByteArray());
repo.create(userLoginCertificate);
UserLoginCertificateFilterCriteria criteria = new UserLoginCertificateFilterCriteria();
criteria.id = userLoginCertId;
UserLoginCertificateCollection search = repo.search(criteria);
for (UserLoginCertificate obj : search.getUserLoginCertificates()) {
log.debug("User login certificate retrieved has roles {}", obj.getRoles().toString());
}
userLoginCertificate.setEnabled(true);
userLoginCertificate.setStatus(Status.APPROVED);
List<String> roleSet = new ArrayList<>(Arrays.asList("administrator", "tagadmin"));
userLoginCertificate.setRoles(roleSet);
repo.store(userLoginCertificate);
UserLoginCertificateLocator locator = new UserLoginCertificateLocator();
locator.id = userLoginCertId;
UserLoginCertificate retrieve = repo.retrieve(locator);
log.debug("User login password retrieved has roles {}", retrieve.getRoles().toString());
repo.delete(locator);
}
}