From f22d7680270c60edb572cf73a4ec39d4fe70ceb1 Mon Sep 17 00:00:00 2001 From: Jakub Kramarz Date: Tue, 21 Mar 2017 16:15:27 +0000 Subject: Enable FIDO U2F on Opera browser, see http://caniuse.com/#feat=u2f --- app/helpers/u2f_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/u2f_helper.rb b/app/helpers/u2f_helper.rb index 143b4ca6b51..81bfe5d4eeb 100644 --- a/app/helpers/u2f_helper.rb +++ b/app/helpers/u2f_helper.rb @@ -1,5 +1,5 @@ module U2fHelper def inject_u2f_api? - browser.chrome? && browser.version.to_i >= 41 && !browser.device.mobile? + ((browser.chrome? && browser.version.to_i >= 41) || (browser.opera? && browser.version.to_i >= 40)) && !browser.device.mobile? end end -- cgit v1.2.1 From ef77fcf9d56d6f34541521ffbe5c1ca143f853b8 Mon Sep 17 00:00:00 2001 From: Jonas Kalderstam Date: Sun, 11 Jun 2017 17:05:23 +0200 Subject: Add test for u2f helper and changelog entry --- changelogs/unreleased/fix-u2f-for-opera.yml | 4 +++ spec/helpers/u2f_helper_spec.rb | 49 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 changelogs/unreleased/fix-u2f-for-opera.yml create mode 100644 spec/helpers/u2f_helper_spec.rb diff --git a/changelogs/unreleased/fix-u2f-for-opera.yml b/changelogs/unreleased/fix-u2f-for-opera.yml new file mode 100644 index 00000000000..0eafb8eff9a --- /dev/null +++ b/changelogs/unreleased/fix-u2f-for-opera.yml @@ -0,0 +1,4 @@ +--- +title: Fix FIDO U2F for Opera browser +merge_request: 12082 +author: Jakub Kramarz and Jonas Kalderstam diff --git a/spec/helpers/u2f_helper_spec.rb b/spec/helpers/u2f_helper_spec.rb new file mode 100644 index 00000000000..0d65b4fe0b8 --- /dev/null +++ b/spec/helpers/u2f_helper_spec.rb @@ -0,0 +1,49 @@ +require 'spec_helper' + +describe U2fHelper do + describe 'when not on mobile' do + it 'does not inject u2f on chrome 40' do + device = double(mobile?: false) + browser = double(chrome?: true, opera?: false, version: 40, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq false + end + + it 'injects u2f on chrome 41' do + device = double(mobile?: false) + browser = double(chrome?: true, opera?: false, version: 41, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq true + end + + it 'does not inject u2f on opera 39' do + device = double(mobile?: false) + browser = double(chrome?: false, opera?: true, version: 39, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq false + end + + it 'injects u2f on opera 40' do + device = double(mobile?: false) + browser = double(chrome?: false, opera?: true, version: 40, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq true + end + end + + describe 'when on mobile' do + it 'does not inject u2f on chrome 41' do + device = double(mobile?: true) + browser = double(chrome?: true, opera?: false, version: 41, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq false + end + + it 'does not inject u2f on opera 40' do + device = double(mobile?: true) + browser = double(chrome?: false, opera?: true, version: 40, device: device) + allow(helper).to receive(:browser).and_return(browser) + expect(helper.inject_u2f_api?).to eq false + end + end +end -- cgit v1.2.1