package com.pugh.sockso.commands;
import com.pugh.sockso.tests.SocksoTestCase;
import com.pugh.sockso.tests.TestDatabase;
import com.pugh.sockso.tests.TestLocale;
import com.pugh.sockso.web.User;
public class UserAddTest extends SocksoTestCase {
private TestLocale locale;
private TestDatabase db;
private Command cmd;
@Override
public void setUp() {
locale = new TestLocale();
locale.setString( "con.msg.userCreated", "user added" );
locale.setString( "con.err.usernameExists", "username exists" );
db = new TestDatabase();
cmd = new UserAdd( db, locale );
}
private String execute( String command ) throws Exception {
return cmd.execute( command.split(" ") );
}
public void testAddingAUserCreatedThenInTheDatabase() throws Exception {
execute( "useradd name pass email@domain.com 1" );
assertTableSize( db, "users", 1 );
}
public void testAddingAUserInsertsTheirDetailsCorrectly() throws Exception {
execute( "useradd name pass email@domain.com 1" );
User u = User.find( db, 0 );
assertEquals( 0, u.getId() );
assertEquals( "name", u.getName() );
assertEquals( "email@domain.com", u.getEmail() );
}
public void testUserIsAddedAsAnAdminWhen1Specified() throws Exception {
execute( "useradd name pass email@domain.com 1" );
assertTrue( User.find( db, 0 ).isAdmin() );
}
public void testUserIsNotAddedAsAnAdminWhen0Specified() throws Exception {
execute( "useradd name pass email@domain.com 0" );
assertFalse( User.find( db, 0 ).isAdmin() );
}
public void testUserReportedAsHavingBeenAddedWhenTheyAre() throws Exception {
String message = execute( "useradd name pass email@domain.com 0" );
assertContains( message, "user added" );
}
public void testUserReportedTextUsesLocale() throws Exception {
String message = execute( "useradd name pass email@domain.com 0" );
assertEquals( message, "user added" );
}
public void testAddingAUserWithDuplicateUsernameDoesNotCreateThem() throws Exception {
execute( "useradd foo bar email@domain.com 0" );
execute( "useradd foo bar email@domain.com 0" );
assertTableSize( db, "users", 1 );
}
public void testAddingAUserWithDuplicateUsernameReturnsTheErrorMessage() throws Exception {
execute( "useradd foo bar email@domain.com 0" );
String message = execute( "useradd foo bar email@domain.com 0" );
assertEquals( message, "username exists" );
}
public void testNewUsersAreAddedAsBeingActive() throws Exception {
execute( "useradd foo bar email@domain.com 0" );
assertTrue( User.find(db,0).isActive() );
}
}