@Test public void testWarnings() throws ParseException, TokeniserException { ArrayList<Warning> warnings = new ArrayList<>(); Policy p1 = Parser.parse("frame-src aaa", "https://origin", warnings); assertEquals("frame-src aaa", p1.show()); assertEquals(1, warnings.size()); assertEquals( "The frame-src directive is deprecated as of CSP version 1.1. Authors who wish to govern nested browsing contexts SHOULD use the child-src directive instead.", warnings.iterator().next().message); }
@Test public void testPolicy() throws ParseException, TokeniserException { Policy a = parse(""); assertEquals("policy show", "", a.show()); Policy b = parse("style-src *"); assertEquals("policy show", "", b.show()); assertTrue("policy equality", a.equals(b)); Policy c = parse("script-src *"); b.union(c); assertEquals("policy union", "", b.show()); Policy d = parse("script-src abc"); b.union(d); assertEquals("policy union", "", b.show()); a.setOrigin(URI.parse("http://qwe.zz:80")); assertEquals("policy origin", "http://qwe.zz", a.getOrigin().show()); }
@Test public void testAncestorSource() throws ParseException, TokeniserException { assertEquals( "directive-name, no directive-value", "frame-ancestors", parse("frame-ancestors").getDirectiveByType(FrameAncestorsDirective.class).show()); assertEquals( "directive-name, directive-value", "frame-ancestors 'none'", parse("frame-ancestors 'none'").getDirectiveByType(FrameAncestorsDirective.class).show()); Policy p; p = parse("frame-ancestors 'self' https://example.com"); Policy q; q = parse("script-src abc; frame-ancestors http://example.com"); FrameAncestorsDirective d1 = p.getDirectiveByType(FrameAncestorsDirective.class); FrameAncestorsDirective d2 = q.getDirectiveByType(FrameAncestorsDirective.class); d1.union(d2); assertEquals( "ancestor-source union", "frame-ancestors 'self' https://example.com http://example.com", d1.show()); assertFalse("ancestor-source inequality", d1.equals(d2)); p = parse("frame-ancestors http://example.com"); q = parse("frame-ancestors http://example.com"); d1 = p.getDirectiveByType(FrameAncestorsDirective.class); d2 = q.getDirectiveByType(FrameAncestorsDirective.class); assertTrue("ancestor-source equality", d1.equals(d2)); assertEquals("ancestor-source hashcode equality", d1.hashCode(), d2.hashCode()); p = parse("frame-ancestors http:"); q = parse("frame-ancestors http:"); assertTrue("ancestor-source scheme-source equality", p.equals(q)); assertEquals("ancestor-source scheme-source equality", p.hashCode(), q.hashCode()); failsToParse("frame-ancestors scheme::"); failsToParse("frame-ancestors 'none' 'self'"); p = parse("frame-ancestors *"); q = parse("frame-ancestors http://example.com"); p.union(q); assertEquals("frame-ancestors *", p.show()); }