org.ejbca.core.model.ra.UserNameGeneratorTest.java Source code

Java tutorial

Introduction

Here is the source code for org.ejbca.core.model.ra.UserNameGeneratorTest.java

Source

/*************************************************************************
 *                                                                       *
 *  EJBCA Community: The OpenSource Certificate Authority                *
 *                                                                       *
 *  This software is free software; you can redistribute it and/or       *
 *  modify it under the terms of the GNU Lesser General Public           *
 *  License as published by the Free Software Foundation; either         *
 *  version 2.1 of the License, or any later version.                    *
 *                                                                       *
 *  See terms of license at gnu.org.                                     *
 *                                                                       *
 *************************************************************************/

package org.ejbca.core.model.ra;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.bouncycastle.asn1.x500.X500Name;
import org.junit.Test;

/**
 * Test of the UserNameGenerator class.
 * 
 * @version $Id: UserNameGeneratorTest.java 19902 2014-09-30 14:32:24Z anatom $
 */
public class UserNameGeneratorTest {

    /**
     * Test user generation based on both SN and CN.
     */
    @Test
    public void test01() throws Exception {
        UsernameGeneratorParams usernameGeneratorParams = new UsernameGeneratorParams();
        usernameGeneratorParams.setMode("DN");
        usernameGeneratorParams.setDNGeneratorComponent("SN;CN");
        usernameGeneratorParams.setPrefix(null);
        usernameGeneratorParams.setPostfix(null);
        UsernameGenerator usernameGenerator = UsernameGenerator.getInstance(usernameGeneratorParams);

        final String errorMessage = "Did not generate an expected username.";
        assertEquals(errorMessage, "test", usernameGenerator.generateUsername(new X500Name("CN=test").toString()));
        assertEquals(errorMessage, null, usernameGenerator.generateUsername("".toString()));
        assertEquals(errorMessage, null, usernameGenerator.generateUsername(" ".toString()));
        assertEquals(errorMessage, "test",
                usernameGenerator.generateUsername(new X500Name("CN=test, serialNumber=1234").toString()));
        assertEquals(errorMessage, null, usernameGenerator.generateUsername(new X500Name("O=org").toString()));
        assertEquals(errorMessage, "12345", usernameGenerator.generateUsername("CN=test, SN=12345"));
        assertEquals(errorMessage, "1234", usernameGenerator.generateUsername("SN=1234"));

        // These wont work since new X509Name converts SN to SERIALNUMBER in toString()
        // Is this something we should compensate for in CertTools.getPartFromDN(...) ?
        //assertEquals(errorMessage, "12345", usernameGenerator.generateUsername(new X509Name("CN=test, SN=12345").toString()));
        //assertEquals(errorMessage, "1234", usernameGenerator.generateUsername(new X509Name("SN=1234").toString()));
    }

    /*
     * Test method for 'org.ejbca.core.model.ra.UsernameGenerator.UsernameGenerator(String)'
     */
    @Test
    public void testUsernameGeneratorRandom() {
        UsernameGenerator gen = UsernameGenerator.getInstance(UsernameGeneratorParams.RANDOM);
        String u = gen.generateUsername();
        assertEquals(u.length(), 12);

        UsernameGeneratorParams params = gen.getParams();
        params.setRandomNameLength(5);
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 5);

        params.setPrefix("foo-");
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 9);
        assertTrue(u.startsWith("foo-"));

        params.setPostfix("-foo");
        params.setPrefix(null);
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 9);
        assertTrue(u.endsWith("-foo"));

        params.setPrefix("foo-${RANDOM}");
        params.setPostfix(null);
        params.setRandomPrefixLength(6);
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 15);
        assertTrue(u.startsWith("foo-"));

        params.setPostfix("${RANDOM}-foo");
        params.setPrefix(null);
        params.setRandomPrefixLength(5);
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 14);
        assertTrue(u.endsWith("-foo"));

        params.setPrefix("foo-");
        gen.setParams(params);
        u = gen.generateUsername();
        assertEquals(u.length(), 18);
        assertTrue(u.endsWith("-foo"));
        assertTrue(u.startsWith("foo-"));
    }

    @Test
    public void testUsernameGeneratorDN() {
        String dn = "C=SE, O=FooO, UID=foo, CN=bar";
        String dnReverse = "CN=bar,UID=foo,O=FooO,C=SE";
        UsernameGenerator gen = UsernameGenerator.getInstance(UsernameGeneratorParams.DN);
        String u = gen.generateUsername(dn);
        assertEquals(u, "bar");
        u = gen.generateUsername(dnReverse);
        assertEquals(u, "bar");

        UsernameGeneratorParams params = gen.getParams();
        params.setDNGeneratorComponent("");
        gen = UsernameGenerator.getInstance(params);
        u = gen.generateUsername(dn);
        assertEquals("Username was not constructed properly from DN", "C=SE, O=FooO, UID=foo, CN=bar", u);
        u = gen.generateUsername(dnReverse);
        assertEquals("Username was not constructed properly from DN", "CN=bar,UID=foo,O=FooO,C=SE", u);

        params.setDNGeneratorComponent("UID");
        gen.setParams(params);
        u = gen.generateUsername(dn);
        assertEquals(u, "foo");

        params.setPrefix("pre-");
        gen.setParams(params);
        u = gen.generateUsername(dn);
        assertEquals(u, "pre-foo");

        params.setPostfix("-post");
        params.setPrefix(null);
        gen.setParams(params);
        u = gen.generateUsername(dn);
        assertEquals(u, "foo-post");

        params.setPrefix("pre-${RANDOM}-");
        params.setPostfix(null);
        params.setRandomPrefixLength(6);
        gen.setParams(params);
        u = gen.generateUsername(dn);
        assertEquals(u.length(), 14);
        assertTrue(u.startsWith("pre-"));
        assertTrue(u.endsWith("-foo"));

        params.setPostfix("-${RANDOM}-post");
        params.setPrefix(null);
        params.setRandomPrefixLength(5);
        gen.setParams(params);
        u = gen.generateUsername(dn);
        assertEquals(u.length(), 14);
        assertTrue(u.startsWith("foo-"));
        assertTrue(u.endsWith("-post"));
    }

    @Test
    public void testUsernameGeneratorUsername() {
        String username = "foo";
        UsernameGenerator gen = UsernameGenerator.getInstance(UsernameGeneratorParams.USERNAME);
        String u = gen.generateUsername(username);
        assertEquals(u, "foo");

        UsernameGeneratorParams params = gen.getParams();
        params.setPrefix("pre-");
        gen.setParams(params);
        u = gen.generateUsername(username);
        assertEquals(u, "pre-foo");

        params.setPostfix("-post");
        params.setPrefix(null);
        gen.setParams(params);
        u = gen.generateUsername(username);
        assertEquals(u, "foo-post");

        params.setPrefix("pre-${RANDOM}-");
        params.setPostfix(null);
        params.setRandomPrefixLength(6);
        gen.setParams(params);
        u = gen.generateUsername(username);
        assertEquals(u.length(), 14);
        assertTrue(u.startsWith("pre-"));
        assertTrue(u.endsWith("-foo"));

        params.setPostfix("-${RANDOM}-post");
        params.setPrefix(null);
        params.setRandomPrefixLength(5);
        gen.setParams(params);
        u = gen.generateUsername(username);
        assertEquals(u.length(), 14);
        assertTrue(u.startsWith("foo-"));
        assertTrue(u.endsWith("-post"));
    }

}