<!DOCTYPE html>
<script src='../resources/testharness.js'></script>
<script src='../resources/testharnessreport.js'></script>
<script>
promise_test(async (test) => {
    let pc = new RTCPeerConnection({iceServers:[{urls:['stun:foo.com', 'stun:blabla.local']}]});
    let promise = new Promise(resolve => pc.onicecandidateerror = resolve);
    let configuration = pc.getConfiguration();

    assert_equals(configuration.iceServers[0].urls.length, 1);
    assert_equals(configuration.iceServers[0].urls[0], 'stun:foo.com');

    const event = await promise;
    assert_equals(event.url, 'stun:blabla.local');
    assert_equals(event.errorCode, 701);
}, "RTCPeerConnection and local STUN server");

promise_test(async (test) => {
    let pc = new RTCPeerConnection({iceServers:[{username: 'test', credential: 'test', urls:['turn:foo.com', 'turn:blabla.local']}]});
    let promise = new Promise(resolve => pc.onicecandidateerror = resolve);
    let configuration = pc.getConfiguration();

    assert_equals(configuration.iceServers[0].urls.length, 1);
    assert_equals(configuration.iceServers[0].urls[0], 'turn:foo.com');

    const event = await promise;
    assert_equals(event.url, 'turn:blabla.local');
    assert_equals(event.errorCode, 701);
}, "RTCPeerConnection and local TURN server");

test(() => {
    let string509 = '';
    for (let cptr = 0; cptr < 509; ++cptr)
        string509 += 'a';

    new RTCPeerConnection({iceServers:[{username: 'test', credential: string509, urls:['turn:foo.com']}]});
    new RTCPeerConnection({iceServers:[{username: string509, credential: 'test', urls:['turn:foo.com']}]});

    let string510 = string509 + 'a';

    assert_throws_js(TypeError, () => new RTCPeerConnection({iceServers:[{username: 'test', credential: string510, urls:['turn:foo.com']}]}));
    assert_throws_js(TypeError, () => new RTCPeerConnection({iceServers:[{username: string510, credential: 'test', urls:['turn:foo.com']}]}));
}, "RTCPeerConnection and big TURN username/credential");
</script>
