Package org.voltdb.common

Source Code of org.voltdb.common.TestPermission

/* This file is part of VoltDB.
* Copyright (C) 2008-2014 VoltDB Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/

package org.voltdb.common;

import com.google_voltpatches.common.collect.Lists;
import org.junit.Test;
import org.voltdb.catalog.Group;

import java.util.Arrays;
import java.util.EnumSet;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class TestPermission {
    @Test
    public void testPermissionFromAlias()
    {
        assertEquals(Permission.SQL,           Permission.valueOfFromAlias("SQL"));
        assertEquals(Permission.DEFAULTPROC,     Permission.valueOfFromAlias("DEFAULTPROC"));
        assertEquals(Permission.DEFAULTPROCREAD, Permission.valueOfFromAlias("DEFAULTPROCREAD"));
        assertEquals(Permission.ADMIN,           Permission.valueOfFromAlias("ADMIN"));
        assertEquals(Permission.ADMIN,           Permission.valueOfFromAlias("SYSPROC")); // alias of admin
    }

    @Test
    public void testPermissionsFromAliases()
    {
        verify(Permission.getPermissionsFromAliases(Lists.<String>newArrayList()),
               Permission.getPermissionsFromAliases(Arrays.asList("SQL")),
               Permission.getPermissionsFromAliases(Arrays.asList("SQLREAD")),
               Permission.getPermissionsFromAliases(Arrays.asList("DEFAULTPROC")),
               Permission.getPermissionsFromAliases(Arrays.asList("SYSPROC")),
               Permission.getPermissionsFromAliases(Arrays.asList("ADMIN")),
               Permission.getPermissionsFromAliases(Arrays.asList("SQL", "DEFAULTPROC", "DEFAULTPROCREAD")),
               Permission.getPermissionsFromAliases(Arrays.asList("SQL", "DEFAULTPROC", "ADMIN")));
    }

    @Test
    public void testPermissionsFromGroup()
    {
        Group group = new Group();
        final EnumSet<Permission> none = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setSql(true);
        final EnumSet<Permission> sql = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setSqlread(true);
        final EnumSet<Permission> sqlread = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setDefaultproc(true);
        final EnumSet<Permission> defaultproc = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setAdmin(true);
        final EnumSet<Permission> admin = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setSql(true);
        group.setDefaultprocread(true);
        group.setDefaultproc(true);
        final EnumSet<Permission> allthree = Permission.getPermissionSetForGroup(group);

        group = new Group();
        group.setSql(true);
        group.setDefaultproc(true);
        group.setAdmin(true);
        final EnumSet<Permission> mixed = Permission.getPermissionSetForGroup(group);

        verify(none, sql, sqlread, defaultproc, admin, admin, allthree, mixed);
    }

    private void verify(EnumSet<Permission> none,
                        EnumSet<Permission> sql,
                        EnumSet<Permission> sqlread,
                        EnumSet<Permission> defaultproc,
                        EnumSet<Permission> sysproc,
                        EnumSet<Permission> admin,
                        EnumSet<Permission> allthree,
                        EnumSet<Permission> mixed)
    {
        assertEquals(EnumSet.noneOf(Permission.class), none);
        assertEquals(EnumSet.of(Permission.SQL, Permission.SQLREAD, Permission.DEFAULTPROC, Permission.DEFAULTPROCREAD), sql);
        assertEquals(EnumSet.of(Permission.SQLREAD, Permission.DEFAULTPROCREAD), sqlread);
        assertEquals(EnumSet.of(Permission.DEFAULTPROC, Permission.DEFAULTPROCREAD), defaultproc);
        assertEquals(EnumSet.allOf(Permission.class),  sysproc);
        assertEquals(EnumSet.allOf(Permission.class),  admin);

        assertEquals(EnumSet.of(Permission.SQL, Permission.SQLREAD, Permission.DEFAULTPROC, Permission.DEFAULTPROCREAD), allthree);
        assertEquals(EnumSet.allOf(Permission.class), mixed);
    }

    @Test
    public void testSetGroup()
    {
        Group group = new Group();
        Permission.setPermissionsInGroup(group, EnumSet.noneOf(Permission.class));
        assertFalse(group.getSql());
        assertFalse(group.getAdmin());
        assertFalse(group.getDefaultproc());
        assertFalse(group.getDefaultprocread());

        group = new Group();
        Permission.setPermissionsInGroup(group, EnumSet.of(Permission.SQL));
        assertTrue(group.getSql());
        assertFalse(group.getAdmin());
        assertFalse(group.getDefaultproc());
        assertFalse(group.getDefaultprocread());

        group = new Group();
        Permission.setPermissionsInGroup(group, EnumSet.of(Permission.ADMIN));
        assertFalse(group.getSql());
        assertTrue(group.getAdmin());
        assertFalse(group.getDefaultproc());
        assertFalse(group.getDefaultprocread());

        group = new Group();
        Permission.setPermissionsInGroup(group, EnumSet.of(Permission.SQL, Permission.DEFAULTPROC, Permission.DEFAULTPROCREAD));
        assertTrue(group.getSql());
        assertFalse(group.getAdmin());
        assertTrue(group.getDefaultproc());
        assertTrue(group.getDefaultprocread());

        group = new Group();
        Permission.setPermissionsInGroup(group, EnumSet.of(Permission.SQL, Permission.ADMIN));
        assertTrue(group.getSql());
        assertTrue(group.getAdmin());
        assertFalse(group.getDefaultproc());
        assertFalse(group.getDefaultprocread());
    }
}
TOP

Related Classes of org.voltdb.common.TestPermission

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.