package test;
import static org.junit.Assert.*;
import java.io.IOException;
import java.net.MalformedURLException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Ignore;
import org.junit.Test;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlOption;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
import com.gargoylesoftware.htmlunit.html.HtmlSelect;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
import com.sun.org.apache.bcel.internal.generic.Select;
public class AutentiseringTest extends PussTest{
@Test
public void FT2_1_1(){
String groupname = "groupz";
String username = "Cartman";
String password = "passwo";
String role = "t1";
int is_admin = 0;
int groupId = -1;
int userId = -1;
try {
userId = addUser(username, password, is_admin);
groupId = addGroup(groupname);
assignGroup(userId, groupId, role);
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
}
HtmlPage page = null;
try {
page = login(username, password, groupname);
} catch (Exception e) {
e.printStackTrace();
}
//Create new webclient and try to log in
WebClient webClientTwo = new WebClient();
HtmlPage page1 = null;
HtmlPage page2 = null;
try {
page1 = webClientTwo.getPage(LOGIN_URL);
} catch (Exception e) {
e.printStackTrace();
}
HtmlForm form = page1.getFormByName("input");
HtmlSubmitInput button = form.getInputByValue("Submit");
HtmlTextInput userField = form.getInputByName("user");
HtmlPasswordInput passwordField = form.getInputByName("password");
HtmlSelect groupList = form.getSelectByName("groupID");
userField.setValueAttribute(username);
passwordField.setValueAttribute(password);
groupList.setSelectedAttribute(groupList.getOptionByText(groupname), true);
try {
page2 = button.click();
} catch (IOException e) {
e.printStackTrace();
}
assertEquals(username + " could not log in", START_URL, page.getUrl().toString());
assertEquals(username + " could log in a second time", LOGIN_URL, page2.getUrl().toString());
System.out.println("FT2_1_1");
}
//Utgått
@Ignore
public void FT2_1_2(){
String groupname = "groupz";
String username = "Cartman";
String password = "passwo";
String role = "t1";
int is_admin = 0;
int groupId = -1;
int userId = -1;
try {
userId = addUser(username, password, is_admin);
groupId = addGroup(groupname);
assignGroup(userId, groupId, role);
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
}
HtmlPage page = null;
try {
page = login(username, password, groupname);
} catch (FailingHttpStatusCodeException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
assertEquals(username + " could not log in", START_URL, page.getUrl().toString());
restartServer();
WebClient w2 = new WebClient();
try {
page = w2.getPage(START_URL);
} catch (Exception e) {
e.printStackTrace();
}
assertEquals(username + " was still logged in despite restart", LOGIN_URL, page.getUrl().toString());
System.out.println("FT2_1_2");
}
@Test
public void FT2_1_3(){
String admin = "admin";
String adminpw = "adminpw";
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput addName = null;
HtmlSubmitInput addUser = null;
try {
page = login(admin, adminpw, null);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("Administration");
try {
page = anchor.click();
form = page.getFormByName("input");
addName = form.getInputByName("addname");
addUser = form.getInputByValue("Add user");
addName.setValueAttribute("Stan");
page = addUser.click();
ResultSet rs = sendSQLQuery("select * from users;");
while(!rs.isLast()){
rs.next();
if(rs.getString(2).equals("Stan")){
fail("Stan has been added!");
}
}
} catch (Exception e) {
e.printStackTrace();
}
assertEquals("On the URL where add Stan is sent", "http://localhost:8080/BaseBlockSystem/Administration?addname=Stan", page.getUrl().toString());
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
System.out.println("FT2_1_3");
}
@Test
public void FT2_1_4(){
String admin = "admin";
String adminpw = "adminpw";
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput addName = null;
HtmlSubmitInput addUser = null;
try {
page = login(admin, adminpw, null);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("Administration");
try {
page = anchor.click();
form = page.getFormByName("input");
addName = form.getInputByName("addname");
addUser = form.getInputByValue("Add user");
addName.setValueAttribute("EricCartman");
page = addUser.click();
ResultSet rs = sendSQLQuery("select * from users;");
while(!rs.isLast()){
rs.next();
if(rs.getString(2).equals("EricCartman")){
fail("EricCartman has been added!");
}
}
assertEquals("On the URL where add Stan is sent", "http://localhost:8080/BaseBlockSystem/Administration?addname=EricCartman", page.getUrl().toString());
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_1_4");
}
@Test
public void FT2_1_5(){
String admin = "admin";
String adminpw = "adminpw";
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput addName = null;
HtmlSubmitInput addUser = null;
try {
page = login(admin, adminpw, null);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("Administration");
try {
page = anchor.click();
form = page.getFormByName("input");
addName = form.getInputByName("addname");
addUser = form.getInputByValue("Add user");
addName.setValueAttribute("Mr Garrison");
page = addUser.click();
ResultSet rs = sendSQLQuery("select * from users;");
while(!rs.isLast()){
rs.next();
if(rs.getString(2).equals("Mr Garrison")){
fail("Mr Garrison has been added!");
}
}
assertEquals("On the URL where add Stan is sent", "http://localhost:8080/BaseBlockSystem/Administration?addname=Mr+Garrison", page.getUrl().toString());
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_1_5");
}
@Test
public void FT2_1_6(){
String admin = "admin";
String adminpw = "adminpw";
String username = "MrHat";
String password = "passwo";
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput addName = null;
HtmlSubmitInput addUser = null;
try {
addUser(username, password, 0);
page = login(admin, adminpw, null);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("Administration");
try {
page = anchor.click();
form = page.getFormByName("input");
addName = form.getInputByName("addname");
addUser = form.getInputByValue("Add user");
addName.setValueAttribute(username);
page = addUser.click();
ResultSet rs = sendSQLQuery("select * from users;");
int counter = 0;
while(!rs.isLast()){
rs.next();
if(rs.getString(2).equals(username)){
counter++;
}
if(counter == 2){
fail(username + " has been added twice!");
}
}
assertTrue(page.asText().contains("Error: Suggested user name not possible to add"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_1_6");
}
@Test
public void FT2_1_7(){
String admin = "admin";
String adminpw = "adminpw";
String username = "MrHat";
String password = "passwo";
String role = "t1";
String groupName = "SouthPark";
String newPassword = "tolongp";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput oldPass = null;
HtmlTextInput newPass = null;
HtmlSubmitInput changePass = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(groupName);
assignGroup(userId, groupId, role);
page = login(username, password, groupName);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("ChangePassword");
try {
page = anchor.click();
form = page.getFormByName("input");
oldPass = form.getInputByName("oldpw");
newPass = form.getInputByName("newpw");
changePass = form.getInputByValue("Change");
oldPass.setValueAttribute(password);
newPass.setValueAttribute(newPassword);
page = changePass.click();
ResultSet rs = sendSQLQuery("select * from users;");
while(rs.next()){
if(rs.getString(3).equals(newPassword)){
fail("Changed to too long password!");
}
}
assertTrue(page.asText().contains("Error"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_1_7");
}
@Test
public void FT2_1_8(){
String admin = "admin";
String adminpw = "adminpw";
String username = "MrHat";
String password = "passwo";
String role = "t1";
String groupName = "SouthPark";
String newPassword = "sym ol";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
HtmlAnchor anchor = null;
HtmlForm form = null;
HtmlTextInput oldPass = null;
HtmlTextInput newPass = null;
HtmlSubmitInput changePass = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(groupName);
assignGroup(userId, groupId, role);
page = login(username, password, groupName);
} catch (Exception e) {
e.printStackTrace();
}
anchor = page.getAnchorByHref("ChangePassword");
try {
page = anchor.click();
form = page.getFormByName("input");
oldPass = form.getInputByName("oldpw");
newPass = form.getInputByName("newpw");
changePass = form.getInputByValue("Change");
oldPass.setValueAttribute(password);
newPass.setValueAttribute(newPassword);
page = changePass.click();
ResultSet rs = sendSQLQuery("select * from users;");
while(rs.next()){
if(rs.getString(3).equals(newPassword)){
fail("Changed to illegal symbol password!");
}
}
assertTrue(page.asText().contains("Error"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_1_8");
}
//One page has to be done maually see below
@Test
public void FT2_2_1(){
String logOutLink = "LogIn";
String group = "Lorde";
String projectLeader = "Timmy";
String projectLeaderPass = "TTimmy";
String projectLeaderRole = "Project Leader";
String projectMember = "Jimmy";
String projectMemberPass = "Jjjjii";
String memberRole = "t1";
int projLeaderId = -1;
int projMemberId = -1;
int groupId = -1;
HtmlPage page = null;
HtmlAnchor logOutButton = null;
try {
projLeaderId = addUser(projectLeader, projectLeaderPass, 0);
projMemberId = addUser(projectMember, projectMemberPass, 0);
groupId = addGroup(group);
assignGroup(projLeaderId, groupId, projectLeaderRole);
assignGroup(projMemberId, groupId, memberRole);
} catch (Exception e) {
e.printStackTrace();
}
try {
//Admin pages - logout links
page = login(ADMIN_USERNAME,ADMIN_PASSWORD, ADMIN_GROUP);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(ADMINISTRATION_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(GROUP_ADMIN_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
// Do Manually doesn't work
page = webClient.getPage(GROUP_HANDLING_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(PROJECT_LEADER_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(REPORT_HANDLING_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(STATISTICS_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = logOutButton.click();
assertEquals("Logout button does not work!", LOGIN_URL,page.getUrl().toString());
page = login(projectLeader, projectLeaderPass, group);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(TIMEREPORTING_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(CHANGE_PASSWORD_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(PROJECT_LEADER_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(REPORT_HANDLING_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(STATISTICS_URL);
logOutButton = page.getAnchorByHref(logOutLink);
page = logOutButton.click();
assertEquals("Logout button not working from statistics", LOGIN_URL, page.getUrl().toString());
page = login(projectMember, projectMemberPass, group);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(TIMEREPORTING_URL);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(TIMEREPORTING_URL_UPDATE);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(TIMEREPORTING_URL_NEW);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(TIMEREPORTING_URL_STATISTICS);
logOutButton = page.getAnchorByHref(logOutLink);
assertNotEquals(null, logOutButton);
page = webClient.getPage(CHANGE_PASSWORD_URL);
logOutButton = page.getAnchorByHref(logOutLink);
page = logOutButton.click();
assertEquals("Logout button not working", LOGIN_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_2_1");
}
//Ignored because it takes time to run
@Ignore
public void FT2_2_2(){
String username = "MrSlave";
String password = "slaves";
String group = "SPElementary";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(group);
assignGroup(userId, groupId, "t1");
page = login(username, password, group);
System.out.print("Waiting for 21 minuites...");
TimeUnit.MINUTES.sleep(21);
System.out.println("Done!");
page = webClient.getPage(TIMEREPORTING_URL);
assertEquals("Still has access to TIMEREPORTING_URL even after 20 min of inactivity",LOGIN_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_2_2");
}
@Test
public void FT2_3_1(){
String user1 = "Satan";
String pass1 = "myhell";
String role1 = "Project Leader";
String user2 = "Johnsson";
String pass2 = "siiiir";
String role2 = "t1";
String group = "LadderToHeaven";
int userId1 = -1;
int userId2 = -1;
int groupId = -1;
HtmlPage page = null;
HtmlAnchor anch = null;
try {
userId1 = addUser(user1, pass1, 0);
userId2 = addUser(user2, pass2, 0);
groupId = addGroup(group);
assignGroup(userId1, groupId, role1);
assignGroup(userId2, groupId, role2);
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_GROUP);
page = webClient.getPage(ADMINISTRATION_URL);
anch = page.getAnchorByHref("Administration?deletename="+user2+"&deleteid="+userId2);
page = anch.click();
anch = page.getAnchorByHref("Administration?deletename="+user1+"&deleteid="+userId1);
page = anch.click();
ResultSet rs = sendSQLQuery("select * from users;");
while (rs.next()){
if(rs.getString("username").equals(user1) || rs.getString("username").equals(user2)){
fail(user1 + " or " + user2 + " was not removed");
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_3_1");
}
@Test
public void FT2_3_2(){
int adminId = -1;
HtmlPage page = null;
try {
adminId = getUserId("admin");
page = login("admin", "adminpw", null);
page = webClient.getPage(ADMINISTRATION_URL + "?deletename=admin&deleteid=" + adminId);
ResultSet rs = sendSQLQuery("select * from users;");
Boolean deleted = true;
while(rs.next()){
if(rs.getString("username").equals("admin")){
deleted = false;
break;
}
}
assertTrue("Admin has been deleted!",!deleted);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_3_2");
}
@Test
public void FT2_4_1(){
String user1 = "Jesus";
String pass1 = "lookat";
String role = "t1";
String group = "Redskins";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
try {
login(user1, pass1, group);
fail("Non registered user could log in");
} catch (Exception e) {
}
try {
userId = addUser(user1, pass1, 0);
groupId = addGroup(group);
assignGroup(userId, groupId, role);
page = login(user1, pass1, group);
assertEquals("Not redirected to function page", START_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL);
assertEquals("No access to logged in functionallity", TIMEREPORTING_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_4_1");
}
@Test
public void FT2_5_1(){
try {
HtmlPage page = webClient.getPage(LOGIN_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(ADMINISTRATION_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(GROUP_ADMIN_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(GROUP_HANDLING_URL);;
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(PROJECT_LEADER_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(REPORT_HANDLING_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(STATISTICS_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(CHANGE_PASSWORD_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(PROJECT_LEADER_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL_UPDATE);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL_NEW);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(TIMEREPORTING_URL_STATISTICS);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
page = webClient.getPage(CHANGE_PASSWORD_URL);
assertEquals("Not on login page", LOGIN_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_5_1");
}
@Test
public void FT2_5_2(){
String group1 = "HellOnearth";
String group2 = "LadderToHeaven";
String group3 = "FightersZaron";
int groupId1 = -1;
int groupId2 = -1;
int groupId3 = -1;
HtmlPage page = null;
HtmlForm form = null;
HtmlSelect select = null;
try {
groupId1 = addGroup(group1);
groupId2 = addGroup(group2);
groupId3 = addGroup(group3);
webClient = new WebClient();
page = webClient.getPage(LOGIN_URL);
form = page.getFormByName("input");
select = form.getSelectByName("groupID");
List<HtmlOption> list = select.getOptions();
int counter = 0;
for(HtmlOption option: list){
if(option.asText().equals(group1) || option.asText().equals(group2) || option.asText().equals(group3)){
counter++;
}
}
assertEquals("Not all opotions represented", 3, counter);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_5_2");
}
@Test
public void FT2_5_3(){
String username = "MrMarsh";
String password = "easter";
String group = "HairClubForMen";
int groupId = -1;
int userId = -1;
HtmlPage page = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(group);
assignGroup(userId, groupId, "t1");
page = login(username, password, null);
assertEquals("Managed to log in without selecting a group", LOGIN_URL,page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_5_3");
}
@Test
public void FT2_5_4(){
String groupname = "groupz";
String username = "Cartman";
String password = "passwo";
String role = "t1";
int is_admin = 0;
int groupId = -1;
int userId = -1;
try {
//TODO ändra till clearDatabase();
userId = addUser(username, password, is_admin);
groupId = addGroup(groupname);
assignGroup(userId, groupId, role);
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
}
HtmlPage page = null;
try {
page = login(username, password, groupname);
} catch (Exception e) {
e.printStackTrace();
}
assertEquals(username + " could not log in", START_URL, page.getUrl().toString());
System.out.println("FT2_5_4");
}
@Test
public void FT2_5_5(){
String username = "MrMarsh";
String password = "easter";
String group1 = "HairClubForMen";
String group2 = "HairClubForWomen";
int groupId = -1;
int userId = -1;
HtmlPage page = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(group1);
addGroup(group2);
assignGroup(userId, groupId, "t1");
page = login(username, password, group2);
assertEquals("Managed to log in without selecting a group", LOGIN_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_5_5");
}
@Test
public void FT2_5_6(){
String group1 = "HairClubForMen";
String group2 = "HairClubForWomen";
String group3 = "HairClubForGoats";
String group4 = "HairClubForCows";
ArrayList<String> groups = new ArrayList<String>();
groups.add(group1);
groups.add(group2);
groups.add(group3);
groups.add(group4);
HtmlPage page = null;
HtmlAnchor anchor = null;
try {
for(String group: groups){
addGroup(group);
}
for(String group: groups){
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, group2);
assertEquals("Admin could not log in on group " + group, START_URL, page.getUrl().toString());
anchor = page.getAnchorByHref("LogIn");
page = anchor.click();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("FT2_5_6");
}
@Test
public void ST2_1_2(){
String username = "Randy";
String password = "awwwww";
String group = "HairClubForMen";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
HtmlAnchor anchor = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(group);
assignGroup(userId, groupId, "t1");
page = login(username, password, group);
anchor = page.getAnchorByText("Logout");
page = anchor.click();
assertEquals("Could not logout" , LOGIN_URL, page.getUrl().toString());
} catch (Exception e) {
e.printStackTrace();
}
assertTrue(page.asText().contains("You are now logged out"));
System.out.println("ST2_1_2");
}
@Test
public void ST2_1_3(){
String username = "Timmy";
String password = "ttimmy";
String group = "Cripps";
int userId = -1;
int groupId = -1;
HtmlPage page = null;
try {
userId = addUser(username, password, 0);
groupId = addGroup(group);
assignGroup(userId, groupId, "t1");
page = login(username, "timmy", group);
assertEquals("Logged in with wrong password", LOGIN_URL, page.getUrl().toString());
assertTrue(page.asText().contains("That was not a valid user name / password."));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ST2_1_3");
}
//Do parts manually
@Test
public void ST2_2_1(){
String username1 = "Randy";
String password1 = "wedidn";
String username2 = "Granpa";
String password2 = "billyy";
String group1 = "HairClua";
String group2 = "HairClub";
String group3 = "HairCluc";
String group4 = "HairClud";
String group5 = "HairClue";
String group6 = "HairCluf";
List<String> groups = new ArrayList<String>();
groups.add(group1);
groups.add(group2);
groups.add(group3);
groups.add(group4);
groups.add(group5);
int userId1 = -1;
int userId2 = -1;
HtmlPage page = null;
HtmlForm form = null;
HtmlTextInput addProject = null;
HtmlSubmitInput submit = null;
try {
userId1 = addUser(username1, password1, 0);
userId2 = addUser(username2, password2, 0);
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_GROUP);
page = webClient.getPage(GROUP_ADMIN_URL);
assertEquals("Not on GroupHandling page", GROUP_ADMIN_URL, page.getUrl().toString());
form = page.getFormByName("input");
addProject = form.getInputByName("projectname");
submit = form.getInputByValue("Add project");
addProject.setValueAttribute(group6);
page = submit.click();
List<DomElement> list1 = page.getElementsByIdAndOrName("selectedradiouser");
HtmlRadioButtonInput radioButton = (HtmlRadioButtonInput) list1.get(0);
radioButton.setChecked(true);
HtmlSubmitInput addUser = page.getFormByName("input").getInputByValue("Add user");
page = addUser.click();
assertEquals("Not on GroupHandling_URL", GROUP_HANDLING_URL, page.getUrl().toString());
// System.out.println(page.asText());
System.out.println("From here do the rest manually, see step ST2_2_1 step 3a-6");
System.out.println("Press enter to continue test ST2_2_1");
System.in.read();
page = webClient.getPage(GROUP_ADMIN_URL);
form = page.getFormByName("input");
addProject = form.getInputByName("projectname");
submit = form.getInputByValue("Add project");
addProject.setValueAttribute(group6);
page = submit.click();
assertEquals(group6 + " could be created twice", GROUP_ADMIN_URL, page.getUrl().toString());
assertTrue(page.asText().contains("Error"));
clearDatabase();
//Check manually if not passing since it didn't fulfill the criteria when written
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_GROUP);
page = webClient.getPage(GROUP_ADMIN_URL);
form = page.getFormByName("input");
addProject = form.getInputByName("projectname");
submit = form.getInputByValue("Add project");
addProject.setValueAttribute(group6);
page = submit.click();
assertTrue(group6 + " could be created with no available users", page.asText().contains("Error"));
ResultSet rs = sendSQLQuery("select * from groups");
while(rs.next()){
if(rs.getString("name").equals(group6)){
fail(group6 + "could be created with no available users");
}
}
assertTrue(page.asText().contains("Error"));
clearDatabase();
for(String g: groups){
addGroup(g);
}
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_GROUP);
page = webClient.getPage(GROUP_ADMIN_URL);
form = page.getFormByName("input");
addProject = form.getInputByName("projectname");
submit = form.getInputByValue("Add project");
addProject.setValueAttribute(group6);
page = submit.click();
assertTrue(page.asText().contains("Error"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ST2_2_1");
}
//Dosn't follow the scenario described in scenario 6.4.6 at all.
//all functionallity appears to exist though.
@Test
public void ST2_2_2(){
String userTemplate = "Butters";
String password = "butter";
String role = "Project Leader";
String group1 = "Cows";
String group2 = "Sheep";
int userId = -1;
int groupId = -1;
try {
groupId = addGroup(group1);
for(int k = 0; k <= 20; k++){
String username = userTemplate + k;
userId = addUser(username, password, 0);
if(k == 1){
role = "t1";
}
if(k == 7){
role = "t2";
}
if(k == 11){
role = "Project Leader";
groupId = addGroup(group2);
}
if(k == 12){
role = "t1";
}
if(k == 18){
role = "t2";
}
assignGroup(userId, groupId, role);
}
System.out.println("Press enter to continue with test ST2_2_2");
System.in.read();
} catch (Exception e1) {
e1.printStackTrace();
}
//1b ????
}
//Doesn't follow the scenario described in scenario 6.4.7 at all.
//all functionallity except the remove solo project leader appears to
//exist though.
@Test
public void ST2_2_3(){
String userTemplate = "Butters";
String password = "butter";
String role = "Project Leader";
String group1 = "Cows";
String group2 = "Sheep";
List<Integer> userIds = new ArrayList<Integer>();
int groupId = -1;
int groupId1 = -1;
int groupId2 = -1;
HtmlPage page = null;
HtmlAnchor anchor = null;
try {
groupId = groupId1 = addGroup(group1);
for(int k = 0; k <= 20; k++){
String username = userTemplate + k;
userIds.add(addUser(username, password, 0));
if(k == 1){
role = "t1";
}
if(k == 7){
role = "t2";
}
if(k == 11){
role = "Project Leader";
groupId = groupId2 = addGroup(group2);
}
if(k == 12){
role = "t1";
}
if(k == 18){
role = "t2";
}
assignGroup(userIds.get(k), groupId, role);
}
page = login(ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_GROUP);
page = webClient.getPage(GROUP_ADMIN_URL);
assertEquals("Not on GroupHandling page", GROUP_ADMIN_URL, page.getUrl().toString());
anchor = page.getAnchorByHref("ProjectGroupAdmin?editid="+groupId1);
page = anchor.click();
for(int k = 0; k < 11; k++){
if(k == 0){
anchor = page.getAnchorByHref("GroupHandling?deletename="+userIds.get(k));
page = anchor.click();
assertTrue("The only Project Leader was deleted when there were others in the group", page.asText().contains("User was not removed because there\nis only one project leader left."));
assertEquals("Not on deleted user URL", "http://localhost:8080/BaseBlockSystem/GroupHandling?operation=FailedRemoved", page.getUrl().toString());
}else{
anchor = page.getAnchorByHref("GroupHandling?deletename="+userIds.get(k));
page = anchor.click();
assertTrue("User " + k + " was not deleted", page.asText().contains("User was removed"));
assertEquals("Not on deleted user URL", "http://localhost:8080/BaseBlockSystem/GroupHandling?operation=Removed", page.getUrl().toString());
}
}
page = webClient.getPage(GROUP_ADMIN_URL);
anchor = page.getAnchorByHref("ProjectGroupAdmin?deletename="+group2);
page = anchor.click();
assertTrue("ProjectGroup" + group2 + " was not deleted", page.asText().contains("Project group was successfully removed"));
assertEquals("Not on deleted group URL","http://localhost:8080/BaseBlockSystem/ProjectGroupAdmin?deletename="+group2, page.getUrl().toString());
} catch (Exception e1) {
e1.printStackTrace();
}
}
}