Package org.archive.accesscontrol.model

Source Code of org.archive.accesscontrol.model.RuleSetTest

package org.archive.accesscontrol.model;

import java.util.Date;
import java.util.GregorianCalendar;

import org.archive.accesscontrol.model.Rule;
import org.archive.accesscontrol.model.RuleSet;

import junit.framework.TestCase;

public class RuleSetTest extends TestCase {
    private RuleSet ruleset;
   
    public void testSimple() {
        ruleset = new RuleSet();
        ruleset.add(new Rule("robots", "("));
        ruleset.add(new Rule("allow", "(org,archive,"));
        ruleset.add(new Rule("block", "(org,archive,)/secret/"));
        ruleset.add(new Rule("allow", "(org,archive,)/secret/public/"));
       
        for (Rule rule: ruleset) {
            System.out.println(rule.getSurt());
        }
    
        assertEquals("robots", ruleset.getMatchingRule("(org", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/fishing.html", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/secret/", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/secrets/dingos", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/secret/hamsters.html", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/secret/public/feeding.html", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/secret/publics", new Date(), new Date(), null).getPolicy());
       
    }

    public void testSimplePrecedence() {
        ruleset = new RuleSet();
        ruleset.add(new Rule("robots", "("));
        ruleset.add(new Rule("allow", "("));
        ruleset.add(new Rule("block", "(org,archive,)/secret/"));
        ruleset.add(new Rule("allow", "(org,archive,)/secret/public/"));
        ruleset.add(new Rule("block", "(org,archive,)/secret/public/"));
    
        assertEquals("allow", ruleset.getMatchingRule("(org", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/fishing.html", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/secret/", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/secret/hamsters.html", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/secret/public/feeding.html", new Date(), new Date(), null).getPolicy());
    }

    public void testEmbargo() {
        ruleset = new RuleSet();
        ruleset.add(new Rule("robots", "("));
        ruleset.add(new Rule("allow", "(org,archive,"));
        ruleset.add(new Rule("block", "(org,archive,)/classified/"));
        ruleset.add(new Rule("allow", "(org,archive,)/classified/", 60 * 60 * 24 * 90));
       
        Date captureDate = new GregorianCalendar(2007, 8, 1).getTime();
        Date preReleaseDate = new GregorianCalendar(2007, 8, 15).getTime();
        Date postReleaseDate = new GregorianCalendar(2009, 8, 15).getTime();
       
        assertEquals("robots", ruleset.getMatchingRule("(org", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/fishing.html", new Date(), new Date(), null).getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/classified/", captureDate, preReleaseDate, null).getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/classified/index.html", captureDate, postReleaseDate, null).getPolicy());
    }
   
    public void testGroup() {
        ruleset = new RuleSet();
        ruleset.add(new Rule("robots", "("));
        ruleset.add(new Rule("allow", "(org,archive,", "archivists"));
        ruleset.add(new Rule("block", "(org,archive,)/classified/"));
        ruleset.add(new Rule("allow", "(org,archive,)/classified/", "admins"));
       
        assertEquals("robots", ruleset.getMatchingRule("(org,archive,www,)/index.html", new Date(), new Date(), "dinosaurs").getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,www,)/index.html", new Date(), new Date(), "archivists").getPolicy());
        assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/classified/presto", new Date(), new Date(), "admins").getPolicy());
        assertEquals("block", ruleset.getMatchingRule("(org,archive,)/classified/presto", new Date(), new Date(), "public").getPolicy());
        assertEquals("robots", ruleset.getMatchingRule("(org,archive,)/classified-photons", new Date(), new Date(), "public").getPolicy());              
    }
   
    public void testIterator() {
      ruleset = new RuleSet();
      assertFalse(ruleset.iterator().hasNext());
    }
   
}
TOP

Related Classes of org.archive.accesscontrol.model.RuleSetTest

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.