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