1   package com.atlassian.seraph.service;
2   
3   import com.mockobjects.servlet.MockHttpServletRequest;
4   
5   import java.util.HashMap;
6   import java.util.Set;
7   
8   import junit.framework.TestCase;
9   
10  public class TestWebworkService extends TestCase
11  {
12      public void testWithUnspecifiedActionsXmlFileParameter()
13      {
14          final WebworkService service = new WebworkService();
15          service.init(new HashMap<String, String>(), null);
16          assertRolesForURI("/AddProject.action", service, "adminUnspecified");
17      }
18  
19      public void testWithSpecifiedActionsXmlFileParameter()
20      {
21          final WebworkService service = new WebworkService();
22          final HashMap<String, String> params = new HashMap<String, String>();
23          params.put("actions.xml.file", "test-actions");
24          service.init(params, null);
25          assertRolesForURI("/AddProject.action", service, "adminSpecified");
26      }
27  
28      public void testWithSpecifiedActionExtensionsParameter()
29      {
30          final WebworkService service = new WebworkService();
31          final HashMap<String, String> params = new HashMap<String, String>();
32          params.put("actions.xml.file", "test-actions");
33          params.put("action.extension", "fooity");
34          service.init(params, null);
35          assertRolesForURI("/AddProject.fooity", service, "adminSpecified");
36      }
37  
38      private void assertRolesForURI(final String requestURI, final WebworkService service, final String role)
39      {
40          final MockHttpServletRequest servletRequest = new MockHttpServletRequest();
41          servletRequest.setupGetRequestURI(requestURI);
42          final Set<String> requiredRoles = service.getRequiredRoles(servletRequest);
43          assertTrue(requiredRoles.contains(role));
44      }
45  }