View Javadoc

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