Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add infrastructure for testing origin policy #21705

Merged
merged 6 commits into from Feb 19, 2020
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
60 changes: 30 additions & 30 deletions tools/certs/cacert.key
@@ -1,30 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIminHTzkXhrsCAggA
MB0GCWCGSAFlAwQBKgQQXVwJcqWze6A3VYuAS0BPgwSCBNCRtvroB6qroQlF58HE
5SJHF/jQRJRxf051lrq+jfUxM7kZucNN+myV2ziLoga6OQM579D8vy8tqkrLpnsT
cXkgHuwtBJF47w1YAPGGARe3Ksv/2C9sUVcPvmnVrzSMX86EserffqM3zfwZ2H3S
jxTDSyIvJUU+4XfxrWegTiQQPNqDyLfO5dBfatT2ztXCmu3BFipuhGFpwwCJirKr
1xb6XPEuT0PCzTNpeSURpXFKHMDMkcjOkNAUygIEw+Lg7etVfLcsgBuzEA3RWwf3
OMY1mTBJlvx6zZxdX7a0QmxerUDkDS9YYAEGSFa+Fx6cGW5Pyeef9xtlHxZHi+pm
TxCwcvJyXqeD4gWm3s1gwOji5WmXvo2EircxfSKk8TUwapxfCYQbOjQIPaHnEGoa
CQhSEgDX5ufwsXJ9/pSP6kjW+y+f0gnhHVuKJKsOBmjg6iqwnqEhw+uNFWKKl/Mo
TFT7CrayJTvo+9UdQTJV9MBAsMUQS7d+HH9kNOAn/hfmEzzGUKVTZ0zId0fKH13p
TnoYgMYbm2Urn0NXBFO8RvzY3KpKyRhMcOLKxkPVUjKUA5BuAv6rcvMflI6Hn5wU
qPM+uECSgdOnNeImi1Ff+cW8dTGGRb+iha+EnABoX3wR5OvzgCYHeENJb32FUoVs
ID2T5MZtQNArkis/xWZ7JyPbmsQo2wyiFLasX8Wgh+8MgFxolpvjlX3/QdTTJqEc
rofVGOPOmfoHo3eYNJOlLbaJTDIe8OrK49PIeu1gm8zqB2WYqmF/3AYy4IAIwUYu
rbPwUC9HyceRPSYePM9Wf1xM2proK3nmp6apdHCRNjbd4689ELmB90b2aw6NFiam
3taKPmFLb/vt2YxgqOtagPrTlc1QLHBKrsnpg/BhcBjupqRKGFmXCJziPIaDKvAs
jtg4KDo8jNIxmwQAwEV4+aH0hhMumxa8yaXoC/3G6JxD2sdoraOp+vrTzjUMkIoc
xLqWl8GHVLF09fZJ4StJfIWIOmmpicSxW1vDICaZuU+iPwlNOzF7sePRkixbarHr
iqTlLG//+Huq/n9IRxhzmSOur63WMXFRy0sKW5W+uQ9xsnV8SdjwRmAGLtnZHq4Y
NOCQ/+yORl4yxkPvV01HykAl4CRtPBGR+4ZC5NKhpyhJbu6WcqwiXyAehU/cPgL+
h8NwEoyP+OHrvEYdy4ocBnJq/436WwzfWis8nIG4bSlD3DSEgJF/QUmq4i/EUq/A
D6SfzbFpPGtTj3KZ6D8DPrwWG68OCFsqRW9YEvUIK8JT265BN3MzI5i0/+k4CdAg
aSaiC97qg7qJaVM9b9EHscUXR/feFxvO5QkkkY5CTU3Bxb0s1I4Rw2MYoAdMGtbA
6mdzmRVYoRv9NMdzL6zOToPU6oOg6mbjHgZQgNd7w8GtTFW+sfslLOXXC8erzbHl
ByQJGcFGtKTBUD+7VHZhpwM7bPObtzyA2r0UbS1Qx0IznvubdFVcXyE7dIjW7cAg
IbBzKeiERwpu3rMq2bYVW3DA33VlrTfpjXujhHv1iX15i6qsWd7OtZw6x7TccH1Z
jdmh9XB9xDydnss3u9DwGREMYC9TdPZY/nui6lgCjjOhaTaunMuigFBMWUBkDlIb
uju+Atv+PSBT9DmTyTQGhPZRIw==
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIAwsuZ7yJxLsCAggA
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECCKRswLXsh9PBIIEyKOt42mLeL6h
uPBh63doHoqJxB95pwptR63fqp2RfvZUUzfrWnI2dnn0xRtRcPmf52BR4sliIJJz
K+h10VO4ailG4mMeP+2VPHFuflQn5xgSC5Vd7jedV0VeycMr0gfZ1XbcMuVIrrW2
wQVM/Dbb3A6NHT5yUA+ZTyam3SYh0VrBLp8FQn/22xivmjC5jqZbFqvUl+NnBF0H
u9+mdCnlYqcq9qT1b2hC/VVSeOyiCZXVEE8Xn7trLGlSGIjfgNWmdHJYadL9JuWX
/5xEU3/MZtfj7DfarYvJYONV9pnBEuucWUjRJgbPgMuqZ2sb7Ip/9/XZHvgFgVry
LIJesLiFlk8Eme7kDH8EPny4I5RUuuftOfXz5semCOiQKqsV5jKlByPxYMdh+ADV
jio0uE55Lb4MGfhxWuzcWD/Rov6IwIg0uuXWpEzjKr0JyVl/84wgni5Hq1O9EgeY
07VBQOuiEzmhlmVGlkqi1/kFAZ+PkdNUSN7JPgvnVA/VgfigtlcIJ9ampsqau2ym
KWh3bUKiV0eJVPA3/tvEdBooXn+8DQbt44syD7P52Mfl/bS2Lc5y6mPttVO/mDzu
Xg6boDNzaXB/HDUF2Td8RackvqrHPKKXXoAz9w8sxYFGe8JVeuOwfO5HX6JHyscd
cKqEZNMBLjxedpL0EZMzp72bse1XcvvIv/XChZnfK2Yfhfxcl3RIiTPx3s6FeeIo
TsrNiTF8d/cOLK11/02hEUdo2r5jg8PHoZmXl0A8n6abXVcOnWi5M1tEjNduwKM6
AQURY7Z9AlSsQXw6xj2z60zi8+Iwu3tgD4HP7NqwZRsD99la09HdcI0cSmeaEOTE
ByrVyqnOBr8ZJVMLue4yM7+BdlGUabTW+0u0qy9Q1AxueQzUmE4VFKtfjRqIUlAA
6HrfEsOe7HRLKxndctJ7uBXI5ghv3zGd0uZmRyjXsEjGr2JqaZa1HexraB/GHXGD
9PZTJWS1mL8KE3o1hSj1yTglhfhJ7Wf/erfBGzctUPKQBkkpzVqZMS6Y2AIHTB5G
b2wox/lwvFA2clodoT3tbeDmhNHxIuGlOnYtcPhILD7MReDNul1R9HL/SsW7AB6+
q6R54PsSchNgFhLSdz0q6azXUlk6mcF5BgROvgyoa+7Gv0UlbSQbUuVuLD0k3SMU
Dmpr/w9OmqUsOczYlnPWovh+GbVhze+eFTNIGV/wVNNJQRC1RUNrC/e8af4cp//r
6jiQ5eNf8rVB8VMeMXRUHxPwRXtFVECuuTdMdPn4U2THJo+45Z0bVG9ytZ6CUP0n
56DWH6/dKeIivEFz/bY4oCZmsIfkjNeo545GRfhFNNGRgrdjCevr0pJtY4h5VjI2
iPUL85R0xze8oCT0a/GHY6XvpbnRz5qry1c2DoR3IeDQkq9yQjA7WautTbp8UzCd
1S7RXIkrzPCg4XBIpQu5hswKC7W/UiH7H92ptyl2griC7E0JOfZ/MvgxZpFi8upe
yY8j1GDIgwptf9QGLkm/epv/QM6L25wGEE916zQ+3rkUXTXT2oPIi8jaQRsloXci
NI3l1FFEQjN4V4it3G2tVnegcAQdX9nsZ97pAq+NOK28OiN9kDN9olV+A0LMe75i
BIB/zRUfIeg/TSbYiFV2cQ==
-----END ENCRYPTED PRIVATE KEY-----
469 changes: 344 additions & 125 deletions tools/certs/cacert.pem

Large diffs are not rendered by default.

56 changes: 28 additions & 28 deletions tools/certs/web-platform.test.key
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCrZXVXmOPlqo/+
2xj15PgcZGHGo/bofiQQ3gl6JL1VX1GptYINhTq2sUhfN8tCb+cHyzapO9oUmwqw
p5Up7tJ4Ip7uE1/wwSxVcvCawG5/PN5iD7H2wsmEppHXOc3Ll085/gzes+1+Nn+q
ARmp1bF/vjplD6VdH2rBW3sJ3DAoBaoXlAMfeRAFDpaqa+9lxMrM5WkUHndQ+uEM
6kZyevhyp02XDP0vLwNCtPLGB0emAAfC7xpwRGVGStEsUhf/mc9yNNaKgqBKI0no
oVnuU3RGdKHP18vcjtBSV0lYgjfg9a07OBu1hgQffhofi2BydfaCpBAMzFhlu1uy
s6ahVkJpAgMBAAECggEAfmvzxY0MbFcGp2FMY/Nj3u1cAXznnk2MpLRiISoATXxl
a9xp9TcUO7VAQJuS3YpUyrbltqZjEVfa5rp1l9yEegBvYgQAfEDARrblKgBOgKOR
FJunFPBQW/vRDwOf/E+7LHdrXskwoCvqtqbhGxh4OFVEFU8ZFjsaL00e0AMNsjZl
0OsEONlIH4nCa7E6DTasHxc1VkHQr3uvBl5/4HfOc05tr+ZKlMYXzAPWkL0sC216
Dqy4AxJ0M0ax8BYEZuo0gqQmMAonJTkEnpyoD4z89S877vFp8w1VPbGYkV48yjV/
I7fQ6Yjt3yg+as+s4arGEsUB0l+XApBYYY/J+qcYUQKBgQDed7DOMJUc3kPTFEcN
p/EbSh9TXxS/74cIyGid9IEiREJYxYv8kz0KplGuJolIQ3/Ik9Rac6B3Tu4WkW0g
TPbNunYEsydZBAnaQ4eAVdOfvRQ6V3eBZ2vErsHJRFaj5cOcesUXxBZI6m2tQESx
dBWFDNG9kztr0HmaL6Puz4zZIwKBgQDFOxfR7FcpGdw61ziSsZmtvkf6epkG3+ou
uhY50J0UrTbK7TuimkoRw/XHeBe4db+ejOOuLD9QE/yXvmtEWuyUTTYOVvZ+HuNj
Rp3kdi1GuWXn6gRvdlkf9XwW7jHmgkpbA5A+uDXs3EYYa18LxPNfMSvhyHdkFnUG
aTzyYNpdAwKBgGv/QNan4Qt1nwluU5v+hl6QGir4AnO2zR/nYloj4ziGWIsNw4pm
1ABCg25+iLCLDBKMKU+LyD+DErPj/0zp7/opZbecXSKqgjnyBGq5v5VRTeuQoJQy
Z6/AgpS5VzITjWV+eAW0jHjzTTEI/RAEYZoIgh18xyDswMuoCvYYzbBvAoGBAMM2
I/Nw+ywBHotWrfXztunSpidy5Ld7NKyfHpSGuJLYhpz/hcEA+ULwM/oEEWZPlSN2
y3t+7AN0ZNREcqMrY3G9oj07ManPJL0EDg8sMNAJfKW4aD9yYfBR50pC5D0ExFel
BUYuyaDwvKg6zc42V7PmVUqaQiFcYOPBkcNMvZTFAoGBALBtdt0iIvtBopp+IQaV
zZMA5ZQIQ5n5v071LKa1s7ar3+hIoDRsZbM7XkUIA8zQlrwFRhbU5YFNcbpooQSm
7j4+fIudcpxj9tAMGAb5yg89k1DjTy7FUWL9elGIgvJMqgF6IQ53+vR8xwGDyQLB
sP5mizF1wi47DYPJQcDRCzU+
-----END PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC/fuYqbJLYKoTw
FzaunSJ362mpA7BoWOIMiTFkGK1tZAgpz2rvzBD5szNMIrHaJF/DMfHxe2CXsnkD
XWbc0cuD7NMM4dKbfRbjntxY3WyJd5ijDLJ8btC/PSwZocmHwgpOqB40qG/aLQpN
wLRxBklh6hrAZMHTsI/AO4IBKMToMYsHS7X7YhdMKg3eq87cgGi/qx1F4qSiAWoF
30Hm/fiULuKfpAFVfevBPT5hUKDqNyrVxxhM7PUNOW1U0wQxRtgSoAqCY22CpI7W
gkNhmx2UmrAdNQL4u1V/jPch4mU2QqmLWBGQoHwoRdibiJWaJun9RweDcIqYGwtO
hIwGt+LjAgMBAAECggEAcDeoH7JSdzSrhJrF45uXqFifKXlM9kkn5pq7A+JmNxWI
px+yleWrCPjXlcU7Hg90wslQ8+cOGrdurOceMUcMETpGD2WCarXqJOdiTv0q7n/U
RbBaJAs4buklH7wsgk7WhXOFh+ww59S/FgNYemdpt2Rd2uLwpuHvy4HT1GQUx8/C
9qhNuu92BNEw5YXZjWlUXsX4/MOhQs6iaEfeGpho20uhURRZlG5kv/zCq9yCX+sa
O5C504zkZgXojCveahOXeWLrhNnRp1dt3DHVp3cF2fyP0IRb++yw0ZYdvcbyc82s
BHenjC3vBwng7aA95QehyeLQO3PVVj8QPndVB72aQQKBgQD71yY2tByXzjHgDRaG
dDDYQtgyVfz4cX+kS+BYWWzuCQo9/UobwucUTmUz1Rc04/quSk/p63ag1vbqxyoG
pVyV2P6IY5+F3pEklWtfXmy7Anuk8jUgXjgS2+78gxPzy49NweTNTUclLAZJSFkL
GAB6oXW0taeVRsCZ9ggpv0USoQKBgQDCqJh+Mmtp04zcjRm0gUZmf8ErFXYj6uqr
rVsGQLn6wRRcc8JrNA4Xblq7rjf7B5D2Ds8IpoPeFoB8Ga+PGe4MQJZdG0UmvQFg
RXpAiB6O7n4+8oaXSOmFpFL5Jd0/CdGutWG44CwJorbCBYqV8fIF5UaYFGigJEUT
WrcPQ0PLAwKBgHRXnGvBIURwGVJsOW+71aTSnJYEa21K4bDA7M9j4JLG0lh43vec
Pqx+2vnrA2GHwJMr+WcTRCZhqIgloiCX3AHN0Sio/VUW0O6ZqJTSRmDOcNhunGRr
onPz7p/w3hLOg1FktZKylJ9ziyPnrFsXp4D/fiURlm271dZKdtLybbKBAoGASREv
7G7QkvCttzvfojnES0U5JQrxRZowbDCuMjKpnM5M7kcle0gW4gSyWjCTIs88QqBc
ZkraxMp9gBfEJlr9V+wGhPxvgJMBqTlrIj31+oDbMpWmn7LmtRtxacQkwDzXUFUV
UWgUH6nMIBgkZRRkXIIrdXpzq2jx5MnwXPJKyDECgYEA09P2ZweBJE9a9ooKGWoi
2iRV4GAeIZGUXy1sT/DWM6eUspuFsIE1dak0J5VVKdIce7CV3IpDE8PZ5P0iUfie
gL170KxfJRkOfI6px4wBWGe/RM0nInWJIIR5oGcifzBx7tVQqKbzNclLUkMOhhg7
epZdPJJuZSgrixaPo7ymz40=
-----END PRIVATE KEY-----
372 changes: 239 additions & 133 deletions tools/certs/web-platform.test.pem

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions tools/serve/serve.py
Expand Up @@ -366,6 +366,7 @@ def add_mount_point(self, url_base, path):
("GET", "*.any.serviceworker.html", ServiceWorkersHandler),
("GET", "*.any.worker.js", AnyWorkerHandler),
("GET", "*.asis", handlers.AsIsHandler),
("GET", "/.well-known/origin-policy", handlers.PythonScriptHandler),
jgraham marked this conversation as resolved.
Show resolved Hide resolved
("*", "*.py", handlers.PythonScriptHandler),
("GET", "*", handlers.FileHandler)
]
Expand Down Expand Up @@ -742,6 +743,9 @@ def build_config(override_path=None, **kwargs):
def _make_subdomains_product(s, depth=2):
return {u".".join(x) for x in chain(*(product(s, repeat=i) for i in range(1, depth+1)))}

def _make_origin_policy_subdomains(limit):
return {u"op%d" % x for x in range(1,limit)}
domenic marked this conversation as resolved.
Show resolved Hide resolved


_subdomains = {u"www",
u"www1",
Expand All @@ -753,6 +757,12 @@ def _make_subdomains_product(s, depth=2):

_subdomains = _make_subdomains_product(_subdomains)

# Origin policy subdomains need to not be reused by any other tests, since origin policies have
# origin-wide impacts like installing a CSP or Feature Policy that could interfere with features
# under test.
# See https://github.com/web-platform-tests/rfcs/pull/44.
_subdomains |= _make_origin_policy_subdomains(99)

_not_subdomains = _make_subdomains_product(_not_subdomains)


Expand Down
2 changes: 1 addition & 1 deletion tools/serve/test_serve.py
Expand Up @@ -82,7 +82,7 @@ def test_config_json_length():
# we serialize the config as JSON for pytestrunner and put it in an env
# variable, which on Windows must have a length <= 0x7FFF (int16)
with ConfigBuilder() as c:
data = json.dumps(c.as_dict())
data = json.dumps(c.as_dict_for_wd_env_variable())
assert len(data) <= 0x7FFF

def test_alternate_host_unspecified():
Expand Down
2 changes: 1 addition & 1 deletion tools/wptrunner/wptrunner/executors/pytestrunner/runner.py
Expand Up @@ -44,7 +44,7 @@ def run(path, server_config, session_config, timeout=0):
os.environ["WD_HOST"] = session_config["host"]
os.environ["WD_PORT"] = str(session_config["port"])
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict())
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict_for_wd_env_variable())

harness = HarnessResultRecorder()
subtests = SubtestResultRecorder()
Expand Down
13 changes: 13 additions & 0 deletions tools/wptserve/wptserve/config.py
Expand Up @@ -69,6 +69,19 @@ def logger(self):
def as_dict(self):
return json_types(self.__dict__)

# Environment variables are limited in size so we need to prune the most egregious contributors
# to size, the origin policy subdomains.
def as_dict_for_wd_env_variable(self):
dict = self.as_dict()
domenic marked this conversation as resolved.
Show resolved Hide resolved
dict["subdomains"] = [x for x in dict["subdomains"] if not x.startswith("op")]
domenic marked this conversation as resolved.
Show resolved Hide resolved
dict["domains"]["alt"] = {k:v for (k,v) in dict["domains"]["alt"].items() if not k.startswith("op")}
dict["domains"][""] = {k:v for (k,v) in dict["domains"][""].items() if not k.startswith("op")}
dict["all_domains"]["alt"] = {k:v for (k,v) in dict["all_domains"]["alt"].items() if not k.startswith("op")}
dict["all_domains"][""] = {k:v for (k,v) in dict["all_domains"][""].items() if not k.startswith("op")}
dict["domains_set"] = [x for x in dict["domains_set"] if not x.startswith("op")]
dict["all_domains_set"] = [x for x in dict["all_domains_set"] if not x.startswith("op")]
return dict


def json_types(obj):
if isinstance(obj, dict):
Expand Down