Skip to content

Commit

Permalink
Added unit test for NewUserController
Browse files Browse the repository at this point in the history
  • Loading branch information
Celezt committed Apr 24, 2022
1 parent fcacd07 commit c21ebfa
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 7 deletions.
27 changes: 20 additions & 7 deletions src/main/java/client/controllers/NewUserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.control.Alert.AlertType;
import kong.unirest.HttpResponse;
import kong.unirest.JsonNode;
import kong.unirest.Unirest;
Expand Down Expand Up @@ -48,7 +49,7 @@ public void backClicked(){
}

public void createUserClicked() {
String trimmedUsername = this.username.getText().trim();
String trimmedUsername = username.getText().trim();

if (isValidUsername(trimmedUsername) && isValidPassword(password.getText(), passwordRepeat.getText())) {
User user = new User(trimmedUsername, password.getText(), false);
Expand All @@ -57,21 +58,23 @@ public void createUserClicked() {
HttpResponse<JsonNode> response = Unirest.post("http://localhost:5000/user").body(new Gson().toJson(user)).asJson();

if (response.getStatus() == 200) {
mainController.popUpWindow(Alert.AlertType.INFORMATION, "Klar", "Ett konto har skapats");
popUpWindow("Klar", "Ett konto har skapats", Alert.AlertType.INFORMATION);
mainController.setScene(ScenesEnum.LogIn);
}
else {
mainController.popUpWindow(Alert.AlertType.ERROR, "Fel", "Det gick ej att skapa kontot");
popUpWindow("Fel", "Det gick ej att skapa kontot");
}
}
}

public boolean isValidUsername(String username){
username = username.trim();

if (username.length() < MIN_NAME_LENGTH || username.length() > MAX_NAME_LENGTH) {
mainController.popUpWindow(Alert.AlertType.ERROR, "Användarnamnet är för kort eller långt", "Användarnamnet måste vara mellan 5 och 20 tecken långt");
popUpWindow("Användarnamnet är för kort eller långt", "Användarnamnet måste vara mellan 5 och 20 tecken långt");
return false;
} else if(!Pattern.compile("^[a-zA-Z0-9]+$").matcher(username).matches()){
mainController.popUpWindow(Alert.AlertType.ERROR, "Specialtecken är ej tillåtna", "Användarnamnet får ej innehålla specialtecken, som t ex !, &, *");
popUpWindow("Specialtecken är ej tillåtna", "Användarnamnet får ej innehålla specialtecken, som t ex !, &, *");
return false;
}

Expand All @@ -80,13 +83,23 @@ public boolean isValidUsername(String username){

public Boolean isValidPassword(String password, String passwordRepeat){
if (!password.equals(passwordRepeat)) {
mainController.popUpWindow(Alert.AlertType.ERROR, "Felaktigt lösenord", "Lösenorden du angav stämmer ej överens med varandra");
popUpWindow("Felaktigt lösenord", "Lösenorden du angav stämmer ej överens med varandra");
return false;
} else if (password.length() < MIN_PASSWORD_LENGTH){
mainController.popUpWindow(Alert.AlertType.ERROR, "Lösenordet är för kort", "Lösenordet måste vara minst 6 tecken långt");
popUpWindow("Lösenordet är för kort", "Lösenordet måste vara minst 6 tecken långt");
return false;
}

return true;
}

private void popUpWindow(String title, String message){
popUpWindow(title, message, Alert.AlertType.ERROR);
}

private void popUpWindow(String title, String message, AlertType alertType) {
if (mainController != null){
mainController.popUpWindow(alertType, title, message);
}
}
}
67 changes: 67 additions & 0 deletions src/test/java/client/controllers/NewUserControllerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package client.controllers;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class NewUserControllerTest {
NewUserController control;

@BeforeEach
void init(){
control = new NewUserController();
}

@Test
void testValidUsernameTooShort() {
assertFalse(control.isValidUsername("aaa")); // 3
}

@Test
void testValidUsernameTooLong() {
assertFalse(control.isValidUsername("aaaaaaaaaaaaaaaaaaaaa")); // 21
}

@Test
void testValidUsernameShortestPossible() {
assertTrue(control.isValidUsername("aaaa")); // 4
}

@Test
void testValidUsernameLongestPossible() {
assertTrue(control.isValidUsername("aaaaaaaaaaaaaaaaaaaa")); // 20
}

@Test
void testValidUsernameNumbers() {
assertTrue(control.isValidUsername("1234567890"));
}

@Test
void testValidUsernameCharacters() {
assertTrue(control.isValidUsername("abcdefghijklmnopqrst"));
assertTrue(control.isValidUsername("iuwgyz")); // Too long otherwise
}

@Test
void testValidUsernameEmptySpaces() {
assertFalse(control.isValidUsername(" ")); // Trim all empty spaces from beginning and end
}

@Test
void testValidUsernameEmptySpacesWithTooFewCharacters() {
assertFalse(control.isValidUsername(" abc "));
}

@Test
void testValidUsernameEmptySpacesWithEnoughCharacters() {
assertTrue(control.isValidUsername(" abcdefghijklmnopqrst "));
}

@Test
void testValidUsernameIllegalCharacters() {
assertFalse(control.isValidUsername("!@%*_"));
}
}

0 comments on commit c21ebfa

Please sign in to comment.