/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.repository; import junit.framework.TestCase; import org.drools.repository.security.PermissionManager; import java.util.List; import java.util.Map; import java.util.HashMap; import java.util.ArrayList; /** * @author Michael Neale */ public class UserInfoTest extends TestCase { public void testPersistence() throws Exception { RulesRepository repo = RepositorySessionUtil.getRepository(); PermissionManager pm = new PermissionManager(repo); Map<String, List<String>> perms = new HashMap<String, List<String>>() {{ put("package.admin", new ArrayList<String>() {{add("1234567890");}}); put("package.developer", new ArrayList<String>() {{add("1"); add("2");}}); put("analyst", new ArrayList<String>() {{add("HR");}}); put("admin", new ArrayList<String>()); }}; pm.updateUserPermissions("wankle", perms); Map<String, List<String>> perms_ = pm.retrieveUserPermissions("wankle"); UserInfo info = new UserInfo(repo); info.setProperty("inbox", "something", new UserInfo.Val("boo")); info.save(); info.setProperty("inbox", "something", new UserInfo.Val("boo")); info.save(); assertEquals("boo", info.getProperty("inbox", "something").value); info.setProperty("inbox", "something", new UserInfo.Val("boo2")); assertEquals("boo2", info.getProperty("inbox", "something").value); info.setProperty("inbox", "another", new UserInfo.Val("boo")); assertEquals("boo", info.getProperty("inbox", "another").value); info = new UserInfo(repo); info.init(repo, "wankle"); info.setProperty("inbox", "something", new UserInfo.Val("boo")); assertEquals("boo", info.getProperty("inbox", "something").value); info.setProperty("inbox", "something", new UserInfo.Val("boo2")); assertEquals("boo2", info.getProperty("inbox", "something").value); info.setProperty("inbox", "another", new UserInfo.Val("boo")); assertEquals("boo", info.getProperty("inbox", "another").value); assertEquals(perms_.size(), pm.retrieveUserPermissions("wankle").size()); pm.updateUserPermissions("wankle", perms_); info = new UserInfo(repo); assertEquals("boo", info.getProperty("inbox", "another").value); pm.removeUserPermissions("wankle"); info = new UserInfo(repo); assertEquals("boo", info.getProperty("inbox", "another").value); info = new UserInfo(repo); info.init(repo, "meee"); info.setProperty("inbox", "whee", new UserInfo.Val("boo")); assertEquals("boo", info.getProperty("inbox", "whee").value); info = new UserInfo(repo); assertEquals("boo", info.getProperty("inbox", "another").value); info = new UserInfo(); //check we can deal with 2 different users ! (SANITY CHECK !) info.init(repo, "MrX"); info.setProperty("inbox", "hi", new UserInfo.Val("42")); assertEquals("42", info.getProperty("inbox", "hi").value); info.init(repo, "MrsX"); info.setProperty("inbox", "hi", new UserInfo.Val("43")); assertEquals("43", info.getProperty("inbox", "hi").value); info.init(repo, "MrX"); info.setProperty("inbox", "hi", new UserInfo.Val("42")); assertEquals("42", info.getProperty("inbox", "hi").value); assertEquals("", info.getProperty("inbox", "qanno").value); } public void testIterateOverUsers() throws Exception { RulesRepository repo = RepositorySessionUtil.getRepository(); final List<String> names = new ArrayList<String>(); UserInfo uf = new UserInfo(repo); uf.init(repo, "michael"); uf.setProperty("random", "property", new UserInfo.Val("hi")); UserInfo.eachUser(repo, new UserInfo.Command() { public void process(String toUser) { names.add(toUser); } }); assertTrue(names.size() > 0) ; assertTrue(names.contains("michael")); } }