Package com.opengamma.livedata.entitlement

Source Code of com.opengamma.livedata.entitlement.UserEntitlementCheckerTest

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.livedata.entitlement;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.testng.AssertJUnit;
import org.testng.annotations.Test;

import com.opengamma.id.ExternalId;
import com.opengamma.livedata.LiveDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.livedata.normalization.NormalizationRuleSet;
import com.opengamma.livedata.normalization.StandardRules;
import com.opengamma.livedata.resolver.FixedDistributionSpecificationResolver;
import com.opengamma.livedata.server.DistributionSpecification;
import com.opengamma.security.user.Authority;
import com.opengamma.security.user.User;
import com.opengamma.security.user.UserGroup;
import com.opengamma.security.user.UserManager;
import com.opengamma.util.test.TestGroup;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class UserEntitlementCheckerTest {

  public void basicPermissionCheck() {
    Set<UserGroup> userGroups = new HashSet<UserGroup>();

    UserGroup group1 = new UserGroup(0L, "group1");
    group1.getAuthorities().add(new Authority(0L, "LiveData/Bloomberg/Equity/**")); // ** -> all subpaths OK
    group1.getAuthorities().add(new Authority(1L, "LiveData/Bloomberg/Bond/*")); // * -> only 1 level of subpath OK
    userGroups.add(group1);
   
    UserGroup group2 = new UserGroup(1L, "group2");
    group2.getAuthorities().add(new Authority(2L, "LiveData/Reuters/Equity/**"));
    userGroups.add(group2);
   
    User user = new User(null,
        "john",
        "pw",
        userGroups,
        new Date());
   
    UserManager userManager = mock(UserManager.class);
    when(userManager.getUser("john")).thenReturn(user);
   
    DistributionSpecification aaplOnBloomberg = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "EQ12345"),
        StandardRules.getNoNormalization(),
        "LiveData.Bloomberg.Equity.AAPL");
   
    DistributionSpecification aaplOnBloombergWithNormalization = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "EQ12345"),
        new NormalizationRuleSet("MyWeirdNormalizationRule"),
        "LiveData.Bloomberg.Equity.AAPL.MyWeirdNormalizationRule");
   
    DistributionSpecification bondOnBloomberg = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "BOND12345"),
        StandardRules.getNoNormalization(),
        "LiveData.Bloomberg.Bond.IBMBOND123");
   
    DistributionSpecification bondOnBloombergWithNormalization = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "BOND12345"),
        new NormalizationRuleSet("MyWeirdNormalizationRule"),
        "LiveData.Bloomberg.Bond.IBMBOND123.MyWeirdNormalizationRule");
   
    DistributionSpecification fxOnBloomberg = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "FX12345"),
        StandardRules.getNoNormalization(),
        "LiveData.Bloomberg.FX.EURUSD");
   
    DistributionSpecification fxOnBloombergWithNormalization = new DistributionSpecification(
        ExternalId.of("BLOOMBERG_BUID", "FX12345"),
        new NormalizationRuleSet("MyWeirdNormalizationRule"),
        "LiveData.Bloomberg.FX.EURUSD.MyWeirdNormalizationRule");
   
    Map<LiveDataSpecification, DistributionSpecification> fixes = new HashMap<LiveDataSpecification, DistributionSpecification>();
    fixes.put(aaplOnBloomberg.getFullyQualifiedLiveDataSpecification(), aaplOnBloomberg);
    fixes.put(aaplOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification(), aaplOnBloombergWithNormalization);
    fixes.put(bondOnBloomberg.getFullyQualifiedLiveDataSpecification(), bondOnBloomberg);
    fixes.put(bondOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification(), bondOnBloombergWithNormalization);
    fixes.put(fxOnBloomberg.getFullyQualifiedLiveDataSpecification(), fxOnBloomberg);
    fixes.put(fxOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification(), fxOnBloombergWithNormalization);
   
    FixedDistributionSpecificationResolver resolver = new FixedDistributionSpecificationResolver(fixes);
   
    LiveDataEntitlementChecker userEntitlementChecker = new UserEntitlementChecker(userManager, resolver);
   
    UserPrincipal john = new UserPrincipal("john", "127.0.0.1");
   
    AssertJUnit.assertTrue(userEntitlementChecker.isEntitled(john, aaplOnBloomberg.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertTrue(userEntitlementChecker.isEntitled(john, aaplOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertTrue(userEntitlementChecker.isEntitled(john, bondOnBloomberg.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(john, bondOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(john, fxOnBloomberg.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(john, fxOnBloombergWithNormalization.getFullyQualifiedLiveDataSpecification()));
   
    // non-existent user
    UserPrincipal mike = new UserPrincipal("mike", "127.0.0.1");
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(mike, aaplOnBloomberg.getFullyQualifiedLiveDataSpecification()));
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(mike, fxOnBloomberg.getFullyQualifiedLiveDataSpecification()));
   
    // bogus spec
    AssertJUnit.assertFalse(userEntitlementChecker.isEntitled(john,
        new LiveDataSpecification(
            StandardRules.getOpenGammaRuleSetId(),
            ExternalId.of("RIC", "bar"))));
  }

}
TOP

Related Classes of com.opengamma.livedata.entitlement.UserEntitlementCheckerTest

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.