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