<!DOCTYPE html>
<meta charset="utf-8">
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src=helpers.js></script>
<body></body>
<script>
    "use strict";
    // usb transport
    virtualAuthenticatorPromiseTest(async function() {
        const assertion = await navigator.credentials.get({publicKey: {
            challenge: new Uint8Array(),
            allowCredentials: [{
                id: (await createCredential()).rawId,
                type: "public-key",
            }],
        }});
        assert_equals(assertion.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "usb"
    }, "navigator.credentials.get() with usb authenticator, attachment as cross-platform");

    // ble transport
    virtualAuthenticatorPromiseTest(async function() {
        const assertion = await navigator.credentials.get({publicKey: {
            challenge: new Uint8Array(),
            allowCredentials: [{
                id: (await createCredential()).rawId,
                type: "public-key",
            }],
        }});
        assert_equals(assertion.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "ble"
    }, "navigator.credentials.get() with ble authenticator, attachment as cross-platform");

    // nfc transport
    virtualAuthenticatorPromiseTest(async function() {
        const assertion = await navigator.credentials.get({publicKey: {
            challenge: new Uint8Array(),
            allowCredentials: [{
                id: (await createCredential()).rawId,
                type: "public-key",
            }],
        }});
        assert_equals(assertion.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "nfc"
    }, "navigator.credentials.get() with nfc authenticator, attachment as cross-platform");

    // internal transport
    virtualAuthenticatorPromiseTest(async function() {
        const assertion = await navigator.credentials.get({publicKey: {
            challenge: new Uint8Array(),
            allowCredentials: [{
                id: (await createCredential()).rawId,
                type: "public-key",
            }],
        }});
        assert_equals(assertion.authenticatorAttachment, "platform");
    }, {
        protocol: "ctap2",
        transport: "internal"
    }, "navigator.credentials.get() with internal authenticator, attachment as platform");
</script>
