summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/auth/u2f_webauthn_converter_spec.rb
blob: deddc7f529463615e00b2a3bc37929a22f4a2435 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::Auth::U2fWebauthnConverter do
  let_it_be(:u2f_registration) do
    device = U2F::FakeU2F.new(FFaker::BaconIpsum.characters(5))
    create(:u2f_registration, name: 'u2f_device',
                              certificate: Base64.strict_encode64(device.cert_raw),
                              key_handle: U2F.urlsafe_encode64(device.key_handle_raw),
                              public_key: Base64.strict_encode64(device.origin_public_key_raw))
  end

  it 'converts u2f registration' do
    webauthn_credential = WebAuthn::U2fMigrator.new(
      app_id: Gitlab.config.gitlab.url,
      certificate: u2f_registration.certificate,
      key_handle: u2f_registration.key_handle,
      public_key: u2f_registration.public_key,
      counter: u2f_registration.counter
    ).credential

    converted_webauthn = described_class.new(u2f_registration).convert

    expect(converted_webauthn).to(
      include(user_id: u2f_registration.user_id,
              credential_xid: Base64.strict_encode64(webauthn_credential.id)))
  end
end