| 'use strict'; |
| |
| /* |
| In web-platform-test, the following domains are required to be set up locally: |
| 127.0.0.1 web-platform.test |
| 127.0.0.1 www.web-platform.test |
| 127.0.0.1 www1.web-platform.test |
| 127.0.0.1 www2.web-platform.test |
| 127.0.0.1 xn--n8j6ds53lwwkrqhv28a.web-platform.test |
| 127.0.0.1 xn--lve-6lad.web-platform.test |
| 0.0.0.0 nonexistent-origin.web-platform.test |
| */ |
| |
| /* |
| 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() { |
| if(window.location.hostname === 'www1.web-platform.test') { |
| return ['www.web-platform.test', 'www2.web-platform.test']; |
| } else if(window.location.hostname === 'www2.web-platform.test') { |
| return ['www.web-platform.test', 'www1.web-platform.test']; |
| } else { |
| return ['www1.web-platform.test', 'www2.web-platform.test']; |
| } |
| } |
| |
| 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}`; |
| } |
| } |