1 package org.cateproject.view.view;
2
3
4 import java.util.ArrayList;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import org.cateproject.controller.user.PasswordResetForm;
10 import org.cateproject.controller.user.UserGroupMembership;
11 import org.cateproject.view.CATEViewTest;
12
13 import org.jbpm.api.task.Task;
14 import org.jbpm.pvm.internal.task.TaskImpl;
15 import org.junit.Test;
16
17 import org.springframework.security.authentication.AuthenticationManager;
18 import org.springframework.security.authentication.TestingAuthenticationToken;
19 import org.springframework.security.core.Authentication;
20 import org.springframework.security.core.GrantedAuthority;
21 import org.springframework.security.core.authority.GrantedAuthorityImpl;
22 import org.springframework.security.core.context.SecurityContextHolder;
23 import org.springframework.security.core.context.SecurityContextImpl;
24 import org.springframework.security.web.context.HttpSessionContextIntegrationFilter;
25 import org.springframework.web.servlet.ModelAndView;
26
27 import eu.etaxonomy.cdm.api.service.pager.Pager;
28 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
29 import eu.etaxonomy.cdm.model.common.Annotation;
30 import eu.etaxonomy.cdm.model.common.MarkerType;
31 import eu.etaxonomy.cdm.model.common.User;
32 import eu.etaxonomy.cdm.model.view.AuditEvent;
33 import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;
34
35 public class UserViewsTest extends CATEViewTest {
36
37 @Test
38 public void testIndexPage() throws Exception {
39 ModelAndView modelAndView = new ModelAndView("user/index");
40 User user = dataSet.getUsers().get(0);
41 modelAndView.addObject("object",user);
42 modelAndView.addObject("passwordResetForm",new PasswordResetForm());
43 modelAndView.addObject("numberOfOpenAnnotationTasks",1);
44 modelAndView.addObject("numberOfCompletedAnnotationTasks", 2);
45 modelAndView.addObject("numberOfSubmittedAnnotations", 3);
46 modelAndView.addObject("numberOfAcceptedAnnotations", 4);
47 modelAndView.addObject("numberOfRejectedAnnotations", 5);
48
49 outputMock(modelAndView,"target/generated-sources/mock/user/index.html");
50 }
51
52 @Test
53 public void testProfilePage() throws Exception {
54 ModelAndView modelAndView = new ModelAndView("user/profile");
55 User user = dataSet.getUsers().get(0);
56 modelAndView.addObject("object",user);
57 modelAndView.addObject("passwordResetForm",new PasswordResetForm());
58
59 outputMock(modelAndView,"target/generated-sources/mock/user/profile.html");
60 }
61
62 @Test
63 public void testTasksPage() throws Exception {
64 ModelAndView modelAndView = new ModelAndView("user/tasks");
65 User user = dataSet.getUsers().get(0);
66 List<Task> annotationTasks = new ArrayList<Task>();
67 for(Annotation annotation : dataSet.getTaxonBases().get(0).getAnnotations()) {
68 TaskImpl annotationTask = new TaskImpl();
69 annotationTask.setActivityName("Check Annotation");
70 annotationTask.setAssignee(user.getName());
71 annotationTask.setVariable("annotation", annotation);
72 }
73
74 modelAndView.addObject("object",user);
75 modelAndView.addObject("isOpen", Boolean.TRUE);
76 modelAndView.addObject("pager",annotationTasks);
77
78 outputMock(modelAndView,"target/generated-sources/mock/user/tasks.html");
79 }
80 @Test
81 public void testGroupsPage() throws Exception {
82 ModelAndView modelAndView = new ModelAndView("user/groups");
83 User user = dataSet.getUsers().get(0);
84 modelAndView.addObject("object", user);
85
86 UserGroupMembership userGroupMembership = new UserGroupMembership(user);
87 modelAndView.addObject("groupsForm", userGroupMembership);
88 outputMock(modelAndView,"target/generated-sources/mock/user/groups.html");
89 }
90
91 @Test
92 public void testAnnotationsPage() throws Exception {
93 ModelAndView modelAndView = new ModelAndView("user/annotations");
94 User user = dataSet.getUsers().get(0);
95 List<Annotation> result = new ArrayList<Annotation>();
96 result.addAll(dataSet.getTaxonBases().get(1).getAnnotations());
97 Pager<Annotation> pager = new DefaultPagerImpl<Annotation>(0, 8, 4, result);
98
99 modelAndView.addObject("object",user);
100 modelAndView.addObject("status", MarkerType.COMPLETE());
101 modelAndView.addObject("pager",pager);
102
103 outputMock(modelAndView,"target/generated-sources/mock/user/annotations.html");
104 }
105
106 @Test
107 public void testPublishPage() {
108 User principal = User.NewInstance("ben","test");
109
110 TestingAuthenticationToken token = new TestingAuthenticationToken(
111 principal, "test", new GrantedAuthority[] {
112 new GrantedAuthorityImpl("ROLE_CONTRIBUTOR"),
113 new GrantedAuthorityImpl("ROLE_COPYEDITOR"),
114 new GrantedAuthorityImpl("ROLE_CONSUMER"),
115 new GrantedAuthorityImpl("ROLE_EDITOR")});
116 SecurityContextImpl secureContext = new SecurityContextImpl();
117 AuthenticationManager authenticationManager = (AuthenticationManager)dispatcherServlet.getWebApplicationContext().getBean("authenticationManager", AuthenticationManager.class);
118 Authentication authentication = authenticationManager.authenticate(token);
119 secureContext.setAuthentication(authentication);
120 SecurityContextHolder.setContext(secureContext);
121 request.getSession().setAttribute(HttpSessionContextIntegrationFilter.SPRING_SECURITY_CONTEXT_KEY,secureContext);
122 AuditEvent auditEvent = new AuditEvent();
123 AuditEventContextHolder.getContext().setAuditEvent(auditEvent);
124
125 Map<String,Object> referenceData = new HashMap<String,Object>();
126 outputForm("user/publish",
127 "target/generated-sources/mock/user/publish.html",
128 "revisionForm",
129 null,
130 referenceData,
131 "GET",
132 null,
133 new HashMap<String,String>());
134 }
135 }
136