<!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 credential = await createCredential({
            options: {
                publicKey: {
                    authenticatorSelection: {
                        userVerification: "preferred"
                    },
                },
            },
        });
        assert_equals(credential.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "usb"
    }, "navigator.credentials.create() with usb authenticator, attachment as cross-platform");

    // ble transport
    virtualAuthenticatorPromiseTest(async function() {
        const credential = await createCredential({
            options: {
                publicKey: {
                    authenticatorSelection: {
                        userVerification: "preferred"
                    },
                },
            },
        });
        assert_equals(credential.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "ble"
    }, "navigator.credentials.create() with ble authenticator, attachment as cross-platform");

    // nfc transport
    virtualAuthenticatorPromiseTest(async function() {
        const credential = await createCredential({
            options: {
                publicKey: {
                    authenticatorSelection: {
                        userVerification: "preferred"
                    },
                },
            },
        });
        assert_equals(credential.authenticatorAttachment, "cross-platform");
    }, {
        protocol: "ctap2",
        transport: "nfc"
    }, "navigator.credentials.create() with nfc authenticator, attachment as cross-platform");

    // internal transport
    virtualAuthenticatorPromiseTest(async function() {
        const credential = await createCredential({
            options: {
                publicKey: {
                    authenticatorSelection: {
                        userVerification: "preferred"
                    },
                },
            },
        });
        assert_equals(credential.authenticatorAttachment, "platform");
    }, {
        protocol: "ctap2",
        transport: "internal"
    }, "navigator.credentials.create() with internal authenticator, attachment as platform");
</script>
