All checks were successful
Gradle CI with Full Reports / build (push) Successful in 20m6s
412 lines
14 KiB
Java
412 lines
14 KiB
Java
package project;
|
|
import hhn.temp.project.Main;
|
|
import hhn.temp.project.Task;
|
|
import hhn.temp.project.TaskManager;
|
|
import hhn.temp.project.TaskStatus;
|
|
import hhn.temp.project.expections.*;
|
|
import hhn.temp.project.provider.MySql;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.sql.Connection;
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class BadCaseTaskTest {
|
|
|
|
private TaskManager taskManager;
|
|
private String user = "hhn";
|
|
private String password = "!9oSmhsiwYO.m)_x";
|
|
private String db = "hhn";
|
|
private String host = "home.luithardt.cloud";
|
|
private String port = "3555";
|
|
|
|
@BeforeEach
|
|
public void setup() {
|
|
Main main = new Main();
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Create a new TaskManager and test Connecton")
|
|
public void assertCreateNewTaskManager() {
|
|
assertThrows(SQLNoConectionException.class,() -> taskManager = new TaskManager("deep", "deep", db, host, port));
|
|
assertThrows(NullPointerException.class,() -> taskManager = new TaskManager(null, "deep", db, host, port));
|
|
assertThrows(NullPointerException.class,() -> taskManager = new TaskManager(user, null, db, host, port));
|
|
assertThrows(NullPointerException.class,() -> taskManager = new TaskManager(user, password, null, host, port));
|
|
assertThrows(NullPointerException.class,() -> taskManager = new TaskManager(user, password, db, null, port));
|
|
assertThrows(NullPointerException.class,() -> taskManager = new TaskManager(user, password, db, host, null));
|
|
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert an IllegalArgumentException when you create a new Task with no or wrong Name, Description")
|
|
public void assertExceptionOnCreateNewTask() {
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask("", null));
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask(null, ""));
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask(null, null));
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask("", ""));
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask("", "test"));
|
|
assertThrows(IllegalArgumentException.class,() -> taskManager.createTask("ä#eadsew2", "test"));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert an IllegalArgumentException when you create a new Task with the same Name of a exits Task")
|
|
public void assertExceptionOnCreateNewTaskWithExitsName() {
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
String name = "Name";
|
|
String description = "Description";
|
|
assertDoesNotThrow(() -> taskManager.createTask(name, description));
|
|
assertThrows(TaskAlreadyExistsException.class, () -> taskManager.createTask(name, description));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert an IllegalArgumentException when you edit a exits Task")
|
|
public void assertExceptionOnEditATask() {
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
String name = "Name";
|
|
String description = "Description";
|
|
Task task = taskManager.createTask(name, description);
|
|
|
|
assertThrows(IllegalArgumentException.class, () -> task.setDescription(null));
|
|
assertThrows(IllegalArgumentException.class, () -> task.setStatus(null));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert an IllegalArgumentException when calling a non-Existing Task")
|
|
public void assertExceptionOnCallingANonextistingTask (){
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
String wrongName = "Manager";
|
|
String name = "Name";
|
|
String description = "Description";
|
|
Task task = taskManager.createTask(name, description);
|
|
|
|
assertThrows(IllegalArgumentException.class, () -> taskManager.getTask(wrongName));
|
|
assertThrows(IllegalArgumentException.class, () -> taskManager.getTask(23));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert an IllegalArgumentException when delete a existing Task with wrong arguments")
|
|
public void assertExceptionOnDeletingTask (){
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
String wrongName = "Manager";
|
|
String name = "Name";
|
|
String description = "Description";
|
|
Task task = taskManager.createTask(name, description);
|
|
|
|
assertThrows(IllegalArgumentException.class, () -> taskManager.deleteTask(null));
|
|
assertThrows(IllegalArgumentException.class, () -> taskManager.deleteTask(""));
|
|
assertThrows(IllegalArgumentException.class, () -> taskManager.deleteTask(wrongName));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Get a Exeption by setWorker and getWorker")
|
|
public void assertExeptionBySetAndGetAuthorOfATask() {
|
|
taskManager = new TaskManager(user, password, db, host, port);
|
|
String name = "Name";
|
|
String description = "Description";
|
|
String workerName = "worker";
|
|
|
|
Task task = taskManager.createTask(name, description);
|
|
assertThrows(TaskHasNoWorkerException.class, () -> task.getWorker());
|
|
assertThrows(IllegalArgumentException.class, () -> task.setWorker(null));
|
|
assertThrows(IllegalArgumentException.class, () -> task.setWorker(""));
|
|
assertThrows(IllegalArgumentException.class, () -> task.setWorker("ewrgi43rfoiw2öa#-"));
|
|
|
|
assertDoesNotThrow(() -> taskManager.resetTest());
|
|
|
|
}
|
|
|
|
|
|
// MYSQL FILE TESTS
|
|
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLNoConectionException when connect fails")
|
|
public void assertSQLNoConectionExceptionOnConnect() {
|
|
MySql mySql = new MySql("wrongUser", "wrongPassword", "wrongDb", host, port);
|
|
assertThrows(SQLNoConectionException.class, mySql::connect);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when reset without connect")
|
|
public void assertNullPointerExceptionOnReset() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, mySql::reset);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when createTask without connect")
|
|
public void assertNullPointerExceptionOnCreateTask() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.createTask("Task", "Description"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when existTask(name) without connect")
|
|
public void assertNullPointerExceptionOnExistTaskByName() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.existTask("Task"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when existTask(id) without connect")
|
|
public void assertNullPointerExceptionOnExistTaskById() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.existTask(1));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when deleteTask without connect")
|
|
public void assertNullPointerExceptionOnDeleteTask() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.deleteTask("Task"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when updateDescription without connect")
|
|
public void assertNullPointerExceptionOnUpdateDescription() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.updateDescription(1, "Desc"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when updateStatus without connect")
|
|
public void assertNullPointerExceptionOnUpdateStatus() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.updateStatus(1, TaskStatus.OPEN));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when updateWorker without connect")
|
|
public void assertNullPointerExceptionOnUpdateWorker() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.updateWorker(1, "Worker"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when getTask(id) without connect")
|
|
public void assertNullPointerExceptionOnGetTaskById() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.getTask(1));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when getTask(name) without connect")
|
|
public void assertNullPointerExceptionOnGetTaskByName() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, () -> mySql.getTask("Task"));
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert NullPointerException when getTaskList without connect")
|
|
public void assertNullPointerExceptionOnGetTaskList() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
assertThrows(NullPointerException.class, mySql::getTaskList);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert TaskNotExistsException when getTask(id) finds no task")
|
|
public void assertTaskNotExistsExceptionOnGetTaskById() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
mySql.reset();
|
|
|
|
assertThrows(
|
|
TaskNotExistsException.class,
|
|
() -> mySql.getTask(9999)
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert TaskNotExistsException when getTask(name) finds no task")
|
|
public void assertTaskNotExistsExceptionOnGetTaskByName() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
mySql.reset();
|
|
|
|
assertThrows(
|
|
TaskNotExistsException.class,
|
|
() -> mySql.getTask("does-not-exist")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when getTask(id) causes SQLException")
|
|
public void assertSQLStatmentExceptionOnGetTaskById() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.getTask(1)
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when getTask(name) causes SQLException")
|
|
public void assertSQLStatmentExceptionOnGetTaskByName() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.getTask("Task")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when getTaskList causes SQLException")
|
|
public void assertSQLStatmentExceptionOnGetTaskList() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
mySql::getTaskList
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when existTask causes SQLException")
|
|
public void assertSQLStatmentExceptionOnExistTask() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.existTask(1)
|
|
);
|
|
}
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when existTask causes SQLException")
|
|
public void assertSQLStatmentExceptionOnExistTaskWithString() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.existTask("adada")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when updateDescription causes SQLException")
|
|
public void assertSQLStatmentExceptionOnUpdateDescription() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.updateDescription(1, "desc")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when updateStatus causes SQLException")
|
|
public void assertSQLStatmentExceptionOnUpdateStatus() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.updateStatus(1, TaskStatus.OPEN)
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when updateWorker causes SQLException")
|
|
public void assertSQLStatmentExceptionOnUpdateWorker() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.updateWorker(1, "worker")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when deleteTask causes SQLException")
|
|
public void assertSQLStatmentExceptionOnDeleteTask() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.deleteTask("task")
|
|
);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when createTask causes SQLException")
|
|
public void assertSQLStatmentExceptionOnCreateTask() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(
|
|
SQLStatmentException.class,
|
|
() -> mySql.createTask("Task", "Description")
|
|
);
|
|
}
|
|
@Test
|
|
@DisplayName("Assert SQLStatmentException when reset causes SQLException")
|
|
void assertSQLStatmentExceptionOnReset() {
|
|
MySql mySql = new MySql(user, password, db, host, port);
|
|
mySql.connect();
|
|
assertDoesNotThrow(() ->closeConnectionViaReflection(mySql));
|
|
|
|
assertThrows(SQLStatmentException.class, mySql::reset);
|
|
}
|
|
|
|
private void closeConnectionViaReflection(MySql mySql) throws Exception {
|
|
Field connectionField = MySql.class.getDeclaredField("connection");
|
|
connectionField.setAccessible(true);
|
|
Connection connection = (Connection) connectionField.get(mySql);
|
|
connection.close();
|
|
}
|
|
|
|
|
|
|
|
}
|