You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2003/06/25 16:54:25 UTC
cvs commit: cocoon-lenya/src/test/org/apache/lenya/cms/ac2 PolicyTest.java
andreas 2003/06/25 07:54:25
Added: src/test/org/apache/lenya/cms/ac2 PolicyTest.java
Log:
initial checkin of new access control implementation
Revision Changes Path
1.1 cocoon-lenya/src/test/org/apache/lenya/cms/ac2/PolicyTest.java
Index: PolicyTest.java
===================================================================
/*
* $Id
* <License>
* The Apache Software License
*
* Copyright (c) 2002 lenya. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. All advertising materials mentioning features or use of this software must
* display the following acknowledgment: "This product includes software developed
* by lenya (http://www.lenya.org)"
*
* 4. The name "lenya" must not be used to endorse or promote products derived from
* this software without prior written permission. For written permission, please
* contact contact@lenya.org
*
* 5. Products derived from this software may not be called "lenya" nor may "lenya"
* appear in their names without prior written permission of lenya.
*
* 6. Redistributions of any form whatsoever must retain the following acknowledgment:
* "This product includes software developed by lenya (http://www.lenya.org)"
*
* THIS SOFTWARE IS PROVIDED BY lenya "AS IS" WITHOUT ANY WARRANTY EXPRESS OR IMPLIED,
* INCLUDING THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTI-
* BILITY AND FITNESS FOR A PARTICULAR PURPOSE. lenya WILL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY YOU AS A RESULT OF USING THIS SOFTWARE. IN NO EVENT WILL lenya BE LIABLE
* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST PROFITS EVEN IF lenya HAS
* BEEN ADVISED OF THE POSSIBILITY OF THEIR OCCURRENCE. lenya WILL NOT BE LIABLE FOR ANY
* THIRD PARTY CLAIMS AGAINST YOU.
*
* Lenya includes software developed by the Apache Software Foundation, W3C,
* DOM4J Project, BitfluxEditor and Xopus.
* </License>
*/
package org.apache.lenya.cms.ac2;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import junit.textui.TestRunner;
import org.apache.lenya.cms.PublicationHelper;
import org.apache.lenya.cms.ac.AccessControlException;
import org.apache.lenya.cms.ac.AccessControlTest;
import org.apache.lenya.cms.ac.Role;
import org.apache.lenya.cms.ac.User;
import org.apache.lenya.cms.ac2.file.FileAccessController;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.TestPageEnvelope;
/**
* @author andreas
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class PolicyTest extends AccessControlTest {
/**
* Executes this test.
* @param test The test.
*/
public PolicyTest(String test) {
super(test);
}
/**
* The main method.
* @param args The command-line arguments.
*/
public static void main(String[] args) {
PublicationHelper.extractPublicationArguments(args);
TestRunner.run(PolicyTest.class);
}
protected static final String URL = "index.html";
protected static final String SAVE_URL = "tutorial.html";
protected static final String USERNAME = "lenya";
/**
* A test.
* @throws AccessControlException when something went wrong.
*/
public void testLoadPolicy() throws AccessControlException {
Policy policy = getPolicy(URL);
Role roles[] = policy.getRoles(getIdentity());
System.out.print("Roles: ");
for (int i = 0; i < roles.length; i++) {
System.out.print(roles[i]);
}
System.out.println();
}
/**
* Returns the identity.
* @return The identity.
* @throws AccessControlException when something went wrong.
*/
protected Identity getIdentity() throws AccessControlException {
User user = getAccessController().getUserManager().getUser(USERNAME);
assertNotNull(user);
Identity identity = new Identity();
identity.addIdentifiable(user);
return identity;
}
/**
* Returns the policy for a URL.
* @param url The URL.
* @return The policy.
* @throws AccessControlException when something went wrong.
*/
protected Policy getPolicy(String url) throws AccessControlException {
PageEnvelope envelope;
try {
envelope = new TestPageEnvelope(PublicationHelper.getPublication(), url);
} catch (PageEnvelopeException e) {
throw new AccessControlException(e);
}
Policy policy = ((FileAccessController) getAccessController()).getPolicy(envelope);
return policy;
}
/**
* A test.
* @throws AccessControlException when something went wrong.
*/
public void testSavePolicy() throws AccessControlException {
PolicyManager manager = getAccessController().getPolicyManager();
DefaultPolicy urlPolicy = manager.buildURLPolicy(URL);
DefaultPolicy newPolicy = new DefaultPolicy();
Credential credentials[] = urlPolicy.getCredentials();
for (int i = 0; i < credentials.length; i++) {
Credential credential = new Credential(credentials[i].getAccreditable());
Role roles[] = credentials[i].getRoles();
for (int j = 0; j < roles.length; j++) {
credential.addRole(roles[j]);
}
newPolicy.addCredential(credential);
}
assertEquals(urlPolicy.getCredentials().length, newPolicy.getCredentials().length);
getAccessController().getPolicyManager().saveURLPolicy(SAVE_URL, newPolicy);
newPolicy = manager.buildURLPolicy(SAVE_URL);
assertEquals(urlPolicy.getCredentials().length, newPolicy.getCredentials().length);
Credential newCredentials[] = newPolicy.getCredentials();
for (int i = 0; i < credentials.length; i++) {
Credential credential = new Credential(credentials[i].getAccreditable());
Credential newCredential = null;
for (int k = 0; k < newCredentials.length; k++) {
if (newCredentials[k].getAccreditable().equals(credential.getAccreditable())) {
newCredential = newCredentials[k];
}
}
System.out.println("Accreditable: [" + credential.getAccreditable() + "]");
assertNotNull(newCredential);
Set oldRoles = new HashSet(Arrays.asList(credential.getRoles()));
Set newRoles = new HashSet(Arrays.asList(newCredential.getRoles()));
assertEquals(oldRoles, newRoles);
/*
for (int j = 0; j < roles.length; j++) {
assertEquals(roles[j], newRoles[j]);
System.out.println(" Role: [" + roles[j] + "]");
}
*/
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: lenya-cvs-unsubscribe@cocoon.apache.org
For additional commands, e-mail: lenya-cvs-help@cocoon.apache.org