@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()); }
@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 testReportUri() throws ParseException, TokeniserException { failsToParse("report-uri "); failsToParse("report-uri #"); failsToParse("report-uri a"); Policy p, q; p = parse("report-uri http://a"); q = parse("report-uri http://b"); ReportUriDirective d1 = p.getDirectiveByType(ReportUriDirective.class); assertFalse("report-uri inequality", d1.equals(q.getDirectiveByType(ReportUriDirective.class))); d1.union(q.getDirectiveByType(ReportUriDirective.class)); assertEquals("report-uri union", "report-uri http://a http://b", d1.show()); assertNotEquals("report-uri hashcode shouldn't match", p.hashCode(), q.hashCode()); p = parse("report-uri https://a"); q = parse("report-uri https://a; "); assertEquals("report-uri hashcode match", p.hashCode(), q.hashCode()); assertTrue("report-uri equals", p.equals(q)); q = parse("report-uri http://a; sandbox 4"); d1 = q.getDirectiveByType(ReportUriDirective.class); SandboxDirective d2 = q.getDirectiveByType(SandboxDirective.class); assertEquals("report-uri http://a", d1.show()); assertEquals("sandbox 4", d2.show()); }