com.redhat.rhn.manager.user.test.UpdateUserCommandTest.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.manager.user.test.UpdateUserCommandTest.java

Source

/**
 * Copyright (c) 2009--2013 Red Hat, Inc.
 *
 * This software is licensed to you under the GNU General Public License,
 * version 2 (GPLv2). There is NO WARRANTY for this software, express or
 * implied, including the implied warranties of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
 * along with this software; if not, see
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * Red Hat trademarks are not licensed under GPLv2. No permission is
 * granted to use or replicate Red Hat trademarks that are incorporated
 * in this software or its documentation.
 */
package com.redhat.rhn.manager.user.test;

import com.redhat.rhn.common.conf.Config;
import com.redhat.rhn.common.conf.ConfigDefaults;
import com.redhat.rhn.common.conf.UserDefaults;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.manager.user.UpdateUserCommand;
import com.redhat.rhn.testing.RhnBaseTestCase;
import com.redhat.rhn.testing.TestUtils;
import com.redhat.rhn.testing.UserTestUtils;

import org.apache.commons.lang.StringUtils;

/**
 * UpdateUserCommandTest
 * @version $Rev$
 */
public class UpdateUserCommandTest extends RhnBaseTestCase {

    private UpdateUserCommand command;

    public void setUp() throws Exception {
        super.setUp();
        Long oid = UserTestUtils.createOrg("testOrg" + this.getClass().getSimpleName());
        User user = UserTestUtils.createUser("testUser", oid);
        command = new UpdateUserCommand(user);
    }

    public void testLongNames() {
        int maxPassword = UserDefaults.get().getMaxPasswordLength();
        int emailLength = UserDefaults.get().getMaxEmailLength();

        Config.get().setString(UserDefaults.MAX_PASSWORD_LENGTH, String.valueOf(5));
        Config.get().setString(UserDefaults.MAX_EMAIL_LENGTH, String.valueOf(5));

        String invalidPassword = "password";
        String invalidEmail = "foobar@foobar.com";
        //Test invalid values

        command.setEmail(invalidEmail);
        assertCommandThrows(IllegalArgumentException.class, command);
        command.setPassword(invalidPassword);
        assertCommandThrows(IllegalArgumentException.class, command);

        Config.get().setString(UserDefaults.MAX_PASSWORD_LENGTH, String.valueOf(maxPassword));
        Config.get().setString(UserDefaults.MAX_EMAIL_LENGTH, String.valueOf(emailLength));

    }

    public void testPartialUpdate() {
        command.setEmail("50cent@pimpville.com");
        command.setFirstNames("beetle juice");
        User user = command.updateUser();
        assertNotNull(user);
        assertEquals("50cent@pimpville.com", user.getEmail());
        assertEquals("beetle juice", user.getFirstNames());
    }

    public void testInvalidEmail() {
        command.setPassword("validP@a$$word");

        command.setEmail("jesusrredhat.com");
        assertCommandThrows(IllegalArgumentException.class, command);

        command.setEmail(null);
        assertCommandThrows(IllegalArgumentException.class, command);

        command.setEmail("");
        assertCommandThrows(IllegalArgumentException.class, command);
    }

    public void testInvalidPassword() {
        command.setEmail("jesusr@redhat.com");

        command.setPassword("");
        assertCommandThrows(IllegalArgumentException.class, command);

        command.setPassword(null);
        assertCommandThrows(IllegalArgumentException.class, command);

        // 65 > maxlen
        command.setPassword("12345678901234567890123456789012345678901234567890123456789012345");
        assertCommandThrows(IllegalArgumentException.class, command);

        // minlen - 1
        command.setPassword("1234");
        assertCommandThrows(IllegalArgumentException.class, command);
    }

    public void testNullPassword() {
        try {
            command.setPassword(null);
        } catch (NullPointerException expected) {
            // expected
        }
    }

    public void testValidEmail() {
        command.setPassword("valid_password");

        assertEmail("jesusr@redhat.com", command);
        assertEmail("foobar@rhn.redhat.com", command);
        assertEmail("jmrodri@transam", command);
    }

    public void testValidPassword() {
        command.setEmail("jesusr@redhat.com");
        // = maxlen
        assertPassword(StringUtils.repeat("a", UserDefaults.get().getMinPasswordLength()), command);
        // = maxlen
        assertPassword(StringUtils.repeat("a", UserDefaults.get().getMaxPasswordLength()), command);

        // random string
        String randomPassword = TestUtils.randomString();
        if (randomPassword.length() > 64) {
            randomPassword = randomPassword.substring(0, 64);
        }

        assertPassword(randomPassword, command);
        assertPassword("Th1$_i5-V@Lid", command);
    }

    public void testPrefix() {
        command.setPrefix("Miss");
        User user = command.updateUser();
        assertNotNull(user);
        assertEquals("Miss", user.getPrefix());

        command.setPrefix("Miss.");
        assertCommandThrows(IllegalArgumentException.class, command);

        command.setPrefix("Master of my Domain");
        assertCommandThrows(IllegalArgumentException.class, command);

        command.setPrefix("King");
        assertCommandThrows(IllegalArgumentException.class, command);
    }

    private void assertPassword(String password, UpdateUserCommand cmd) {
        cmd.setPassword(password);
        User user = cmd.updateUser();
        assertNotNull(user);

        // can't do this if we've encrypted the passwords
        if (!Config.get().getBoolean(ConfigDefaults.WEB_ENCRYPTED_PASSWORDS)) {
            String savedPassword = user.getPassword();
            user.setPassword(password);
            assertEquals(savedPassword, user.getPassword());
        }
    }

    private void assertEmail(String email, UpdateUserCommand cmd) {
        cmd.setEmail(email);
        User user = cmd.updateUser();
        assertNotNull(user);
        assertEquals(email, user.getEmail());
    }

    private void assertCommandThrows(Class expectedEx, UpdateUserCommand cmd) {
        try {
            cmd.updateUser();
            fail("Expected [" + expectedEx.getName() + "]");
        } catch (Exception e) {
            assertTrue("Expected [" + expectedEx.getName() + "]", expectedEx.isInstance(e));
        }
    }

    public void testValidatePasswordHasTabCharacter() throws Exception {
        command.setEmail("bilbo@baggins.com");
        command.setPassword("aaaaa\tb");

        try {
            command.updateUser();
            fail();
        } catch (IllegalArgumentException e) {
            //expected
        }
    }

    public void testValidatePasswordHasNewlineCharacter() throws Exception {
        command.setEmail("bilbo@baggins.com");
        command.setPassword("aaaaa\nb");

        try {
            command.updateUser();
            fail();
        } catch (IllegalArgumentException e) {
            //expected
        }
    }
}