-
+
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/BaseIT.java b/src/test/java/guru/sfg/brewery/web/controllers/BaseIT.java
index f5000e7bc..2a67537d5 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/BaseIT.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/BaseIT.java
@@ -7,20 +7,22 @@
import guru.sfg.brewery.services.BreweryService;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.h2.H2ConsoleProperties;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Import;
import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
/**
- * Created by jt on 6/13/20.
+ * Modified by Pierrot on 2023-01-22.
*/
+@SpringBootTest
+@AutoConfigureMockMvc
+@Import({H2ConsoleProperties.class})
public abstract class BaseIT {
- @Autowired
- WebApplicationContext wac;
+ @Autowired
protected MockMvc mockMvc;
@MockBean
@@ -40,9 +42,6 @@ public abstract class BaseIT {
@BeforeEach
public void setup() {
- mockMvc = MockMvcBuilders
- .webAppContextSetup(wac)
- .apply(springSecurity())
- .build();
+
}
}
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerIT.java b/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerIT.java
index b13ec5437..abe81808d 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerIT.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerIT.java
@@ -1,7 +1,6 @@
package guru.sfg.brewery.web.controllers;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.anonymous;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
@@ -9,10 +8,9 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
/**
- * Created by jt on 6/12/20.
+ * Modified by Pierrot on 2023-01-22.
*/
-@SpringBootTest
-public class BeerControllerIT extends BaseIT{
+class BeerControllerIT extends BaseIT{
@Test
void initCreationFormWithSpring() throws Exception {
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerTest.java b/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerTest.java
index 0efa7484d..ca7153e8f 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerTest.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/BeerControllerTest.java
@@ -17,21 +17,23 @@
package guru.sfg.brewery.web.controllers;
+import guru.sfg.brewery.config.SecurityConfig;
import guru.sfg.brewery.domain.Beer;
import guru.sfg.brewery.repositories.BeerRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.h2.H2ConsoleProperties;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Import;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
+import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.ArrayList;
import java.util.List;
@@ -45,34 +47,36 @@
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-@ExtendWith(MockitoExtension.class)
+
+/**
+ * Modified by Pierrot on 2023-01-22.
+ */
+@WebMvcTest(BeerController.class)
+@Import({SecurityConfig.class, H2ConsoleProperties.class})
class BeerControllerTest {
- @Mock
+ @MockBean
BeerRepository beerRepository;
- @InjectMocks
- BeerController controller;
+ @Autowired
+ MockMvc mockMvc;
+
List beerList;
UUID uuid;
Beer beer;
- MockMvc mockMvc;
Page beers;
Page pagedResponse;
@BeforeEach
void setUp() {
- beerList = new ArrayList();
+ beerList = new ArrayList<>();
beerList.add(Beer.builder().build());
beerList.add(Beer.builder().build());
- pagedResponse = new PageImpl(beerList);
+ pagedResponse = new PageImpl<>(beerList);
final String id = "493410b3-dd0b-4b78-97bf-289f50f6e74f";
uuid = UUID.fromString(id);
- mockMvc = MockMvcBuilders
- .standaloneSetup(controller)
- .build();
}
@Test
@@ -81,7 +85,7 @@ void findBeers() throws Exception{
.andExpect(status().isOk())
.andExpect(view().name("beers/findBeers"))
.andExpect(model().attributeExists("beer"));
- verifyZeroInteractions(beerRepository);
+ verifyNoMoreInteractions(beerRepository);
}
//ToDO: Mocking Page
@@ -96,6 +100,7 @@ void processFindFormReturnMany() throws Exception{
@Test
+ @WithMockUser(username = "MockUser",password = "MockPWD")
void showBeer() throws Exception{
when(beerRepository.findById(uuid)).thenReturn(Optional.of(Beer.builder().id(uuid).build()));
@@ -106,43 +111,46 @@ void showBeer() throws Exception{
}
@Test
+ @WithMockUser(username = "MockUser",password = "MockPWD")
void initCreationForm() throws Exception {
mockMvc.perform(get("/beers/new"))
.andExpect(status().isOk())
.andExpect(view().name("beers/createBeer"))
- .andExpect(model().attributeExists("beer"));
- verifyZeroInteractions(beerRepository);
+ .andExpect(model().attributeExists("beer"))
+ .andExpect(model().attributeExists("beerStyle"));
+ verifyNoMoreInteractions(beerRepository);
}
@Test
+ @WithMockUser(username = "MockUser",password = "MockPWD")
void processCreationForm() throws Exception {
when(beerRepository.save(ArgumentMatchers.any())).thenReturn(Beer.builder().id(uuid).build());
mockMvc.perform(post("/beers/new"))
.andExpect(status().is3xxRedirection())
- .andExpect(view().name("redirect:/beers/"+ uuid))
- .andExpect(model().attributeExists("beer"));
+ .andExpect(view().name("redirect:/beers/"+ uuid));
verify(beerRepository).save(ArgumentMatchers.any());
}
@Test
+ @WithMockUser(username = "MockUser",password = "MockPWD")
void initUpdateBeerForm() throws Exception{
when(beerRepository.findById(uuid)).thenReturn(Optional.of(Beer.builder().id(uuid).build()));
mockMvc.perform(get("/beers/"+uuid+"/edit"))
.andExpect(status().isOk())
.andExpect(view().name("beers/createOrUpdateBeer"))
- .andExpect(model().attributeExists("beer"));
- verifyZeroInteractions(beerRepository);
+ .andExpect(model().attributeExists("beer"))
+ .andExpect(model().attributeExists("beerStyle"));
+ verify(beerRepository,atMost(2)).findById(any());
}
@Test
+ @WithMockUser(username = "MockUser",password = "MockPWD")
void processUpdationForm() throws Exception {
when(beerRepository.save(ArgumentMatchers.any())).thenReturn(Beer.builder().id(uuid).build());
mockMvc.perform(post("/beers/"+uuid+"/edit"))
.andExpect(status().is3xxRedirection())
- .andExpect(view().name("redirect:/beers/"+uuid))
- .andExpect(model().attributeExists("beer"));
-
+ .andExpect(view().name("redirect:/beers/"+uuid));
verify(beerRepository).save(ArgumentMatchers.any());
}
}
\ No newline at end of file
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/CustomerControllerTest.java b/src/test/java/guru/sfg/brewery/web/controllers/CustomerControllerTest.java
index 24b79a062..1bf869b78 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/CustomerControllerTest.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/CustomerControllerTest.java
@@ -57,7 +57,7 @@ class CustomerControllerTest {
@BeforeEach
void setUp() {
- customerList = new ArrayList();
+ customerList = new ArrayList<>();
customerList.add(Customer.builder().customerName("John Doe").build());
customerList.add(Customer.builder().customerName("John Doe").build());
@@ -75,11 +75,11 @@ void findCustomers() throws Exception{
.andExpect(status().isOk())
.andExpect(view().name("customers/findCustomers"))
.andExpect(model().attributeExists("customer"));
- verifyZeroInteractions(customerRepository);
+ verifyNoMoreInteractions(customerRepository);
}
//ToDO: Fix stubbing error
@Test
- @Disabled
+ @Disabled("Fix stubbing error")
void processFindFormReturnMany() throws Exception{
when(customerRepository.findAllByCustomerNameLike("John Doe")).thenReturn(customerList);
@@ -104,7 +104,7 @@ void initCreationForm() throws Exception{
.andExpect(status().isOk())
.andExpect(view().name("customers/createCustomer"))
.andExpect(model().attributeExists("customer"));
- verifyZeroInteractions(customerRepository);
+ verifyNoMoreInteractions(customerRepository);
}
@Test
@@ -112,8 +112,10 @@ void processCreationForm() throws Exception{
when(customerRepository.save(ArgumentMatchers.any())).thenReturn(Customer.builder().id(uuid).build());
mockMvc.perform(post("/customers/new"))
.andExpect(status().is3xxRedirection())
- .andExpect(view().name("redirect:/customers/"+ uuid))
- .andExpect(model().attributeExists("customer"));
+ .andExpect(view().name("redirect:/customers/"+ uuid));
+// Passes with previous SB Versions
+// Doesn't work anymore in SB3.0.1 since the Model should be explicitly set in the Controller !!!!
+// .andExpect(model().attributeExists("customer"));
verify(customerRepository).save(ArgumentMatchers.any());
}
@@ -124,7 +126,7 @@ void initUpdateCustomerForm() throws Exception{
.andExpect(status().isOk())
.andExpect(view().name("customers/createOrUpdateCustomer"))
.andExpect(model().attributeExists("customer"));
- verifyZeroInteractions(customerRepository);
+ verifyNoMoreInteractions(customerRepository);
}
@Test
@@ -133,8 +135,10 @@ void processUpdationForm() throws Exception{
mockMvc.perform(post("/customers/"+uuid+"/edit"))
.andExpect(status().is3xxRedirection())
- .andExpect(view().name("redirect:/customers/"+uuid))
- .andExpect(model().attributeExists("customer"));
+ .andExpect(view().name("redirect:/customers/"+uuid));
+// Passes with previous SB Versions
+// Doesn't work anymore in SB3.0.1 since the Model should be explicitly set in the Controller !!!!
+// .andExpect(model().attributeExists("customer"));
verify(customerRepository).save(ArgumentMatchers.any());
}
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/IndexControllerIT.java b/src/test/java/guru/sfg/brewery/web/controllers/IndexControllerIT.java
index 5140c3acb..ecf36b317 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/IndexControllerIT.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/IndexControllerIT.java
@@ -1,15 +1,13 @@
package guru.sfg.brewery.web.controllers;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
- * Created by jt on 6/13/20.
+ * Modified by Pierrot on 2023-01-22.
*/
-@WebMvcTest
public class IndexControllerIT extends BaseIT {
@Test
diff --git a/src/test/java/guru/sfg/brewery/web/controllers/api/BeerRestControllerIT.java b/src/test/java/guru/sfg/brewery/web/controllers/api/BeerRestControllerIT.java
index 10d4ab40f..6d9bc0666 100644
--- a/src/test/java/guru/sfg/brewery/web/controllers/api/BeerRestControllerIT.java
+++ b/src/test/java/guru/sfg/brewery/web/controllers/api/BeerRestControllerIT.java
@@ -2,7 +2,6 @@
import guru.sfg.brewery.web.controllers.BaseIT;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
@@ -10,9 +9,8 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
- * Created by jt on 6/13/20.
+ * Modified by Pierrot on 2023-01-22.
*/
-@SpringBootTest
public class BeerRestControllerIT extends BaseIT {
@Test
@@ -30,7 +28,7 @@ void deleteBeerNoAuth() throws Exception{
@Test
void findBeers() throws Exception{
- mockMvc.perform(get("/api/v1/beer/"))
+ mockMvc.perform(get("/api/v1/beer"))
.andExpect(status().isOk());
}