/*
* Copyright (C) 2013 Intel Corporation
* All rights reserved.
*/
package test.security;
import com.intel.dcsg.cpg.crypto.CryptographyException;
import com.intel.mtwilson.My;
import com.intel.mtwilson.MyConfiguration;
import com.intel.mtwilson.api.ClientFactory;
import com.intel.dcsg.cpg.crypto.RsaCredentialX509;
import com.intel.dcsg.cpg.crypto.SimpleKeystore;
import com.intel.dcsg.cpg.io.ByteArrayResource;
import com.intel.dcsg.cpg.io.FileResource;
import com.intel.mtwilson.ms.controller.ApiClientX509JpaController;
import com.intel.mtwilson.ms.controller.exceptions.IllegalOrphanException;
import com.intel.mtwilson.ms.controller.exceptions.MSDataException;
import com.intel.mtwilson.ms.controller.exceptions.NonexistentEntityException;
import com.intel.mtwilson.ms.data.ApiClientX509;
import com.intel.dcsg.cpg.tls.policy.impl.InsecureTlsPolicy;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableEntryException;
import java.security.cert.CertificateEncodingException;
import org.junit.Test;
/**
*
* @author jbuhacoff
*/
public class ClientRegistrationTest {
@Test
public void testRegisterClient() throws IOException, FileNotFoundException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableEntryException, CertificateEncodingException, IllegalOrphanException, NonexistentEntityException, MSDataException, CryptographyException {
// My.client().r
ByteArrayResource keystoreResource = new ByteArrayResource();
MyConfiguration config = My.configuration(); // new MyConfiguration();
// create and register a new api client
SimpleKeystore keystore = ClientFactory.createUserInResource(
keystoreResource,
config.getKeystoreUsername(),
config.getKeystorePassword(),
config.getMtWilsonURL(),
new InsecureTlsPolicy(),
config.getMtWilsonRoleArray()
);
// approve the new api client
if( keystore == null ) { throw new IllegalArgumentException("Cannot create user in resource: "+config.getKeystoreFile().getAbsolutePath()); }
RsaCredentialX509 rsaCredentialX509 = keystore.getRsaCredentialX509(config.getKeystoreUsername(), config.getKeystorePassword());
ApiClientX509JpaController jpaController = My.jpa().mwApiClientX509();
ApiClientX509 apiClient = jpaController.findApiClientX509ByFingerprint(rsaCredentialX509.identity());
apiClient.setStatus("Approved");
apiClient.setEnabled(true);
jpaController.edit(apiClient);
}
}