// Path: pie-core/src/main/java/com/coverity/security/pie/core/PieConfig.java
// public class PieConfig {
// 
//     private final Properties properties = new Properties();
// 
//     public PieConfig() {
//         loadProps(this.getClass().getClassLoader().getResource("pieConfig.default.properties"));
//         File propFile = new File("pieConfig.properties");
//         if (propFile.exists()) {
//             try {
//                 loadProps(propFile.toURI().toURL());
//             } catch (MalformedURLException e) {
//                 throw new RuntimeException(e);
//             }
//         } else {
//             loadProps(this.getClass().getClassLoader().getResource("pieConfig.properties"));
//         }
//     }
//     public PieConfig(URL propertiesUrl) {
//         loadProps(this.getClass().getClassLoader().getResource("pieConfig.default.properties"));
//         loadProps(propertiesUrl);
//     }
//     private void loadProps(URL propertiesUrl) {
//         if (propertiesUrl != null) {
//             InputStream is = null;
//             try {
//                 is = propertiesUrl.openStream();
//                 if (is != null) {
//                     properties.load(is);
//                     is.close();
//                 }
//             } catch (IOException e) {
//                 IOUtil.closeSilently(is);
//                 throw new RuntimeException(e);
//             }
//         }
// 
//     }
// 
//     public Properties getProperties() {
//         return properties;
//     }
// 
//     private boolean getBoolean(String prop, boolean defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Boolean.parseBoolean(v);
//     }
// 
//     private String getProperty(String name) {
//         return properties.getProperty("pie." + name);
//     }
// 
//     public boolean isEnabled() {
//         return getBoolean("enabled", true);
//     }
// 
//     public boolean isRegenerateOnShutdown() {
//         return getBoolean("regenerateOnShutdown", true);
//     }
// 
//     public boolean isAdminInterfaceEnabled() {
//         return getBoolean("admininterface.enabled", false);
//     }
// 
//     public boolean isLoggingEnabled() { return getBoolean("loggingEnabled", false); }
// 
//     public String getLogPath() { return getProperty("logPath"); }
// }
// 
// Path: pie-core/src/test/java/com/coverity/security/pie/core/test/TestPolicyEnforcer.java
// public class TestPolicyEnforcer implements PolicyEnforcer {
// 
//     private static TestPolicyEnforcer instance = null;
// 
//     public static TestPolicyEnforcer getInstance() {
//         return instance;
//     }
// 
//     private SimplePolicy policy;
//     private PolicyConfig policyConfig;
//     private boolean isApplied = false;
// 
//     public TestPolicyEnforcer() {
//         if (instance != null) {
//             throw new IllegalStateException("Cannot instantiate more than one TestPolicyEnforcer at a time.");
//         }
//         instance = this;
//     }
// 
//     @Override
//     public void init(PieConfig pieConfig) {
//         this.policy = new SimplePolicy();
//         this.policyConfig = new PolicyConfig(policy.getName(), pieConfig);
//     }
// 
//     @Override
//     public SimplePolicy getPolicy() {
//         return policy;
//     }
// 
//     @Override
//     public PolicyConfig getPolicyConfig() {
//         return policyConfig;
//     }
// 
//     @Override
//     public void applyPolicy(ServletContext cx) {
//         isApplied = true;
//     }
// 
//     @Override
//     public void shutdown() {
//         instance = null;
//     }
// 
//     public boolean isApplied() {
//         return isApplied;
//     }
// }


import com.coverity.security.pie.core.PieConfig;
import com.coverity.security.pie.core.test.TestPolicyEnforcer;
import org.testng.annotations.Test;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import static org.easymock.EasyMock.*;
import static org.testng.Assert.assertEquals;
package com.coverity.security.pie.web;




public class PieAdminFilterTest {
    @Test
    public void testPieAdminFilter() throws IOException, ServletException, InterruptedException {

// Path: pie-core/src/main/java/com/coverity/security/pie/core/PieConfig.java
// public class PieConfig {
// 
//     private final Properties properties = new Properties();
// 
//     public PieConfig() {
//         loadProps(this.getClass().getClassLoader().getResource("pieConfig.default.properties"));
//         File propFile = new File("pieConfig.properties");
//         if (propFile.exists()) {
//             try {
//                 loadProps(propFile.toURI().toURL());
//             } catch (MalformedURLException e) {
//                 throw new RuntimeException(e);
//             }
//         } else {
//             loadProps(this.getClass().getClassLoader().getResource("pieConfig.properties"));
//         }
//     }
//     public PieConfig(URL propertiesUrl) {
//         loadProps(this.getClass().getClassLoader().getResource("pieConfig.default.properties"));
//         loadProps(propertiesUrl);
//     }
//     private void loadProps(URL propertiesUrl) {
//         if (propertiesUrl != null) {
//             InputStream is = null;
//             try {
//                 is = propertiesUrl.openStream();
//                 if (is != null) {
//                     properties.load(is);
//                     is.close();
//                 }
//             } catch (IOException e) {
//                 IOUtil.closeSilently(is);
//                 throw new RuntimeException(e);
//             }
//         }
// 
//     }
// 
//     public Properties getProperties() {
//         return properties;
//     }
// 
//     private boolean getBoolean(String prop, boolean defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Boolean.parseBoolean(v);
//     }
// 
//     private String getProperty(String name) {
//         return properties.getProperty("pie." + name);
//     }
// 
//     public boolean isEnabled() {
//         return getBoolean("enabled", true);
//     }
// 
//     public boolean isRegenerateOnShutdown() {
//         return getBoolean("regenerateOnShutdown", true);
//     }
// 
//     public boolean isAdminInterfaceEnabled() {
//         return getBoolean("admininterface.enabled", false);
//     }
// 
//     public boolean isLoggingEnabled() { return getBoolean("loggingEnabled", false); }
// 
//     public String getLogPath() { return getProperty("logPath"); }
// }
// 
// Path: pie-core/src/test/java/com/coverity/security/pie/core/test/TestPolicyEnforcer.java
// public class TestPolicyEnforcer implements PolicyEnforcer {
// 
//     private static TestPolicyEnforcer instance = null;
// 
//     public static TestPolicyEnforcer getInstance() {
//         return instance;
//     }
// 
//     private SimplePolicy policy;
//     private PolicyConfig policyConfig;
//     private boolean isApplied = false;
// 
//     public TestPolicyEnforcer() {
//         if (instance != null) {
//             throw new IllegalStateException("Cannot instantiate more than one TestPolicyEnforcer at a time.");
//         }
//         instance = this;
//     }
// 
//     @Override
//     public void init(PieConfig pieConfig) {
//         this.policy = new SimplePolicy();
//         this.policyConfig = new PolicyConfig(policy.getName(), pieConfig);
//     }
// 
//     @Override
//     public SimplePolicy getPolicy() {
//         return policy;
//     }
// 
//     @Override
//     public PolicyConfig getPolicyConfig() {
//         return policyConfig;
//     }
// 
//     @Override
//     public void applyPolicy(ServletContext cx) {
//         isApplied = true;
//     }
// 
//     @Override
//     public void shutdown() {
//         instance = null;
//     }
// 
//     public boolean isApplied() {
//         return isApplied;
//     }
// }


// Path: pie-core/src/test/java/com/coverity/security/pie/web/PieAdminFilterTest.java
import com.coverity.security.pie.core.PieConfig;
import com.coverity.security.pie.core.test.TestPolicyEnforcer;
import org.testng.annotations.Test;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import static org.easymock.EasyMock.*;
import static org.testng.Assert.assertEquals;

package com.coverity.security.pie.web;




public class PieAdminFilterTest {
    @Test
    public void testPieAdminFilter() throws IOException, ServletException, InterruptedException {

        TestPolicyEnforcer testPolicyEnforcer = new TestPolicyEnforcer();