From 3cd709f6b395394924a70322298cfd66962453db Mon Sep 17 00:00:00 2001
From: Guillaume Weghsteen
Date: Thu, 19 Dec 2024 01:04:09 -0800
Subject: [PATCH] No public description
PiperOrigin-RevId: 707820349
---
.../html_sanitizer/html_sanitizer_test.ts | 49 +-
test/testing/testvectors/html_test_vectors.ts | 24485 ----------------
2 files changed, 39 insertions(+), 24495 deletions(-)
delete mode 100644 test/testing/testvectors/html_test_vectors.ts
diff --git a/test/builders/html_sanitizer/html_sanitizer_test.ts b/test/builders/html_sanitizer/html_sanitizer_test.ts
index b6ca4254..4fd66597 100644
--- a/test/builders/html_sanitizer/html_sanitizer_test.ts
+++ b/test/builders/html_sanitizer/html_sanitizer_test.ts
@@ -5,7 +5,6 @@
*/
import {secretToken} from '../../../src/internals/secrets';
-import {HTML_TEST_VECTORS} from '../../testing/testvectors/html_test_vectors';
import {
CssSanitizationFn,
@@ -51,16 +50,46 @@ function sanitizeAssertUnchanged(table: SanitizerTable, html: string): string {
.toString();
}
-describe('HtmlSanitizer', () => {
- describe('using test vectors', () => {
- for (const v of HTML_TEST_VECTORS) {
- it(`passes testVector[${v.name}]`, () => {
- const sanitized = sanitizeHtml(v.input).toString();
- expect(v.acceptable).toContain(sanitized);
- });
- }
- });
+describe('sanitizeHtml', () => {
+ interface TestCase {
+ html: string;
+ expected: string;
+ }
+ const testCases: TestCase[] = [
+ {
+ html: '',
+ expected: '',
+ },
+ {
+ html: 'abcd',
+ expected: 'abcd',
+ },
+ {
+ html: 'abcd',
+ expected: 'abcd',
+ },
+ {
+ html: '',
+ expected: '',
+ },
+ {
+ html: '
',
+ expected: '
',
+ },
+ {
+ html: '',
+ expected: '',
+ },
+ ];
+ for (const testCase of testCases) {
+ it(`sanitizes ${JSON.stringify(testCase.html)} correctly`, () => {
+ const sanitized = sanitizeHtml(testCase.html).toString();
+ expect(sanitized).toEqual(testCase.expected);
+ });
+ }
+});
+describe('HtmlSanitizer', () => {
it('drops unknown elements', () => {
const emptyTable = new SanitizerTable(
new Set(),
diff --git a/test/testing/testvectors/html_test_vectors.ts b/test/testing/testvectors/html_test_vectors.ts
deleted file mode 100644
index 76c6e633..00000000
--- a/test/testing/testvectors/html_test_vectors.ts
+++ /dev/null
@@ -1,24485 +0,0 @@
-/**
- * @license
- * Copyright Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-
-interface TestVector {
- readonly input: string;
- readonly acceptable: string[];
- readonly name: string;
-}
-
-/**
- * AUTOGENERATED. DO NOT EDIT.
- * Test vectors for HTML sanitizer.
- */
-export const HTML_TEST_VECTORS: TestVector[] = [
- {
- input: 'foo',
- acceptable: [
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- ],
- name: 'a',
- },
- {
- input: 'foo',
- acceptable: [
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- ],
- name: 'a_quot',
- },
- {
- input: 'foo',
- acceptable: [
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- 'foo',
- ],
- name: 'a_tab',
- },
- {input: "", acceptable: [''], name: 'body_onload'},
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'clobbering_children',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'clobbering_firstchild',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'clobbering_proto',
- },
- {
- input: '',
- acceptable: ['', ''],
- name: 'clobbering_tagname',
- },
- {
- input: '',
- acceptable: [
- '',
- ' ',
- ' ',
- ' ',
- ' ',
- ' ',
- ],
- name: 'details',
- },
- {
- input: '',
- '',
- '',
- ' ',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- acceptable: ['', '', ''],
- name: 'contract_body_plain',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_body_scriptinside',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_html_defer',
- },
- {
- input: '
',
- acceptable: ['', '', ''],
- name: 'contract_head_plain',
- },
- {
- input: '
',
- acceptable: ['', '', ''],
- name: 'contract_head_scriptinside',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_srcdoc',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_action',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_method',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_formaction',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_formmethod',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_pattern',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_readonly',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_accept',
- },
- {
- input: '
',
- acceptable: [
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '
',
- '',
- '',
- '',
- ],
- name: 'contract_head_defer',
- },
- {
- input: '
',
- acceptable: ['', '', ''],
- name: 'contract_title_plain',
- },
- {
- input: '
',
- acceptable: ['', '', ''],
- name: 'contract_title_scriptinside',
- },
- {
- input: '
',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_title_defer',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_base_plain',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_base_scriptinside',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_base_defer',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_meta_plain',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_meta_scriptinside',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_meta_defer',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_style_plain',
- },
- {
- input: '',
- acceptable: ['', '', ''],
- name: 'contract_style_scriptinside',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_srcdoc',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_action',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_method',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_formaction',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_formmethod',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_pattern',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_readonly',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_accept',
- },
- {
- input: '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_style_defer',
- },
- {
- input: '',
- '
',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '
',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_body_defer',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_plain',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_scriptinside',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_article_defer',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_plain',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_scriptinside',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_srcdoc',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_action',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_method',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_formaction',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_formmethod',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_pattern',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_readonly',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_accept',
- },
- {
- input: '',
- acceptable: [
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- ],
- name: 'contract_section_defer',
- },
- {
- input: '',
- acceptable: [
- '