xref: /OpenGrok/plugins/src/test/java/opengrok/auth/plugin/UserPluginTest.java (revision aa6abf429bacc2c0baa482bff3022e77ef23c183)
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 /*
215d9f3aa0SAdam Hornáček  * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
22b28a5538SAdam Hornacek  */
23b28a5538SAdam Hornacek package opengrok.auth.plugin;
24b28a5538SAdam Hornacek 
25*aa6abf42SAdam Hornacek import jakarta.servlet.http.HttpServletRequest;
26b28a5538SAdam Hornacek import opengrok.auth.plugin.decoders.OSSOHeaderDecoder;
27b28a5538SAdam Hornacek import opengrok.auth.plugin.entity.User;
28b28a5538SAdam Hornacek import opengrok.auth.plugin.util.DummyHttpServletRequestUser;
29b28a5538SAdam Hornacek import org.junit.Assert;
30b28a5538SAdam Hornacek import org.junit.Before;
31b28a5538SAdam Hornacek import org.junit.Test;
32b28a5538SAdam Hornacek import org.opengrok.indexer.configuration.Group;
33b28a5538SAdam Hornacek import org.opengrok.indexer.configuration.Project;
34b28a5538SAdam Hornacek 
35b28a5538SAdam Hornacek /**
36b28a5538SAdam Hornacek  *
37b28a5538SAdam Hornacek  * @author Krystof Tulinger
38b28a5538SAdam Hornacek  */
39b28a5538SAdam Hornacek public class UserPluginTest {
40b28a5538SAdam Hornacek 
41b28a5538SAdam Hornacek     private UserPlugin plugin;
42b28a5538SAdam Hornacek 
43b28a5538SAdam Hornacek     @Before
setUp()44b28a5538SAdam Hornacek     public void setUp() {
45b28a5538SAdam Hornacek         plugin = new UserPlugin(new OSSOHeaderDecoder());
46b28a5538SAdam Hornacek     }
47b28a5538SAdam Hornacek 
48b28a5538SAdam Hornacek     @Test
testNoUser()49b28a5538SAdam Hornacek     public void testNoUser() {
50b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), new Group()));
51b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), new Project()));
52b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), createGroup("some group")));
53b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(new DummyHttpServletRequestUser(), createProject("some project")));
54b28a5538SAdam Hornacek     }
55b28a5538SAdam Hornacek 
56b28a5538SAdam Hornacek     @Test
testUser()57b28a5538SAdam Hornacek     public void testUser() {
58b28a5538SAdam Hornacek         HttpServletRequest req;
59b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("007"), new Group()));
60b28a5538SAdam Hornacek         Assert.assertEquals("007", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
61b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("008"), new Project()));
62b28a5538SAdam Hornacek         Assert.assertEquals("008", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
63b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("009"), createGroup("some group")));
64b28a5538SAdam Hornacek         Assert.assertEquals("009", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
65b28a5538SAdam Hornacek         Assert.assertTrue(plugin.isAllowed(req = createRequest("00A"), createProject("some project")));
66b28a5538SAdam Hornacek         Assert.assertEquals("00A", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
67b28a5538SAdam Hornacek     }
68b28a5538SAdam Hornacek 
69b28a5538SAdam Hornacek     @Test
testTimeoutedUser()70b28a5538SAdam Hornacek     public void testTimeoutedUser() {
71b28a5538SAdam Hornacek         HttpServletRequest req;
72b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("007", true), new Group()));
73b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
74b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("008", true), new Project()));
75b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
76b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("009", true), createGroup("some group")));
77b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
78b28a5538SAdam Hornacek         Assert.assertFalse(plugin.isAllowed(req = createRequest("00A", true), createProject("some project")));
79b28a5538SAdam Hornacek         Assert.assertNull(req.getAttribute(UserPlugin.REQUEST_ATTR));
80b28a5538SAdam Hornacek     }
81b28a5538SAdam Hornacek 
createRequest(String email)82b28a5538SAdam Hornacek     protected HttpServletRequest createRequest(String email) {
83b28a5538SAdam Hornacek         return createRequest(email, false);
84b28a5538SAdam Hornacek     }
85b28a5538SAdam Hornacek 
createRequest(String email, Boolean timeout)86b28a5538SAdam Hornacek     protected HttpServletRequest createRequest(String email, Boolean timeout) {
87b28a5538SAdam Hornacek         return new DummyHttpServletRequestUser() {
88b28a5538SAdam Hornacek             {
89b28a5538SAdam Hornacek                 setHeader("osso-user-dn", email);
90b28a5538SAdam Hornacek                 setHeader("osso-user-guid", "100");
91b28a5538SAdam Hornacek                 setHeader("osso-idle-timeout-exceeded", Boolean.toString(timeout));
92b28a5538SAdam Hornacek             }
93b28a5538SAdam Hornacek         };
94b28a5538SAdam Hornacek     }
95b28a5538SAdam Hornacek 
96b28a5538SAdam Hornacek     protected Group createGroup(String name) {
97b28a5538SAdam Hornacek         Group g = new Group();
98b28a5538SAdam Hornacek         g.setName(name);
99b28a5538SAdam Hornacek         return g;
100b28a5538SAdam Hornacek     }
101b28a5538SAdam Hornacek 
102b28a5538SAdam Hornacek     protected Project createProject(String name) {
103b28a5538SAdam Hornacek         Project g = new Project();
104b28a5538SAdam Hornacek         g.setName(name);
105b28a5538SAdam Hornacek         return g;
106b28a5538SAdam Hornacek     }
107b28a5538SAdam Hornacek }
108