summaryrefslogtreecommitdiff
path: root/spec/support/fake_u2f_device.rb
blob: 553fe9f1fbc8e163754330de4e816a0cc6dd5663 (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
30
31
32
33
34
35
36
class FakeU2fDevice
  def initialize(page)
    @page = page
  end
  
  def respond_to_u2f_registration
    app_id = @page.evaluate_script('gon.u2f.app_id')
    challenges = @page.evaluate_script('gon.u2f.challenges')

    json_response = u2f_device(app_id).register_response(challenges[0])

    @page.execute_script("
    u2f.register = function(appId, registerRequests, signRequests, callback) {
      callback(#{json_response});
    };
    ")
  end

  def respond_to_u2f_authentication
    app_id = @page.evaluate_script('gon.u2f.app_id')
    challenges = @page.evaluate_script('gon.u2f.challenges')
    json_response = u2f_device(app_id).sign_response(challenges[0])

    @page.execute_script("
    u2f.sign = function(appId, challenges, signRequests, callback) {
      callback(#{json_response});
    };
    ")
  end

  private

  def u2f_device(app_id)
    @u2f_device ||= U2F::FakeU2F.new(app_id)
  end
end