| '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 = '{{hosts[alt][]}}'; |
| 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}`; |
| } |
| } |