summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webrtc-identity/identity-helper.sub.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webrtc-identity/identity-helper.sub.js')
-rw-r--r--testing/web-platform/tests/webrtc-identity/identity-helper.sub.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webrtc-identity/identity-helper.sub.js b/testing/web-platform/tests/webrtc-identity/identity-helper.sub.js
new file mode 100644
index 0000000000..90363662f7
--- /dev/null
+++ b/testing/web-platform/tests/webrtc-identity/identity-helper.sub.js
@@ -0,0 +1,70 @@
+'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}`;
+ }
+}