Package org.beangle.ems.security.restrict

Source Code of org.beangle.ems.security.restrict.ApplyTest

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.ems.security.restrict;

import java.util.Map;

import org.beangle.commons.collection.CollectUtils;
import org.beangle.model.query.Query;
import org.beangle.model.query.builder.OqlBuilder;
import org.beangle.ems.security.User;
import org.beangle.ems.security.model.GroupBean;
import org.beangle.ems.security.restrict.model.RestrictEntityBean;
import org.beangle.ems.security.restrict.model.RestrictFieldBean;
import org.beangle.ems.security.restrict.model.RestrictPatternBean;
import org.beangle.ems.security.restrict.model.UserRestrictionBean;
import org.beangle.ems.security.restrict.service.CsvDataResolver;
import org.beangle.ems.security.restrict.service.RestrictionServiceImpl;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

@Test
public class ApplyTest {

  RestrictionServiceImpl restrictionService = new RestrictionServiceImpl();

  @BeforeClass
  public void setUp() {
    CsvDataResolver resolver = new CsvDataResolver();
    restrictionService.setDataResolver(resolver);
    restrictionService.getProviders().put(resolver.getName(), resolver);
  }

  public void testApply() {
    RestrictField field = new RestrictFieldBean("groups", GroupBean.class.getName(),
        "id;name,1;group1,2;group2");
    field.setKeyName("id");
    field.setPropertyNames("name");
    RestrictEntity entity = new RestrictEntityBean("user", User.class);
    entity.getFields().add(field);
    RestrictPattern pattern = new RestrictPatternBean(entity,
        "exists(from {alias}.groups as g where g.group in(:groups))");
    Restriction restriction = new UserRestrictionBean(null, pattern);
    restriction.setItem(field, "id;name,1;group1");
    OqlBuilder<User> builder = OqlBuilder.from(User.class);
    restrictionService.apply(builder, CollectUtils.newArrayList(restriction));
    Query<User> query = builder.build();
    String statement = query.getStatement();
    Map<?, ?> params = query.getParams();
    Assert.assertEquals(statement, "select user from org.beangle.ems.security.User user "
        + "where ((exists(from user.groups as g where g.group in(:groups0))))");
    Assert.assertNotNull(params);
    Assert.assertEquals(params.size(), 1);
    Assert.assertEquals(params.get("groups0"), CollectUtils.newArrayList(new GroupBean(1L, "group1")));
  }
}
TOP

Related Classes of org.beangle.ems.security.restrict.ApplyTest

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.