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.List;
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.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;
public class AdministrationTest extends PussTest {
@Ignore
public void FT4_1_1() throws FailingHttpStatusCodeException, MalformedURLException, IOException, SQLException {
clearDatabase();
final WebClient webClient = new WebClient();
// Get the first page
final HtmlPage page1 = webClient.getPage(LOGIN_URL);
// Get the form that we are dealing with and within that form,
// find the submit button and the field that we want to change.
final HtmlForm form = page1.getFormByName("input");
final HtmlSubmitInput button = form.getInputByValue("Submit");
final HtmlTextInput userField = form.getInputByName("user");
final HtmlPasswordInput passwordField = form.getInputByName("password");
// Change the value of the text field
userField.setValueAttribute("admin");
passwordField.setValueAttribute("adminpw");
// Now submit the form by clicking the button and get back the second
// page.
final HtmlPage page2 = button.click();
assertEquals("admin could not log in", START_URL, page2.getUrl().toString());
HtmlAnchor administrationpage = page2.getAnchorByHref("Administration");
final HtmlPage page3 = administrationpage.click();
assertEquals("Administration are not acces to administrations page", ADMINISTRATION_URL, page3.getUrl().toString());
clearDatabase();
webClient.closeAllWindows();
}
@Ignore
public void FT4_1_2() throws FailingHttpStatusCodeException, MalformedURLException, IOException, SQLException {
clearDatabase();
final WebClient webClient = new WebClient();
// Get the first page
final HtmlPage page1 = webClient.getPage(LOGIN_URL);
// Get the form that we are dealing with and within that form,
// find the submit button and the field that we want to change.
final HtmlForm form = page1.getFormByName("input");
final HtmlSubmitInput button = form.getInputByValue("Submit");
final HtmlTextInput userField = form.getInputByName("user");
final HtmlPasswordInput passwordField = form.getInputByName("password");
final HtmlSelect groupList = form.getSelectByName("groupID");
// Change the value of the text field
userField.setValueAttribute("jonatan");
passwordField.setValueAttribute("jonatan");
groupList.setSelectedAttribute("91", true);
// Now submit the form by clicking the button and get back the second
// page.
final HtmlPage page2 = button.click();
assertEquals("user could not log in", START_URL, page2.getUrl().toString());
HtmlAnchor administrationpage = page2.getAnchorByHref("Administration");
final HtmlPage page3 = administrationpage.click();
assertEquals("Vanligt avnändare kan åtkom åt administration sida", START_URL, page3.getUrl().toString());
clearDatabase();
webClient.closeAllWindows();
}
private HtmlPage nameNewGroup(HtmlPage page, String groupName) throws IOException {
final HtmlForm form1 = page.getFormByName("input");
final HtmlSubmitInput button1 = form1.getInputByValue("Add project");
final HtmlTextInput projectNameField1 = form1.getInputByName("projectname");
projectNameField1.setValueAttribute(groupName);
return page = button1.click();
}
private HtmlPage addUserToGroup(HtmlPage page, int userId, String group, String role) throws Exception {
ResultSet rs = sendSQLQuery("select username from users where id = " + userId + ";");
rs.next();
String username = rs.getString(1);
System.out.println("lägg till användare med namn: " + username + " med roll: " + role + " i grupp: " + group);
System.in.read();
return page;
}
private HtmlPage addInitialUserToGroup(HtmlPage page, int userId) throws Exception {
// ResultSet rs = sendSQLQuery("select username from users where id = "
// + userId + ";");
// rs.next();
// String username = rs.getString(1);
//
// System.out.println("lägg till användare med namn: " + username +
// " med roll: " + role + " i grupp: " + group);
// System.in.read();
List<DomElement> list1 = page.getElementsByIdAndOrName("selectedradiouser");
HtmlRadioButtonInput radioButton = null;
for (DomElement element : list1) {
radioButton = (HtmlRadioButtonInput) element;
if (String.valueOf(userId).equals(radioButton.getValueAttribute())) {
radioButton.click();
break;
}
}
HtmlForm form = page.getFormByName("input");
// final HtmlSelect groupList = form.getSelectByName("role");
// groupList.setSelectedAttribute(groupList.getOptionByText(role), true);
HtmlSubmitInput button = form.getInputByValue("Add user");
page = button.click();
return page;
}
private HtmlPage changeUserRole(HtmlPage page, String username, String role) throws Exception {
List<DomElement> elements = page.getElementsByIdAndOrName("changename");
for (DomElement element : elements) {
HtmlRadioButtonInput radioButton = (HtmlRadioButtonInput) element;
if (radioButton.getValueAttribute().equals(username)) {
radioButton.click();
break;
}
}
HtmlForm form = page.getFormByName("input");
final HtmlSelect groupList = form.getSelectByName("role");
groupList.setSelectedAttribute(groupList.getOptionByText(role), true);
HtmlSubmitInput button = form.getInputByValue("Change role");
return button.click();
}
@Test
public void FT4_4_1() throws Exception {
// förberedelser
String username = "user1";
String password = "pass12";
String tooShortGroupName = "brie";
String tooLongGroupName = "creamcheese";
String badCharGroupName = "cheddar?";
addUser(username, password, 0);
HtmlPage page = login("admin", "adminpw", null);
assertEquals("Admin blev inte inloggad", START_URL, page.getUrl().toString());
// navigera till projektgruppsadministrationssidan.
page = getPageByAnchor(page, "ProjectGroupAdmin");
assertEquals("Admin hamnade inte på projektadministrationssidan", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp med för kort namn
page = nameNewGroup(page, tooShortGroupName);
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
assertEquals("Admin kunde lägga till en projektgrupp med ett för kort namn", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp med för långt namn
page = nameNewGroup(page, tooLongGroupName);
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
assertEquals("Admin kunde lägga till en projektgrupp med ett för långt namn", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp med namn som innehåller olämpligt tecken
page = nameNewGroup(page, badCharGroupName);
assertTrue(page.asText().contains("Error: Suggested name not allowed"));
assertEquals("Admin kunde lägga till en projektgrupp med ett för långt namn", GROUP_ADMIN_URL, page.getUrl().toString());
ResultSet rs = sendSQLQuery("select count(*) from groups;");
rs.next();
assertEquals("Grupper har lagts till", 0, rs.getInt(1));
// TODO kontrollera att databsen är tom
}
@Test
public void FT4_4_2() throws Exception {
// förberedelser
String username = "leader";
String password = "leader";
String projectGroupName1 = "gouda";
String projectGroupName2 = "mozzarella";
int userId = addUser(username, password, 0);
HtmlPage page = login("admin", "adminpw", null);
// navigera till projektgruppsadministrationssidan.
page = getPageByAnchor(page, "ProjectGroupAdmin");
assertEquals("Admin hamnade inte på projektadministrationssidan", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp
page = nameNewGroup(page, projectGroupName1);
assertEquals("Admin kunde inte skapa projektgrupp med namnet: " + projectGroupName1, GROUP_ADMIN_URL, page.getUrl().toString());
page = addInitialUserToGroup(page, userId);
// navigera till projektgruppsadministrationssidan.
page = getPageByAnchor(page, "ProjectGroupAdmin");
// TODO är på fel sida
assertEquals("Admin hamnade inte på projektadministrationssidan", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp
page = nameNewGroup(page, projectGroupName2);
addInitialUserToGroup(page, userId);
// make sure the right content is in the database
ResultSet rs = sendSQLQuery("select * from groups where name = '" + projectGroupName1 + "';");
System.out.println(projectGroupName1);
if (rs.next()) {
assertEquals(projectGroupName1, rs.getString("name"));
} else {
fail("Det finns ingen group med namnet: " + projectGroupName1);
}
rs = sendSQLQuery("select * from groups where name = '" + projectGroupName2 + "';");
if (rs.next()) {
assertEquals(projectGroupName2, rs.getString("name"));
} else {
fail("Det finns ingen group med namnet: " + projectGroupName2);
}
rs = sendSQLQuery("select * from groups where name <> '" + projectGroupName1 + "' and name <> '" + projectGroupName2 + "';");
assertTrue("Det finns fler grupper än de två som har lagts in", !rs.next());
}
@Test
public void FT4_4_3() throws Exception {
// förberedelser
String username = "leader";
String password = "leader";
String projectGroupName = "getost";
addUser(username, password, 0);
addGroup(projectGroupName);
HtmlPage page = null;
page = login("admin", "adminpw", null);
// navigera till projektgruppsadministrationssidan.
page = getPageByAnchor(page, "ProjectGroupAdmin");
assertEquals("Admin hamnade inte på projektadministrationssidan", GROUP_ADMIN_URL, page.getUrl().toString());
// lägg till projektgrupp
page = nameNewGroup(page, projectGroupName);
assertEquals("Admin kunde skapa en grupp med ett upptaget namn", GROUP_ADMIN_URL, page.getUrl().toString());
assertTrue("Inget felmeddelande visas", page.asText().contains("Error: Suggested name not allowed"));
}
@Test
public void FT4_4_4() throws Exception {
// förberedelser
String username = "leader";
String password = "leader";
String[] groupNames = { "grupp1", "grupp2", "grupp3", "grupp4", "grupp5" };
int userId = -1;
userId = addUser(username, password, 0);
HtmlPage page = null;
page = login("admin", "adminpw", null);
// lägg till fem grupper
for (String groupName : groupNames) {
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = nameNewGroup(page, groupName);
// assertEquals("Admin kunde inte skapa projektgrupp med namnet: " + groupName, GROUP_HANDLING_URL, page.getUrl().toString());
page = addInitialUserToGroup(page, userId);
}
// kontrollera att rätt grupper finns i databasen
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("Fel antal grupper finns i databasen", 5, rs.getInt(1));
}
@Test
public void FT4_4_5() throws Exception {
// förberedelser
String username = "leader";
String password = "leader";
String[] groupNames = { "grupp1", "grupp2", "grupp3", "grupp4", "grupp5" };
String groupName6 = "grupp6";
int userId = -1;
userId = addUser(username, password, 0);
HtmlPage page = login("admin", "adminpw", null);
// lägg till fem grupper
for (String groupName : groupNames) {
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = nameNewGroup(page, groupName);
page = addInitialUserToGroup(page, userId);
}
// försök lägga till projektgrupp #6
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = nameNewGroup(page, groupName6);
assertEquals("Admin kunde skapa en sjätte projektgrupp med namnet: " + groupName6, GROUP_ADMIN_URL, page.getUrl().toString());
// kontrollera att rätt grupper finns i databasen
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("Fel antal grupper finns i databasen", 5, rs.getInt(1));
rs = sendSQLQuery("select count(*) from groups where name = '" + groupName6 + "';");
rs.next();
assertEquals(groupName6 + "finns i databasen", 0, rs.getInt(1));
}
@Test
public void FT4_4_6() throws Exception {
// TODO trasigt test?
// förberedelser
String username1 = "user1";
String password1 = "pass12";
String username2 = "user2";
String password2 = "pass12";
String role = "t1";
int userId2 = -1;
String[] groupNames = { "group1", "group2" };
int[] groupIds = { -1, -1 };
addUser(username1, password1, 0);
userId2 = addUser(username2, password2, 0);
for (int i = 0; i < groupNames.length; i++) {
groupIds[i] = addGroup(groupNames[i]);
addUserToGroup(username1, groupNames[i], "Project Leader");
}
HtmlPage page = null;
page = login("admin", "adminpw", null);
// lägg till användare två i grupperna
for (int i = 0; i < groupNames.length; i++) {
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = getPageByAnchor(page, "ProjectGroupAdmin?editid=" + groupIds[i]);
assertEquals("admin är inte på gruppediteringssidan", GROUP_HANDLING_URL, page.getUrl().toString());
// System.in.read();
page = addUserToGroup(page, userId2, groupNames[i], role);
// ResultSet rs =
// sendSQLQuery("select count(*) from user_group where user_id = " +
// userId2 + " and group_id = " + groupIds[i] + ";");
// rs.next();
}
// kontrollera att användare två är med i bägge grupperna
for (int i = 0; i < groupNames.length; i++) {
ResultSet rs = sendSQLQuery("select count(*) from user_group where user_id = " + userId2 + " and group_id = " + groupIds[i] + ";");
rs.next();
assertEquals("användare två finns i för många eller för få grupper", 1, rs.getInt(1));
}
}
@Test
public void FT4_4_7() throws Exception {
// TODO rapportera fel
// förberedelser
String groupName = "edamer";
HtmlPage page = login("admin", "adminpw", null);
// navigera till gruppadministration
page = getPageByAnchor(page, "ProjectGroupAdmin");
assertEquals("admin kunde inte navigera till gruppadministrationssidan", GROUP_ADMIN_URL, page.getUrl().toString());
page = nameNewGroup(page, groupName);
page = getPageByAnchor(page, "ProjectGroupAdmin");
// kontrollera att gruppen inte har lagts till
ResultSet rs = sendSQLQuery("select count(*) from groups where name = '" + groupName + "';");
rs.next();
assertEquals("gruppen lades till utan användare", 0, rs.getInt(1));
}
@Test
public void FT4_4_8() throws Exception {
// TODO rapportera fel
// förberedelser
String username = "user1";
String password = "pass12";
String role = "Project Leader";
String groupName = "group1";
int userId = -1;
userId = addUser(username, password, 0);
int groupId = addGroup(groupName);
addUserToGroup(username, groupName, role);
HtmlPage page = login("admin", "adminpw", null);
ResultSet rs = sendSQLQuery("select count(*) from users where username = '" + username + "'");
rs.next();
assertEquals("användaren finns inte från början", 1, rs.getInt(1));
// navigera till administration
page = getPageByAnchor(page, "ProjectGroupAdmin");
// delete user from project
page = getPageByAnchor(page, "ProjectGroupAdmin?editid=" + groupId);
page = getPageByAnchor(page, "GroupHandling?deletename=" + userId);
// kontrollera att användaren inte har raderats
rs = sendSQLQuery("select count(*) from users where username = '" + username + "'");
rs.next();
assertEquals("användaren togs bort trots att den var den enda användaren i gruppen", 1, rs.getInt(1));
}
@Test
public void FT4_4_9() throws Exception {
// förberedelser
String username = "user1";
String password = "pass12";
String groupName = "edamer";
int userId = addUser(username, password, 0);
// navigera till projektadministrationssisdan
HtmlPage page = login("admin", "adminpw", null);
page = getPageByAnchor(page, "ProjectGroupAdmin");
// skapa ny projektgrupp
page = nameNewGroup(page, groupName);
page = addInitialUserToGroup(page, userId);
// navigera bort från skapandet av projektgrupp
page = getPageByAnchor(page, "ProjectGroupAdmin");
// kontrollera att gruppen finns och att användaren är i gruppen
ResultSet rs = sendSQLQuery("select count(*) from groups where name = '" + groupName + "';");
rs.next();
assertEquals("gruppen blev inte tillagd", 1, rs.getInt(1));
rs = sendSQLQuery("select id from groups where name = '" + groupName + "';");
rs.next();
int groupId = rs.getInt(1);
try {
rs = sendSQLQuery("select count(*) from user_group where user_id = " + userId + " and group_id = " + groupId + ";");
} catch (SQLException e) {
e.printStackTrace();
}
rs.next();
assertEquals("användaren finns inte i gruppen", 1, rs.getInt(1));
}
@Test
public void FT4_4_10() throws Exception {
// förberedelser
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String role1 = "t1";
String role2 = "t2";
int totalNumberOfUsers = 20;
int groupId = addGroup(groupName);
String username = null;
int userId = -1;
for (int i = 0; i < totalNumberOfUsers; i++) {
username = usernameTemplate + i;
userId = addUser(username, password, 0);
if (i < totalNumberOfUsers - 1) {
addUserToGroup(username, groupName, role1);
}
}
HtmlPage page = login("admin", "adminpw", null);
// navigera till gruppadministration
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = getPageByAnchor(page, "ProjectGroupAdmin?editid=" + groupId);
assertEquals("admin är inte på group handling sidan", GROUP_HANDLING_URL, page.getUrl().toString());
// lägg till en till användare
addUserToGroup(page, userId, groupName, role2);
// kontrollera att det finns 20 användare i gruppen
ResultSet rs = sendSQLQuery("select count(*) from user_group where group_id = " + groupId + ";");
rs.next();
assertEquals("fel antal användare i gruppen", totalNumberOfUsers, rs.getInt(1));
}
@Test
public void FT4_4_11() throws Exception {
// förberedelser
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String role1 = "t1";
String role2 = "t2";
int totalNumberOfUsers = 21;
int groupId = addGroup(groupName);
String username = null;
int userId = -1;
for (int i = 0; i < totalNumberOfUsers; i++) {
username = usernameTemplate + i;
userId = addUser(username, password, 0);
if (i < totalNumberOfUsers - 1) {
addUserToGroup(username, groupName, role1);
}
}
HtmlPage page = login("admin", "adminpw", null);
// navigera till gruppadministration
page = getPageByAnchor(page, "ProjectGroupAdmin");
page = getPageByAnchor(page, "ProjectGroupAdmin?editid=" + groupId);
assertEquals("admin är inte på group handling sidan", GROUP_HANDLING_URL, page.getUrl().toString());
// lägg till en till användare
addUserToGroup(page, userId, groupName, role2 );
// kontrollera att det finns 20 användare i gruppen och att den 21:a
// användaren inte är tillagd i gruppen
ResultSet rs = sendSQLQuery("select count(*) from user_group where group_id = " + groupId + ";");
rs.next();
assertEquals("fel antal användare i gruppen", totalNumberOfUsers - 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where group_id = " + groupId + " and user_id = " + userId + ";");
rs.next();
assertEquals("för många användare tillagda i gruppen", 0, rs.getInt(1));
}
@Test
public void FT4_4_12() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String role1 = "t1";
String[] roles = { "t1", "t2", "t3" };
int numberOfUsers = roles.length;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, role1);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
page = changeUserRole(page, usernameTemplate + i, roles[i]);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from user_group where role <> 'Project Leader';");
rs.next();
assertEquals("fel antal användare i gruppen", numberOfUsers, rs.getInt(1));
for (int i = 0; i < numberOfUsers; i++) {
rs = sendSQLQuery("select role from user_group where user_id = " + userIds[i] + ";");
rs.next();
assertEquals("en användare har fel roll", roles[i], rs.getString(1));
}
}
@Test
public void FT4_4_13() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String role1 = "t1";
String[] roles = { "t1", "t2", "t3", "t4" };
int numberOfUsers = roles.length;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, role1);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
try {
page = changeUserRole(page, usernameTemplate + i, roles[i]);
assertNotEquals("en användare med rollen " + roles[numberOfUsers - 1] + " las till", roles[i], roles[numberOfUsers - 1]);
} catch (Exception e) {
assertEquals("en användare med rollen " + roles[i] + " kunde inte läggas till", roles[i], roles[numberOfUsers - 1]);
}
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from user_group where role <> 'Project Leader';");
rs.next();
assertEquals("fel antal användare i gruppen", numberOfUsers, rs.getInt(1));
for (int i = 0; i < numberOfUsers - 1; i++) {
rs = sendSQLQuery("select role from user_group where user_id = " + userIds[i] + ";");
rs.next();
if (i < numberOfUsers - 1) {
assertEquals("en användare har inte tilldeltas sin roll", roles[i], rs.getString(1));
} else {
assertNotEquals("en användare har tilldelats rollen " + roles[numberOfUsers - 1], roles[i], rs.getString(1));
}
}
}
@Test
public void FT4_4_14() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t2";
String newRole = "t1";
int numberOfUsers = 6;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers, rs.getInt(1));
}
@Test
public void FT4_4_15() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t3";
String newRole = "t2";
int numberOfUsers = 6;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers, rs.getInt(1));
}
@Test
public void FT4_4_16() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t1";
String newRole = "t3";
int numberOfUsers = 6;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers, rs.getInt(1));
}
@Test
public void FT4_4_17() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t2";
String newRole = "t1";
int numberOfUsers = 7;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers - 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + initialRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, 1, rs.getInt(1));
}
@Test
public void FT4_4_18() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t3";
String newRole = "t2";
int numberOfUsers = 7;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers - 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + initialRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, 1, rs.getInt(1));
}
@Test
public void FT4_4_19() throws Exception {
// förberedelser
String leaderName = "leader";
String usernameTemplate = "user";
String password = "pass12";
String groupName = "group1";
String initialRole = "t1";
String newRole = "t3";
int numberOfUsers = 7;
int[] userIds = new int[numberOfUsers];
addGroup(groupName);
addUser(leaderName, password, 0);
addUserToGroup(leaderName, groupName, "Project Leader");
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
userIds[i] = addUser(username, password, 0);
addUserToGroup(username, groupName, initialRole);
}
HtmlPage page = login(leaderName, password, groupName);
// navigera till gruppediteringssidan
assertTrue("Den inloggade användaren är inte project leader", page.asText().contains("Project Management"));
page = getPageByAnchor(page, "ProjectLeader");
// byt roll på användarna
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
page = changeUserRole(page, username, newRole);
}
// kontrollera att alla har rätt roll
ResultSet rs = sendSQLQuery("select count(*) from groups");
rs.next();
assertEquals("incorrect number of groups", 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + newRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, numberOfUsers - 1, rs.getInt(1));
rs = sendSQLQuery("select count(*) from user_group where role = '" + initialRole + "';");
rs.next();
assertEquals("incorrect number of users with role " + newRole, 1, rs.getInt(1));
}
@Test
public void FT4_4_20() throws Exception {
HtmlPage page = login("admin", "adminpw", null);
try {
page = getPageByAnchor(page, "Administration");
} catch (Exception e) {
fail("Administratören kunde inte komma åt administrationssidan");
}
}
}