Skip to content
Snippets Groups Projects
Commit bca73d32 authored by Anders Montsko Austlid's avatar Anders Montsko Austlid
Browse files

Merge branch 'test/recipecontroller-test-coverage' into 'main'

RecipeController unit test coverage has been improved slightly

Closes #278

See merge request idatt2106-v23-03/backend!229
parents 48088386 73fd78fc
No related branches found
No related tags found
No related merge requests found
package ntnu.idatt2016.v233.SmartMat.controller; package ntnu.idatt2016.v233.SmartMat.controller;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
import ntnu.idatt2016.v233.SmartMat.entity.Recipe; import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
import ntnu.idatt2016.v233.SmartMat.service.RecipeService; import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
...@@ -9,16 +10,27 @@ import org.junit.jupiter.api.extension.ExtendWith; ...@@ -9,16 +10,27 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
...@@ -36,6 +48,80 @@ public class RecipeControllerTest { ...@@ -36,6 +48,80 @@ public class RecipeControllerTest {
private Recipe recipe1; private Recipe recipe1;
private Recipe recipe2; private Recipe recipe2;
private final Authentication regularUser = new Authentication() {
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(Authority.USER.name()));
}
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getDetails() {
return null;
}
@Override
public Object getPrincipal() {
return null;
}
@Override
public boolean isAuthenticated() {
return true;
}
@Override
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
}
@Override
public String getName() {
return "test";
}
};
private final Authentication adminUser = new Authentication() {
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(Authority.ADMIN.name()));
}
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getDetails() {
return null;
}
@Override
public Object getPrincipal() {
return null;
}
@Override
public boolean isAuthenticated() {
return true;
}
@Override
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
}
@Override
public String getName() {
return "test";
}
};
@BeforeEach @BeforeEach
void setUp() { void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(recipeController).build(); mockMvc = MockMvcBuilders.standaloneSetup(recipeController).build();
...@@ -88,4 +174,26 @@ public class RecipeControllerTest { ...@@ -88,4 +174,26 @@ public class RecipeControllerTest {
mockMvc.perform(get("/api/recipe/name/{name}", "Nonexistent")) mockMvc.perform(get("/api/recipe/name/{name}", "Nonexistent"))
.andExpect(status().isNotFound()); .andExpect(status().isNotFound());
} }
@Test
void addRecipeToFavorites_Success() throws Exception {
Long recipeId = 1L;
when(recipeService.addRecipeToFavorites(recipeId, regularUser.getName())).thenReturn(ResponseEntity.ok().build());
ResponseEntity<?> response = recipeController.addRecipeToFavorites(recipeId, regularUser);
assertEquals(HttpStatus.OK, response.getStatusCode());
}
@Test
void addRecipeToFavorites_AdminUser() throws Exception {
Long recipeId = 1L;
when(recipeService.addRecipeToFavorites(recipeId, adminUser.getName())).thenReturn(ResponseEntity.ok().build());
ResponseEntity<?> response = recipeController.addRecipeToFavorites(recipeId, adminUser);
assertEquals(HttpStatus.OK, response.getStatusCode());
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment