<!DOCTYPE html>
<title>Tests for configs as arguments to `deprecatedReplaceInURN` and `deprecatedURNToURL`.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/utils.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<body>
<script>
promise_test(async () => {
const expected_url = location.href + '?foo';
const config = await generateURNFromFledgeRawURL(location.href + '?${X}', [], true);
await navigator.deprecatedReplaceInURN(config, {'${X}': 'foo'});
const url = await navigator.deprecatedURNToURL(config, false);
assert_equals(url, expected_url, 'The retrieved mapped url should match.');
}, 'deprecated urn APIs should work with configs generated by an API');
promise_test(async () => {
const config = new FencedFrameConfig(location.href);
try {
await navigator.deprecatedReplaceInURN(config, {});
assert_unreached('deprecatedReplaceInURN must throw for default configs');
} catch (e) {
assert_equals(e.message,
"Failed to execute 'deprecatedReplaceInURN' on 'Navigator': "
+ "Passed config must have a mapped URL.");
}
try {
await navigator.deprecatedURNToURL(config, false);
assert_unreached('deprecatedURNToURL must throw for default configs');
} catch (e) {
assert_equals(e.message,
"Failed to execute 'deprecatedURNToURL' on 'Navigator': "
+ "Passed config must have a mapped URL.");
}
}, 'deprecated urn APIs should not work with configs generated by a WebIDL constructor');
</script>
</body>
</html>