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