/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.intel.mtwilson.user.management.client.jaxrs; 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.i18n.LocaleUtil; import com.intel.dcsg.cpg.io.UUID; import com.intel.dcsg.cpg.x509.X509Builder; import com.intel.mtwilson.My; import com.intel.mtwilson.crypto.password.PasswordUtil; import com.intel.mtwilson.user.management.rest.v2.model.Status; import com.intel.mtwilson.user.management.rest.v2.model.User; import com.intel.mtwilson.user.management.rest.v2.model.UserCollection; import com.intel.mtwilson.user.management.rest.v2.model.UserFilterCriteria; 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.UserLoginPassword; import java.nio.charset.Charset; import java.security.KeyPair; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.concurrent.TimeUnit; import org.junit.BeforeClass; import org.junit.Test; /** * * @author ssbangal */ public class UserTest { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserTest.class); private static Users client = null; private static UserLoginPasswords passwordClient = null; private static UserLoginCertificates certificateClient = null; @BeforeClass public static void init() throws Exception { client = new Users(My.configuration().getClientProperties()); passwordClient = new UserLoginPasswords(My.configuration().getClientProperties()); certificateClient = new UserLoginCertificates(My.configuration().getClientProperties()); } @Test public void testUser() throws NoSuchAlgorithmException, CertificateEncodingException { String userName = "TestUser999"; User createUser = new User(); createUser.setUsername(userName); createUser.setLocale(Locale.US); log.debug(LocaleUtil.toLanguageTag(createUser.getLocale())); createUser.setComment("Access needed for testing"); createUser = client.createUser(createUser); User retrievUser = client.retrieveUser(createUser.getId().toString()); log.debug("Retrieved user name is {}, locale is {} and comments is {}", retrievUser.getUsername(), retrievUser.getLocale().toString(), retrievUser.getComment()); createUser.setComment("Access approved"); createUser = client.editUser(createUser); UserFilterCriteria criteria = new UserFilterCriteria(); criteria.filter = false; UserCollection users = client.searchUsers(criteria); for(User user : users.getUsers()) { log.debug("Searched user name is {}, locale is {} and comments is {}", user.getUsername(), user.getLocale().toString(), user.getComment()); } // Create a login password entry for the user UserLoginPassword loginPasswordInfo = new UserLoginPassword(); loginPasswordInfo.setUserId(createUser.getId()); loginPasswordInfo.setAlgorithm("SHA256"); loginPasswordInfo.setIterations(1); loginPasswordInfo.setSalt("password".getBytes(Charset.forName("UTF-8"))); loginPasswordInfo.setPasswordHash(PasswordUtil.hash(("password".getBytes(Charset.forName("UTF-8"))), loginPasswordInfo)); loginPasswordInfo = passwordClient.createUserLoginPassword(loginPasswordInfo); loginPasswordInfo.setEnabled(true); loginPasswordInfo.setStatus(Status.APPROVED); List<String> roleSet = new ArrayList<>(Arrays.asList("administrator", "tagadmin")); loginPasswordInfo.setRoles(roleSet); loginPasswordInfo = passwordClient.editUserLoginPassword(loginPasswordInfo); // Create a login certificate entry for the user KeyPair keyPair = RsaUtil.generateRsaKeyPair(RsaUtil.MINIMUM_RSA_KEY_SIZE); X509Certificate certificate = X509Builder.factory().selfSigned(String.format("CN=%s", userName), keyPair).expires(365, TimeUnit.DAYS).build(); UserLoginCertificate userLoginCertificate = new UserLoginCertificate(); userLoginCertificate.setUserId(createUser.getId()); userLoginCertificate.setCertificate(certificate.getEncoded()); userLoginCertificate.setComment("Self signed cert."); userLoginCertificate = certificateClient.createUserLoginCertificate(userLoginCertificate); userLoginCertificate.setEnabled(true); userLoginCertificate.setStatus(Status.APPROVED); userLoginCertificate.setRoles(roleSet); userLoginCertificate = certificateClient.editUserLoginCertificate(userLoginCertificate); client.deleteUser(createUser.getId().toString()); } @Test public void testUserDeleteSearchCriteria() throws Exception { UserFilterCriteria criteria = new UserFilterCriteria(); criteria.nameContains = "Developer"; client.deleteUser(criteria); } }