70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
/*
|
|
In web-platform-test, a number of domains are required to be set up locally.
|
|
The list is available at docs/_writing-tests/server-features.md. The
|
|
appropriate hosts file entries can be generated with the WPT CLI via the
|
|
following command: `wpt make-hosts-file`.
|
|
*/
|
|
|
|
/*
|
|
dictionary RTCIdentityProviderDetails {
|
|
required DOMString domain;
|
|
DOMString protocol = "default";
|
|
};
|
|
*/
|
|
|
|
// Parse a base64 JSON encoded string returned from getIdentityAssertion().
|
|
// This is also the string that is set in the a=identity line.
|
|
// Returns a { idp, assertion } where idp is of type RTCIdentityProviderDetails
|
|
// and assertion is the deserialized JSON that was returned by the
|
|
// IdP proxy's generateAssertion() function.
|
|
function parseAssertionResult(assertionResultStr) {
|
|
const assertionResult = JSON.parse(atob(assertionResultStr));
|
|
|
|
const { idp } = assertionResult;
|
|
const assertion = JSON.parse(assertionResult.assertion);
|
|
|
|
return { idp, assertion };
|
|
}
|
|
|
|
// Return two distinct IdP domains that are different from current domain
|
|
function getIdpDomains() {
|
|
const domainA = '{{domains[www]}}';
|
|
const domainB = '{{domains[www1]}}';
|
|
const domainC = '{{domains[www2]}}';
|
|
|
|
if(window.location.hostname === domainA) {
|
|
return [domainB, domainC];
|
|
} else if(window.location.hostname === domainB) {
|
|
return [domainA, domainC];
|
|
} else {
|
|
return [domainA, domainB];
|
|
}
|
|
}
|
|
|
|
function assert_rtcerror_rejection(errorDetail, promise, desc) {
|
|
return promise.then(
|
|
res => {
|
|
assert_unreached(`Expect promise to be rejected with RTCError, but instead got ${res}`);
|
|
}, err => {
|
|
assert_true(err instanceof RTCError,
|
|
'Expect error object to be instance of RTCError');
|
|
|
|
assert_equals(err.errorDetail, errorDetail,
|
|
`Expect RTCError object have errorDetail set to ${errorDetail}`);
|
|
|
|
return err;
|
|
});
|
|
}
|
|
|
|
// construct a host string consist of domain and optionally port
|
|
// If the default HTTP/HTTPS port is used, window.location.port returns
|
|
// empty string.
|
|
function hostString(domain, port) {
|
|
if(port === '') {
|
|
return domain;
|
|
} else {
|
|
return `${domain}:${port}`;
|
|
}
|
|
}
|