<!DOCTYPE html>
<meta charset="utf-8">
<title>Test for the 'secure-payment-confirmation' payment method authentication - data URL icon</title>
<link rel="help" href="https://w3c.github.io/secure-payment-confirmation#sctn-steps-to-check-if-a-payment-can-be-made">
<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="utils.sub.js"></script>
<script>
'use strict';

promise_test(async t => {
  const authenticator = await window.test_driver.add_virtual_authenticator(
      AUTHENTICATOR_OPTS);
  t.add_cleanup(() => {
    return window.test_driver.remove_virtual_authenticator(authenticator);
  });

  await window.test_driver.set_spc_transaction_mode("autoAccept");
  t.add_cleanup(() => {
    return window.test_driver.set_spc_transaction_mode("none");
  });

  const credential = await createCredential();

  const challenge = 'server challenge';
  const payeeOrigin = 'https://merchant.com';
  const displayName = 'Troycard ***1234';
  // Use a Data URL for the request, which should be accepted.
  const request = new PaymentRequest([{
    supportedMethods: 'secure-payment-confirmation',
    data: {
      credentialIds: [credential.rawId],
      challenge: Uint8Array.from(challenge, c => c.charCodeAt(0)),
      payeeOrigin,
      rpId: window.location.hostname,
      timeout: 60000,
      instrument: {
        displayName,
        icon: ICON_DATA_URL,
      },
    }
  }], PAYMENT_DETAILS);

  await test_driver.bless('user activation');
  const responsePromise = request.show();

  const response = await responsePromise;
  await response.complete('success');

  const cred = response.details;
  assert_equals(cred.id, credential.id);

  const clientDataJSON = JSON.parse(arrayBufferToString(cred.response.clientDataJSON));
  assert_equals(clientDataJSON.payment.instrument.icon, ICON_DATA_URL);
}, 'SPC authentication with data URL instrument icon');
</script>
