/*
* JBoss, Home of Professional Open Source.
* Copyright 2012, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This 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 (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.domain.management.security.adduser;
/**
* Test the password weakness
*
* @author <a href="mailto:flemming.harms@gmail.com">Flemming Harms</a>
*/
public class WeakCheckStateTestCase extends PropertyTestHelper {
/*
@Test
public void testState() throws IOException, StartException {
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder();
consoleMock.setResponses(consoleBuilder);
State duplicateUserCheckState = weakCheckState.execute();
assertTrue("Expected the next state to be DuplicateUserCheckState", duplicateUserCheckState instanceof PreModificationState);
consoleBuilder.validate();
}
@Test
public void testWrongPassword() {
values.setUserName("thesame");
values.setPassword("thesame".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.usernamePasswordMatch());
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testForbiddenPassword() {
values.setUserName("willFail");
values.setPassword("administrator".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordMustNotBeEqual("administrator"));
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testWeakPassword() {
values.setUserName("willFail");
values.setPassword("zxcvbnm1@".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordNotStrongEnough("MODERATE", "MEDIUM"));
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testTooShortPassword() {
values.setUserName("willFail");
values.setPassword("1QwD%rf".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordNotLongEnough(8));
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testNoDigitInPassword() {
values.setUserName("willFail");
values.setPassword("!QwD%rGf".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordMustHaveDigit());
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testNoSymbolInPassword() {
values.setUserName("willFail");
values.setPassword("1QwD5rGf".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordMustHaveSymbol());
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testNoAlphaInPassword() {
values.setUserName("willFail");
values.setPassword("1$*>5}".toCharArray());
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.passwordMustHaveAlpha());
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testUsernameNotAlphaNumeric() {
values.setUserName("username&");
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().expectedErrorMessage(MESSAGES.usernameNotAlphaNumeric());
consoleMock.setResponses(consoleBuilder);
State errorState = weakCheckState.execute();
assertTrue("Expected the next state to be ErrorState", errorState instanceof ErrorState);
State promptNewUserState = errorState.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
@Test
public void testBadUsername() {
String[] BAD_USER_NAMES = {"admin", "administrator", "root"};
for (String userName : BAD_USER_NAMES) {
values.setUserName(userName);
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder().
expectedConfirmMessage(MESSAGES.usernameEasyToGuess(userName), MESSAGES.sureToAddUser(userName), "n");
consoleMock.setResponses(consoleBuilder);
State confirmationChoice = weakCheckState.execute();
assertTrue("Expected the next state to be ConfirmationChoice", confirmationChoice instanceof ConfirmationChoice);
State promptNewUserState = confirmationChoice.execute();
assertTrue("Expected the next state to be PromptNewUserState", promptNewUserState instanceof PromptNewUserState);
consoleBuilder.validate();
}
}
@Test
public void testUsernameWithValidPunctuation() {
values.setUserName("username.@\\=,/");
WeakCheckState weakCheckState = new WeakCheckState(consoleMock, values);
AssertConsoleBuilder consoleBuilder = new AssertConsoleBuilder();
consoleMock.setResponses(consoleBuilder);
State duplicateUserCheckState = weakCheckState.execute();
assertTrue("Expected the next state to be DuplicateUserCheckState", duplicateUserCheckState instanceof PreModificationState);
consoleBuilder.validate();
}
*/
}