
FAIL getIdentityAssertion() should load IdP proxy and return assertion generated undefined is not a function (near '...pc.setIdentityProvider...')
FAIL getIdentityAssertion() should succeed if mock-idp.js return different domain and protocol in assertion undefined is not a function (near '...pc.setIdentityProvider...')
FAIL getIdentityAssertion() should reject with RTCError('idp-execution-failure') if mock-idp.js throws error assert_equals: Expect initial pc.idpErrorInfo to be null expected (object) null but got (undefined) undefined
FAIL getIdentityAssertion() should reject with RTCError('idp-bad-script-failure') if IdP proxy script do not register its callback undefined is not a function (near '...pc.setIdentityProvider...')
FAIL getIdentityAssertion() should reject with OperationError if mock-idp.js return invalid result undefined is not a function (near '...pc.setIdentityProvider...')
FAIL getIdentityAssertion() should reject with RTCError('idp-load-failure') if IdP cannot be loaded pc.setIdentityProvider is not a function. (In 'pc.setIdentityProvider('nonexistent.localhost', {
      protocol: `non-existent`,
      usernameHint: `alice@example.org`,
    })', 'pc.setIdentityProvider' is undefined)
FAIL getIdentityAssertion() should reject with RTCError('idp-need-login') when mock-idp.js requires login assert_equals: Expect initial pc.idpLoginUrl to be null expected (object) null but got (undefined) undefined
FAIL setIdentityProvider() with no peerIdentity provided should use peerIdentity value from getConfiguration() pc.setIdentityProvider is not a function. (In 'pc.setIdentityProvider(idpHost, {
      protocol: 'mock-idp.js'
    })', 'pc.setIdentityProvider' is undefined)
FAIL Calling setIdentityProvider() multiple times should reset identity assertions pc.setIdentityProvider is not a function. (In 'pc.setIdentityProvider(idpHost, {
      protocol: 'mock-idp.js?mark=first'
    })', 'pc.setIdentityProvider' is undefined)
FAIL createOffer() should return SDP containing identity assertion string if identity provider is set pc.setIdentityProvider is not a function. (In 'pc.setIdentityProvider(hostString(idpDomain, port), {
      protocol: 'mock-idp.js',
      usernameHint: `alice@${idpDomain}`
    })', 'pc.setIdentityProvider' is undefined)
FAIL createOffer() should reject with NotReadableError if identitity assertion request fails undefined is not a function (near '...pc.setIdentityProvider...')
FAIL createAnswer() should reject with NotReadableError if identitity assertion request fails undefined is not a function (near '...pc.setIdentityProvider...')

