Added test for LessonMenuService.
This commit is contained in:
@ -55,6 +55,7 @@ import java.util.stream.Collectors;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class LessonMenuService {
|
public class LessonMenuService {
|
||||||
|
|
||||||
|
public static final String URL_LESSONMENU_MVC = "/service/lessonmenu.mvc";
|
||||||
private final Course course;
|
private final Course course;
|
||||||
private UserTracker userTracker;
|
private UserTracker userTracker;
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ public class LessonMenuService {
|
|||||||
*
|
*
|
||||||
* @return a {@link java.util.List} object.
|
* @return a {@link java.util.List} object.
|
||||||
*/
|
*/
|
||||||
@RequestMapping(path = "/service/lessonmenu.mvc", produces = "application/json")
|
@RequestMapping(path = URL_LESSONMENU_MVC, produces = "application/json")
|
||||||
public
|
public
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
List<LessonMenuItem> showLeftNav() {
|
List<LessonMenuItem> showLeftNav() {
|
||||||
|
@ -0,0 +1,80 @@
|
|||||||
|
package org.owasp.webgoat.service;
|
||||||
|
|
||||||
|
import com.beust.jcommander.internal.Lists;
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
|
import org.owasp.webgoat.lessons.Category;
|
||||||
|
import org.owasp.webgoat.lessons.NewLesson;
|
||||||
|
import org.owasp.webgoat.session.Course;
|
||||||
|
import org.owasp.webgoat.session.LessonTracker;
|
||||||
|
import org.owasp.webgoat.session.UserTracker;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.owasp.webgoat.service.LessonMenuService.URL_LESSONMENU_MVC;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author nbaars
|
||||||
|
* @since 4/16/17.
|
||||||
|
*/
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class LessonMenuServiceTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Course course;
|
||||||
|
@Mock
|
||||||
|
private UserTracker userTracker;
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
this.mockMvc = standaloneSetup(new LessonMenuService(course, userTracker)).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void lessonsShouldBeOrdered() throws Exception {
|
||||||
|
NewLesson l1 = Mockito.mock(NewLesson.class);
|
||||||
|
NewLesson l2 = Mockito.mock(NewLesson.class);
|
||||||
|
when(l1.getTitle()).thenReturn("ZA");
|
||||||
|
when(l2.getTitle()).thenReturn("AA");
|
||||||
|
when(l1.getCategory()).thenReturn(Category.ACCESS_CONTROL);
|
||||||
|
when(l2.getCategory()).thenReturn(Category.ACCESS_CONTROL);
|
||||||
|
LessonTracker lessonTracker = Mockito.mock(LessonTracker.class);
|
||||||
|
when(lessonTracker.isLessonSolved()).thenReturn(false);
|
||||||
|
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1, l2));
|
||||||
|
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.ACCESS_CONTROL));
|
||||||
|
when(userTracker.getLessonTracker(any())).thenReturn(lessonTracker);
|
||||||
|
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get(URL_LESSONMENU_MVC))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$[0].children[0].name", CoreMatchers.is("AA")))
|
||||||
|
.andExpect(jsonPath("$[0].children[1].name", CoreMatchers.is("ZA")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void lessonCompleted() throws Exception {
|
||||||
|
NewLesson l1 = Mockito.mock(NewLesson.class);
|
||||||
|
when(l1.getTitle()).thenReturn("ZA");
|
||||||
|
when(l1.getCategory()).thenReturn(Category.ACCESS_CONTROL);
|
||||||
|
LessonTracker lessonTracker = Mockito.mock(LessonTracker.class);
|
||||||
|
when(lessonTracker.isLessonSolved()).thenReturn(true);
|
||||||
|
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1));
|
||||||
|
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.ACCESS_CONTROL));
|
||||||
|
when(userTracker.getLessonTracker(any())).thenReturn(lessonTracker);
|
||||||
|
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.get(URL_LESSONMENU_MVC))
|
||||||
|
.andExpect(status().isOk()).andDo(print())
|
||||||
|
.andExpect(jsonPath("$[0].children[0].complete", CoreMatchers.is(true)));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user