// Path: pie-core/src/main/java/com/coverity/security/pie/core/PolicyConfig.java
// public class PolicyConfig {
//     private final String name;
//     private final PieConfig pieConfig;
//     
//     public PolicyConfig(String name, PieConfig pieConfig) {
//         this.name = name;
//         this.pieConfig = pieConfig;
//     }
//     
//     public boolean isEnabled() {
//         return getBoolean("isEnabled", true);
//     }
//     
//     public boolean isReportOnlyMode() {
//         return getBoolean("isReportOnlyMode", true);
//     }
// 
//     public boolean isCollapseEnabled() {
//         return getBoolean("isCollapseEnabled", true);
//     }
//     
//     public URL getPolicyFile() {
//         String policyFile = getProperty("policyFile");
//         if (policyFile != null) {
//             try {
//                 return new URL(policyFile);
//             } catch (MalformedURLException e) {
//                 throw new IllegalStateException("Invalid policy URL: " + policyFile);
//             }
//         }
//         URL resource = this.getClass().getClassLoader().getResource(name + ".policy");
//         if (resource != null) {
//             return resource;
//         }
//         String catalinaHome = System.getProperty("catalina.home");
//         if (catalinaHome != null) {
//             try {
//                 return new File(catalinaHome + File.separatorChar + "conf" + File.separatorChar + name + ".policy").toURI().toURL();
//             } catch (MalformedURLException e) {
//                 throw new IllegalStateException("Could not build default policy file path.");
//             }
//         }
//         
//         // Default to file in the CWD
//         try {
//             return new File(name + ".policy").toURI().toURL();
//         } catch (MalformedURLException e) {
//             throw new RuntimeException(e);
//         }
//     }
//     
//     public boolean getBoolean(String prop, boolean defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Boolean.parseBoolean(v);
//     }
//     public int getInteger(String prop, int defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Integer.parseInt(v);
//     }
//     
//     
//     public String getProperty(String name) {
//         return pieConfig.getProperties().getProperty(this.name + "." + name);
//     }
// }


import com.coverity.security.pie.core.PolicyConfig;
import org.testng.annotations.Test;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import static org.easymock.EasyMock.*;
package com.coverity.security.pie.policy.csp;




public class CspEnforcementFilterTest {
    @Test
    public void testPolicyAppliedToRequests() throws IOException, ServletException {
        CspPolicy policy = createMock(CspPolicy.class);
        expect(policy.getPolicyForUri("/foo/bar")).andReturn("response1").anyTimes();
        expect(policy.getPolicyForUri("/fizz/buzz")).andReturn("response2").anyTimes();
        expect(policy.getPolicyForUri(anyObject(String.class))).andReturn("defaultResponse").anyTimes();

// Path: pie-core/src/main/java/com/coverity/security/pie/core/PolicyConfig.java
// public class PolicyConfig {
//     private final String name;
//     private final PieConfig pieConfig;
//     
//     public PolicyConfig(String name, PieConfig pieConfig) {
//         this.name = name;
//         this.pieConfig = pieConfig;
//     }
//     
//     public boolean isEnabled() {
//         return getBoolean("isEnabled", true);
//     }
//     
//     public boolean isReportOnlyMode() {
//         return getBoolean("isReportOnlyMode", true);
//     }
// 
//     public boolean isCollapseEnabled() {
//         return getBoolean("isCollapseEnabled", true);
//     }
//     
//     public URL getPolicyFile() {
//         String policyFile = getProperty("policyFile");
//         if (policyFile != null) {
//             try {
//                 return new URL(policyFile);
//             } catch (MalformedURLException e) {
//                 throw new IllegalStateException("Invalid policy URL: " + policyFile);
//             }
//         }
//         URL resource = this.getClass().getClassLoader().getResource(name + ".policy");
//         if (resource != null) {
//             return resource;
//         }
//         String catalinaHome = System.getProperty("catalina.home");
//         if (catalinaHome != null) {
//             try {
//                 return new File(catalinaHome + File.separatorChar + "conf" + File.separatorChar + name + ".policy").toURI().toURL();
//             } catch (MalformedURLException e) {
//                 throw new IllegalStateException("Could not build default policy file path.");
//             }
//         }
//         
//         // Default to file in the CWD
//         try {
//             return new File(name + ".policy").toURI().toURL();
//         } catch (MalformedURLException e) {
//             throw new RuntimeException(e);
//         }
//     }
//     
//     public boolean getBoolean(String prop, boolean defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Boolean.parseBoolean(v);
//     }
//     public int getInteger(String prop, int defaultValue) {
//         String v = getProperty(prop);
//         if (v == null) {
//             return defaultValue;
//         }
//         return Integer.parseInt(v);
//     }
//     
//     
//     public String getProperty(String name) {
//         return pieConfig.getProperties().getProperty(this.name + "." + name);
//     }
// }


// Path: pie-csp/src/test/java/com/coverity/security/pie/policy/csp/CspEnforcementFilterTest.java
import com.coverity.security.pie.core.PolicyConfig;
import org.testng.annotations.Test;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import static org.easymock.EasyMock.*;

package com.coverity.security.pie.policy.csp;




public class CspEnforcementFilterTest {
    @Test
    public void testPolicyAppliedToRequests() throws IOException, ServletException {
        CspPolicy policy = createMock(CspPolicy.class);
        expect(policy.getPolicyForUri("/foo/bar")).andReturn("response1").anyTimes();
        expect(policy.getPolicyForUri("/fizz/buzz")).andReturn("response2").anyTimes();
        expect(policy.getPolicyForUri(anyObject(String.class))).andReturn("defaultResponse").anyTimes();

        PolicyConfig policyConfig = createMock(PolicyConfig.class);