package test;
import org.junit.Test;
import static org.junit.Assert.*;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSelect;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
public class KvalitetskravTest extends PussTest {
@Test
public void ST5_1_1() throws Exception {
//förberedelser
String usernameTemplate = "user";
String password = "pass12";
String role = "t1";
String groupName = "group1";
int numberOfUsers = 51;
addGroup(groupName);
WebClient[] webClients = new WebClient[numberOfUsers];
HtmlPage[] pages = new HtmlPage[numberOfUsers];
for (int i = 0; i < numberOfUsers; i++) {
webClients[i] = new WebClient();
String username = usernameTemplate + i;
addUser(username, password, 0);
addUserToGroup(username, groupName, role);
}
//logga in alla
for (int i = 0; i < numberOfUsers; i++) {
String username = usernameTemplate + i;
HtmlPage page = webClients[i].getPage(LOGIN_URL);
HtmlForm form = page.getFormByName("input");
HtmlSubmitInput button = form.getInputByValue("Submit");
HtmlTextInput userField = form.getInputByName("user");
HtmlPasswordInput passwordField = form.getInputByName("password");
userField.setValueAttribute(username);
passwordField.setValueAttribute(password);
final HtmlSelect groupList = form.getSelectByName("groupID");
groupList.setSelectedAttribute(groupList.getOptionByText(groupName), true);
pages[i] = button.click();
}
//kontrollera vem som är inloggad
for (int i = 0; i < numberOfUsers; i++) {
HtmlPage page = pages[i];
page.refresh();
if (i < numberOfUsers - 1) {
assertEquals("användare nummer " + (i + 1) + " blev inte inloggad", START_URL, page.getUrl().toString());
} else {
assertEquals("användare nummer " + (i + 1) + " blev inloggad", LOGIN_URL, page.getUrl().toString());
}
}
//stäng alla fönster
for (int i = 0; i < numberOfUsers; i++) {
webClients[i].closeAllWindows();
}
}
@Test
public void ST5_1_2() throws Exception {
int tooLongTimeCounter = 0;
long tooLongTime = 1000;
int limit = 2;
for (int i = 0; i < 20; i++) {
long startTime = System.currentTimeMillis();
login("admin", "adminpw", null);
long endTime = System.currentTimeMillis();
if (endTime - startTime > tooLongTime) {
tooLongTimeCounter++;
}
}
assertTrue("för många anrop tog för lång tid", tooLongTimeCounter <= limit);
}
}