#277 Re-institute admin functionality for WebGoat 8
- Report card functionality is back
This commit is contained in:
@ -0,0 +1,59 @@
|
||||
package org.owasp.webgoat.service;
|
||||
|
||||
import com.beust.jcommander.internal.Lists;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.owasp.webgoat.lessons.AbstractLesson;
|
||||
import org.owasp.webgoat.session.Course;
|
||||
import org.owasp.webgoat.session.LessonTracker;
|
||||
import org.owasp.webgoat.session.UserTracker;
|
||||
import org.springframework.security.test.context.support.WithMockUser;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
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;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class ReportCardServiceTest {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
@Mock
|
||||
private Course course;
|
||||
@Mock
|
||||
private UserTracker userTracker;
|
||||
@Mock
|
||||
private AbstractLesson lesson;
|
||||
@Mock
|
||||
private LessonTracker lessonTracker;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.mockMvc = standaloneSetup(new ReportCardService(userTracker, course)).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithMockUser(username = "guest", password = "guest")
|
||||
public void withLessons() throws Exception {
|
||||
when(lesson.getTitle()).thenReturn("Test");
|
||||
when(course.getTotalOfLessons()).thenReturn(1);
|
||||
when(course.getTotalOfAssignments()).thenReturn(10);
|
||||
when(course.getLessons()).thenReturn(Lists.newArrayList(lesson));
|
||||
when(userTracker.getLessonTracker(any())).thenReturn(lessonTracker);
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/service/reportcard.mvc"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.totalNumberOfLessons", is(1)))
|
||||
.andExpect(jsonPath("$.solvedLessons", is(0)))
|
||||
.andExpect(jsonPath("$.numberOfAssignmentsSolved", is(0)))
|
||||
.andExpect(jsonPath("$.totalNumberOfAssignments", is(10)))
|
||||
.andExpect(jsonPath("$.lessonStatistics[0].name", is("Test")))
|
||||
.andExpect(jsonPath("$.numberOfAssignmentsSolved", is(0)));
|
||||
}
|
||||
}
|
@ -10,6 +10,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ -88,4 +89,15 @@ public class UserTrackerTest {
|
||||
userTracker.reset(lesson);
|
||||
assertThat(userTracker.getLessonTracker(lesson).isLessonSolved()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void totalAssignmentsSolved() {
|
||||
UserTracker userTracker = new UserTracker(home.getParent(), "test", false);
|
||||
AbstractLesson lesson = mock(AbstractLesson.class);
|
||||
when(lesson.getAssignments()).thenReturn(Lists.newArrayList(new Assignment("assignment", "assignment")));
|
||||
userTracker.assignmentSolved(lesson, "assignment");
|
||||
|
||||
assertThat(userTracker.numberOfAssignmentsSolved()).isEqualTo(1);
|
||||
assertThat(userTracker.numberOfLessonsSolved()).isEqualTo(1);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user