1   package com.atlassian.sal.core.xsrf;
2   
3   import com.atlassian.sal.api.xsrf.XsrfTokenAccessor;
4   import junit.framework.TestCase;
5   import org.junit.After;
6   import org.junit.Before;
7   import org.junit.Test;
8   import org.mockito.Mock;
9   
10  import javax.servlet.http.HttpServletRequest;
11  
12  import static org.mockito.Mockito.mock;
13  import static org.mockito.Mockito.when;
14  
15  public class TestIndependentXsrfTokenValidator extends TestCase
16  {
17      private IndependentXsrfTokenValidator validator;
18  
19      @Mock
20      private HttpServletRequest mockRequest;
21      @Mock
22      private XsrfTokenAccessor mockAccessor;
23  
24      @Before
25      public void setUp()
26      {
27          mockAccessor = mock(XsrfTokenAccessor.class);
28          mockRequest = mock(HttpServletRequest.class);
29          validator = new IndependentXsrfTokenValidator(mockAccessor);
30      }
31  
32      @After
33      public void tearDown()
34      {
35          validator = null;
36          mockRequest = null;
37          mockAccessor = null;
38      }
39  
40      @Test
41      public void testValidToken()
42      {
43          when(mockAccessor.getXsrfToken(mockRequest, null, false)).thenReturn("cookievalue");
44          when(mockRequest.getParameter(validator.getXsrfParameterName())).thenReturn("cookievalue");
45  
46          assertTrue(validator.validateFormEncodedToken(mockRequest));
47      }
48  
49      @Test
50      public void testInvalidToken()
51      {
52          when(mockAccessor.getXsrfToken(mockRequest, null, false)).thenReturn("cookievalue");
53          when(mockRequest.getParameter(validator.getXsrfParameterName())).thenReturn("somethingelse");
54  
55          assertFalse(validator.validateFormEncodedToken(mockRequest));
56      }
57  
58      @Test
59      public void testNoXsrfParameter()
60      {
61          when(mockAccessor.getXsrfToken(mockRequest, null, false)).thenReturn("cookievalue");
62  
63          assertFalse(validator.validateFormEncodedToken(mockRequest));
64      }
65  
66      @Test
67      public void testNoXsrfCookie()
68      {
69          when(mockRequest.getParameter(validator.getXsrfParameterName())).thenReturn("cookievalue");
70  
71          assertFalse(validator.validateFormEncodedToken(mockRequest));
72      }
73  
74      @Test
75      public void testNoXsrfAtAll()
76      {
77          assertFalse(validator.validateFormEncodedToken(mockRequest));
78      }
79  }