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