...
One of the requirements from Regterschot Racing was that the application needs to be safe, so that no-one is allowed on the appplication, except for those with the permission to be in the application.
The code also needs to work and be well documented. This document will show which code works and what all the tests are. If there is a failed test, it will be explained on why this happens.
The token usernameErik is defined as "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.ewogICAgIm5hbWUiOiAiRXJpayIKfQ==.2d2c39f777b16f75c701e851e9ec20d45f4134a281155e0c6f909876228d7d80"
Graph tests
GraphServiceTest class
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getAllGraphs() | Returns a GraphsDTO with the following information. GraphsDTO{ name = "test" tabID = 1 id = 1 } | Returns the expected list of DTOs. | Yes | The response from the DAO is set manually, because a connection to the real database is not safe in tests. The response is the same GraphsDTO, to see if the getter works en returns the list from GraphDAO. | |
2 | addGraph() | Throws a DatabaseException. | tabID = 1 graphID = 1 graphType = "linechart" | A DatabaseException is thrown. | Yes | The return value cannot be tested, since this method returns a void. That is why the Exception is checked, instead of a return value. |
3 | deleteGraphs() | Throws a DatabaseException. | tabID = 1 graphID = 1 | A DatabaseException is thrown. | Yes | The return value cannot be tested, since this method returns a void. That is why the Exception is checked, instead of a return value. |
Table 1: Tests in GraphServiceTest
GraphResourceTest class
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | addGraphTest() | Returns a 200 status code back to the user. | tabID = 1 graphID = 1 graphType = "line" | Returns a 200 response code, which means that the response is OK. | Yes | |
2 | deleteGraphTest() | Returns a 200 status code back to the user. | Returns a 200 response code, which means that the response is OK. | Yes (see comments) | This method does work, but doesn't test if it works with a wrong input given. This is because the thrown exception gets mapped by the mapper with the Provider annotation. This test strictly tests if the mapper does return the 403 code given by the user. |
Table 2: Tests in GraphDAOTest
GraphDAOTest class
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getGraphs() | All graphs with tabID are shown. | tabID = 1 | All graphs with the given tabID, are returned to the user. | Yes | |
2 | getUserTabsSqlException() | A databaseException DatabaseException will be thrown after a SQLException. | tabID = 1 | A SQLException is thrown. | Yes | |
3 | addGraphsTestSqlException() | A databaseException DatabaseException will be thrown after a SQLException. | tabID = 1 graphID = 1 graphType = "Linechart" | A SQLException is thrown. | Yes |
Table 1 3: Tests in GraphDAOTest
Tab tests
TabServiceTest class
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | ||||||
Table 4: Tests in TabServiceTest
TabResourceTest class
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getTabsWithGoodJWT() | Returns a 200 status code back to the user. | token = usernameErik | Returns a 200 response code, which means that the response is OK. | Yes | |
2 | deleteGraphTest() | Returns a 200 status code back to the user. | token WrongToken | Returns a 403 response code, which means it was a FORBIDDEN request. | Yes |
Table 5: Tests in TabResourceTest
TabDAOTest class
Name | Expected result | Parameters | Actual result | Success | Comments | ||||
---|---|---|---|---|---|---|---|---|---|
1 | getUserTabsCorrectly() | All tabs from the userExpect a result that is not null. | username = 'Erik' | All graphs are returned to the user. | Yes | Returns something that is not null. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. | |
2 | getUserTabsSqlException() | A databaseException DatabaseException will be thrown after a SQLException. | username = 'Erik' | A SQLException DatabaseException is thrown. | Yes | Wrong exception is thrown.
Table 26: Tests in TabDAOTest
Login tests
...
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | checkCorrectUsernameResponse() | Gives the same username back as the user has given to the system. | LoginRequestDTO{ username = 'Erik' } | The class returns 'Erik', and thus gives the same username back. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. |
2 | checkCorrectTokenResponse() | Gives a new token dedicated to a specific name. | LoginRequestDTO{ username = 'Erik' } | The class returns the same token as expected for the user given. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. |
3 | checkThrownExceptionWrongPassword() | Throws a LoginCredentialsIncorrectException after wrong input of the password. | LoginRequestDTO{ username = 'Erik' } | A LoginCredentialsIncorrectException is thrown. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. In this case it's set to 0, to simulate the database returning nothing. |
4 | checkThrownExceptionWrongUser() | Throws a LoginCredentialsIncorrectException after wrong input of the name. | LoginRequestDTO{ username = 'WrongUser' } | A LoginCredentialsIncorrectException is thrown. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. In this case it's set to 0, to simulate the database returning nothing. |
5 | checkThrownExceptionNoUserAndPassword() | Throws a LoginCredentialsIncorrectException after no input. | LoginRequestDTO{ username = '' } | A LoginCredentialsIncorrectException is thrown. | Yes | The response from the database is set manually, because a connection to the real database is not safe in tests. In this case it's set to 0, to simulate the database returning nothing. |
6 | testCreationToken() | Creates a token based on the name that it has received. | username = 'Erik' | Creates the token from username 'Erik'. | Yes |
Table 7: Tests in LoginServiceTest
LoginResourceTest
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getUserHTMLcodeWithCorrectInformation() | Returns a 200 status code back to the user. | LoginRequestDTO{ username = 'Erik' } | Returns a 200 response code, which means that the response is OK. | Yes | |
2 | getUserHTMLcodeWithIncorrectInformation() | Returns a 403 status code back to the user. | Returns a 403 response code, which means it was a FORBIDDEN request. | Yes (see comments) | This method does work, but doesn't test if it works with a wrong input given. This is because the thrown exception gets mapped by the mapper with the Provider annotation. This test strictly tests if the mapper does return the 403 code given by the user. | |
3 | checkExceptionThrown() | Throws a LoginCredentialsIncorrectException after wrong input of the password in resource. | LoginRequestDTO{ username = 'Erik' } | A LoginCredentialsIncorrectException is thrown. | Yes |
Table 8: Tests in LoginResourceTest
UserDAOTest
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getUserCorrectly() | Expect a result that is not null. | username = 'Erik' | Returns something that is not null. | Yes | We manually added some return values of this function, to test if it would work. This test cannot connect to the database, since a unit test may not do this. |
2 | getUserSqlException() | Throws a SQLException that in return throws a DatabaseException. | username = 'Erik' | A DatabaseException is thrown. | Yes |
Table 9: Tests in UserDAOTest
Race tests
The token usernameErik is defined as "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.ewogICAgIm5hbWUiOiAiRXJpayIKfQ==.2d2c39f777b16f75c701e851e9ec20d45f4134a281155e0c6f909876228d7d80"
RaceServiceTest
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getAllRaces() | Returns a list of DTO's. In this case we only put the following DTO inside the list. RaceDTO{ raceID = 1 raceName = "BMW Race" date = "2022-05-22" } | Returns the expected RaceDTO. | Yes | The response from the DAO is set manually, because a connection to the real database is not safe in tests. The response is the same RaceDTO, to see if the getter works en returns the list from RaceDAO. |
Table 10: Tests in RaceServiceTest
RaceResourceTest
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getRacesWithGoodJWT() | A 200 response code. | token = usernameErik | Returns a 200 response code, which means that the response is OK. | Yes | |
2 | returnsAllRaces() | Returns a list of DTO's. In this case we only put the following DTO inside the list. RaceDTO{ | token = usernameErik | Returns the expected list of DTO's. It does however, return it in an object type. It does return the same information as provided with the DTO, it still gives out a success. | Yes | The response from the service is set manually. This is done to prevent the test from executing code beyond the resource. If this is not set manually, it would test the DAO, service class and the database, which is not necessary for this class. These tests are done in their own classes seperate from this class. |
3 | getRacesWithBadJWT() | A 403 response code. | token = "WrongToken" | Returns a 403 response code, which means it was a FORBIDDEN request. | Yes |
Table 11: Tests in RaceResourceTest
RaceDAOTest
Name | Expected result | Parameters | Actual result | Success | Comments | |
---|---|---|---|---|---|---|
1 | getAllRaces() | Expect a result that is not null. | Returns something that is not null. | Yes | ||
2 | getAllRacesSqlException() | Throws a SQLException that in return throws a DatabaseException. | A DatabaseException is thrown. | Yes | ||
3 | testDataAllRaces() | Returns a list of DTO's. In this case we only put the following DTO inside the list. | Returns the expected list of DTOs. For this check the asserts check if the data inside the DTOs are the same. This includes: the raceid, the name of the race and the date. | Yes | For this test we manually changed the outcome of the resultset to simulate the database sending data to the code. This also happens in the Resultset.next function, to see if the DTO's are called. |
Table 12: Tests in RaceDAOTest
DtoTest
This class tests if the DTO's do not contain any logic and only getters and setters.