From 1ef9c248b4bc8be1c81db6751a3579552ee54568 Mon Sep 17 00:00:00 2001 From: Andrey Belousov <groundhog448@gmail.com> Date: Wed, 18 Dec 2019 00:33:59 +0000 Subject: [PATCH] Added negative tests for controllers * Deletion of non-existing Id's for every entity * Calling browse page with empty base for every entity * Calling edit page with non-existing (but correct) id for every entity * Calling edit page with invalid id for every entity * Calling delete with non-existing (but correct) id for every entity * Calling delete with invalid id for every entity --- .../corporate_app2/controllers/CinemasTest.kt | 18 +++++++++++++++++- .../corporate_app2/controllers/TicketsTest.kt | 17 ++++++++++++++++- .../corporate_app2/controllers/UsersTest.kt | 19 +++++++++++++++++-- .../controllers/rest/CinemaApiTest.kt | 19 +++++++++++++++++++ .../controllers/rest/TicketApiTest.kt | 17 +++++++++++++++++ .../controllers/rest/UserApiTest.kt | 17 +++++++++++++++++ 6 files changed, 103 insertions(+), 4 deletions(-) diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt index b937803..a159c66 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt @@ -14,6 +14,7 @@ import org.springframework.http.MediaType import org.springframework.test.context.jdbc.Sql import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.request.MockMvcRequestBuilders +import org.springframework.test.web.servlet.result.MockMvcResultMatchers import org.springframework.test.web.servlet.result.MockMvcResultMatchers.* import java.lang.reflect.GenericArrayType import java.util.* @@ -58,7 +59,7 @@ class CinemasTest { @Test @Throws(Exception::class) - fun editRedirectToCreateIfIdEmptyTest() { + fun editNonExistingIdRedirectToCreateTest() { mvc.perform(MockMvcRequestBuilders.get("/cinemas/edit")) .andExpect(status().isOk) .andExpect(model().attribute("action", Matchers.equalTo("Create"))) @@ -85,4 +86,19 @@ class CinemasTest { .andExpect(model().attribute("cinemas", Matchers.notNullValue(MutableCollection::class.java))) .andExpect(model().attribute("cinemas", CoreMatchers.everyItem(Matchers.notNullValue(Cinema::class.java)))) } + + @Test + @Throws(Exception::class) + fun listEmptyPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/cinemas/list")) + .andExpect(status().isOk) + .andExpect(model().attribute("cinemas", Matchers.notNullValue(MutableCollection::class.java))) + } + + @Test + @Throws(Exception::class) + fun editInvalidUUIDTest() { + mvc.perform(MockMvcRequestBuilders.get("/cinemas/edit?id=totallyNotAnUUID")) + .andExpect(MockMvcResultMatchers.status().isBadRequest) + } } diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt index 46149f0..9a0b147 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt @@ -58,7 +58,7 @@ class TicketsTest { @Test @Throws(Exception::class) - fun editRedirectToCreateIfIdEmptyTest() { + fun editNonExistingIdRedirectToCreateTest() { mvc.perform(MockMvcRequestBuilders.get("/tickets/edit")) .andExpect(MockMvcResultMatchers.status().isOk) .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Create"))) @@ -84,4 +84,19 @@ class TicketsTest { .andExpect(MockMvcResultMatchers.status().isOk) .andExpect(MockMvcResultMatchers.model().attribute("tickets", CoreMatchers.everyItem(Matchers.notNullValue(Ticket::class.java)))) } + + @Test + @Throws(Exception::class) + fun listEmptyPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/tickets/list")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("tickets", Matchers.notNullValue(MutableCollection::class.java))) + } + + @Test + @Throws(Exception::class) + fun editInvalidUUIDTest() { + mvc.perform(MockMvcRequestBuilders.get("/tickets/edit?id=totallyNotAnUUID")) + .andExpect(MockMvcResultMatchers.status().isBadRequest) + } } \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt index 504f0c8..f58ead0 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt @@ -59,7 +59,7 @@ class UsersTest { @Test @Throws(Exception::class) - fun editRedirectToCreateIfIdEmptyTest() { + fun editNonExistingIdRedirectToCreateTest() { mvc.perform(MockMvcRequestBuilders.get("/users/edit")) .andExpect(MockMvcResultMatchers.status().isOk) .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Create"))) @@ -79,10 +79,25 @@ class UsersTest { @Test @Throws(Exception::class) - @Sql("/cinemasFill.sql") + @Sql("/usersFill.sql") fun listPageTest() { mvc.perform(MockMvcRequestBuilders.get("/users/list")) .andExpect(MockMvcResultMatchers.status().isOk) .andExpect(MockMvcResultMatchers.model().attribute("users", everyItem(Matchers.notNullValue(User::class.java)))) } + + @Test + @Throws(Exception::class) + fun listEmptyPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/users/list")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("users", Matchers.notNullValue(MutableCollection::class.java))) + } + + @Test + @Throws(Exception::class) + fun editInvalidUUIDTest() { + mvc.perform(MockMvcRequestBuilders.get("/users/edit?id=totallyNotAnUUID")) + .andExpect(MockMvcResultMatchers.status().isBadRequest) + } } diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt index 4aa67a7..f269251 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt @@ -14,9 +14,12 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.test.context.jdbc.Sql import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.MvcResult +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get +import org.springframework.test.web.servlet.result.MockMvcResultMatchers import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status +import java.util.* @SpringBootTest @AutoConfigureMockMvc @@ -56,4 +59,20 @@ class CinemaApiTest { val tickets = ticketService.findAll().map { e -> e.cinema!!.id }.distinct() assertThat(tickets, not(hasItem(randomCinemaId))) } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun deleteNonExistingIdReturns404Test() { + val randomCinemaId = UUID.randomUUID() + print(randomCinemaId) + mvc.perform(delete("/api/cinemas/delete?id=${randomCinemaId}")) + .andExpect(status().isNotFound) + } + + @Test + @Throws(Exception::class) + fun deleteInvalidUUIDTest() { + mvc.perform(delete("/api/cinemas/delete?id=totallyNotAnUUID")) + .andExpect(status().isBadRequest) + } } \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiTest.kt index d96c472..b493ac1 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/TicketApiTest.kt @@ -14,6 +14,7 @@ import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.MvcResult import org.springframework.test.web.servlet.request.MockMvcRequestBuilders import org.springframework.test.web.servlet.result.MockMvcResultMatchers +import java.util.* @SpringBootTest @AutoConfigureMockMvc @@ -50,4 +51,20 @@ class TicketApiTest { val tickets = service.findAll().map { e -> e.id }.distinct() MatcherAssert.assertThat(tickets, IsNot.not(Matchers.hasItem(randomTicketId))) } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun deleteNonExistingIdReturns404Test() { + val randomTicketId = UUID.randomUUID() + print(randomTicketId) + mvc.perform(MockMvcRequestBuilders.delete("/api/tickets/delete?id=${randomTicketId}")) + .andExpect(MockMvcResultMatchers.status().isNotFound) + } + + @Test + @Throws(Exception::class) + fun deleteInvalidUUIDTest() { + mvc.perform(MockMvcRequestBuilders.delete("/api/tickets/delete?id=totallyNotAnUUID")) + .andExpect(MockMvcResultMatchers.status().isBadRequest) + } } \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiTest.kt index 9d2f179..55ee715 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiTest.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/UserApiTest.kt @@ -15,6 +15,7 @@ import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.MvcResult import org.springframework.test.web.servlet.request.MockMvcRequestBuilders import org.springframework.test.web.servlet.result.MockMvcResultMatchers +import java.util.* @SpringBootTest @AutoConfigureMockMvc @@ -54,4 +55,20 @@ class UserApiTest { val tickets = ticketService.findAll().map { e -> e.user!!.id }.distinct() MatcherAssert.assertThat(tickets, IsNot.not(Matchers.hasItem(randomUserId))) } + + @Test + @Sql("/usersFill.sql", "/cinemasFill.sql", "/ticketsFill.sql") + fun deleteNonExistingIdReturns404Test() { + val randomUserId = UUID.randomUUID() + print(randomUserId) + mvc.perform(MockMvcRequestBuilders.delete("/api/users/delete?id=${randomUserId}")) + .andExpect(MockMvcResultMatchers.status().isNotFound) + } + + @Test + @Throws(Exception::class) + fun deleteInvalidUUIDTest() { + mvc.perform(MockMvcRequestBuilders.delete("/api/users/delete?id=totallyNotAnUUID")) + .andExpect(MockMvcResultMatchers.status().isBadRequest) + } } \ No newline at end of file -- GitLab