xref: /OpenGrok/plugins/src/test/java/opengrok/auth/plugin/UserPluginTest.java (revision b28a55383a9dd002a5369a73f8ba9c943d6dc214)
1*b28a5538SAdam Hornacek /*
2*b28a5538SAdam Hornacek  * CDDL HEADER START
3*b28a5538SAdam Hornacek  *
4*b28a5538SAdam Hornacek  * The contents of this file are subject to the terms of the
5*b28a5538SAdam Hornacek  * Common Development and Distribution License (the "License").
6*b28a5538SAdam Hornacek  * You may not use this file except in compliance with the License.
7*b28a5538SAdam Hornacek  *
8*b28a5538SAdam Hornacek  * See LICENSE.txt included in this distribution for the specific
9*b28a5538SAdam Hornacek  * language governing permissions and limitations under the License.
10*b28a5538SAdam Hornacek  *
11*b28a5538SAdam Hornacek  * When distributing Covered Code, include this CDDL HEADER in each
12*b28a5538SAdam Hornacek  * file and include the License file at LICENSE.txt.
13*b28a5538SAdam Hornacek  * If applicable, add the following below this CDDL HEADER, with the
14*b28a5538SAdam Hornacek  * fields enclosed by brackets "[]" replaced with your own identifying
15*b28a5538SAdam Hornacek  * information: Portions Copyright [yyyy] [name of copyright owner]
16*b28a5538SAdam Hornacek  *
17*b28a5538SAdam Hornacek  * CDDL HEADER END
18*b28a5538SAdam Hornacek  */
19*b28a5538SAdam Hornacek 
20*b28a5538SAdam Hornacek /*
21*b28a5538SAdam Hornacek  * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
22*b28a5538SAdam Hornacek  */
23*b28a5538SAdam Hornacek package opengrok.auth.plugin;
24*b28a5538SAdam Hornacek 
25*b28a5538SAdam Hornacek import javax.servlet.http.HttpServletRequest;
26*b28a5538SAdam Hornacek 
27*b28a5538SAdam Hornacek import opengrok.auth.plugin.decoders.OSSOHeaderDecoder;
28*b28a5538SAdam Hornacek import opengrok.auth.plugin.entity.User;
29*b28a5538SAdam Hornacek import opengrok.auth.plugin.util.DummyHttpServletRequestUser;
30*b28a5538SAdam Hornacek import org.junit.Assert;
31*b28a5538SAdam Hornacek import org.junit.Before;
32*b28a5538SAdam Hornacek import org.junit.Test;
33*b28a5538SAdam Hornacek import org.opengrok.indexer.configuration.Group;
34*b28a5538SAdam Hornacek import org.opengrok.indexer.configuration.Project;
35*b28a5538SAdam Hornacek 
36*b28a5538SAdam Hornacek /**
37*b28a5538SAdam Hornacek  *
38*b28a5538SAdam Hornacek  * @author Krystof Tulinger
39*b28a5538SAdam Hornacek  */
40*b28a5538SAdam Hornacek public class UserPluginTest {
41*b28a5538SAdam Hornacek 
42*b28a5538SAdam Hornacek     private UserPlugin plugin;
43*b28a5538SAdam Hornacek 
44*b28a5538SAdam Hornacek     @Before
setUp()45*b28a5538SAdam Hornacek     public void setUp() {
46*b28a5538SAdam Hornacek         plugin = new UserPlugin(new OSSOHeaderDecoder());
47*b28a5538SAdam Hornacek     }
48*b28a5538SAdam Hornacek 
49*b28a5538SAdam Hornacek     @Test
testNoUser()50*b28a5538SAdam Hornacek     public void testNoUser() {
51*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), new Group()));
52*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), new Project()));
53*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), createGroup("some group")));
54*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), createProject("some project")));
55*b28a5538SAdam Hornacek     }
56*b28a5538SAdam Hornacek 
57*b28a5538SAdam Hornacek     @Test
testUser()58*b28a5538SAdam Hornacek     public void testUser() {
59*b28a5538SAdam Hornacek         HttpServletRequest req;
60*b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("007"), new Group()));
61*b28a5538SAdam Hornacek         Assert.assertEquals("007", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
62*b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("008"), new Project()));
63*b28a5538SAdam Hornacek         Assert.assertEquals("008", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
64*b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("009"), createGroup("some group")));
65*b28a5538SAdam Hornacek         Assert.assertEquals("009", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
66*b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("00A"), createProject("some project")));
67*b28a5538SAdam Hornacek         Assert.assertEquals("00A", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
68*b28a5538SAdam Hornacek     }
69*b28a5538SAdam Hornacek 
70*b28a5538SAdam Hornacek     @Test
testTimeoutedUser()71*b28a5538SAdam Hornacek     public void testTimeoutedUser() {
72*b28a5538SAdam Hornacek         HttpServletRequest req;
73*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("007", true), new Group()));
74*b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
75*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("008", true), new Project()));
76*b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
77*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("009", true), createGroup("some group")));
78*b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
79*b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("00A", true), createProject("some project")));
80*b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
81*b28a5538SAdam Hornacek     }
82*b28a5538SAdam Hornacek 
createRequest(String email)83*b28a5538SAdam Hornacek     protected HttpServletRequest createRequest(String email) {
84*b28a5538SAdam Hornacek         return createRequest(email, false);
85*b28a5538SAdam Hornacek     }
86*b28a5538SAdam Hornacek 
createRequest(String email, Boolean timeout)87*b28a5538SAdam Hornacek     protected HttpServletRequest createRequest(String email, Boolean timeout) {
88*b28a5538SAdam Hornacek         return new DummyHttpServletRequestUser() {
89*b28a5538SAdam Hornacek             {
90*b28a5538SAdam Hornacek                 setHeader("osso-user-dn", email);
91*b28a5538SAdam Hornacek                 setHeader("osso-user-guid", "100");
92*b28a5538SAdam Hornacek                 setHeader("osso-idle-timeout-exceeded", Boolean.toString(timeout));
93*b28a5538SAdam Hornacek             }
94*b28a5538SAdam Hornacek         };
95*b28a5538SAdam Hornacek     }
96*b28a5538SAdam Hornacek 
97*b28a5538SAdam Hornacek     protected Group createGroup(String name) {
98*b28a5538SAdam Hornacek         Group g = new Group();
99*b28a5538SAdam Hornacek         g.setName(name);
100*b28a5538SAdam Hornacek         return g;
101*b28a5538SAdam Hornacek     }
102*b28a5538SAdam Hornacek 
103*b28a5538SAdam Hornacek     protected Project createProject(String name) {
104*b28a5538SAdam Hornacek         Project g = new Project();
105*b28a5538SAdam Hornacek         g.setName(name);
106*b28a5538SAdam Hornacek         return g;
107*b28a5538SAdam Hornacek     }
108*b28a5538SAdam Hornacek }
109