Add feature specs to cover naming and deleting U2F devices.
This commit is contained in:
parent
16c44a5ddd
commit
961e86bf24
|
@ -12,10 +12,12 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', feature:
|
||||||
end
|
end
|
||||||
|
|
||||||
def register_u2f_device(u2f_device = nil)
|
def register_u2f_device(u2f_device = nil)
|
||||||
u2f_device ||= FakeU2fDevice.new(page)
|
name = FFaker::Name.first_name
|
||||||
|
u2f_device ||= FakeU2fDevice.new(page, name)
|
||||||
u2f_device.respond_to_u2f_registration
|
u2f_device.respond_to_u2f_registration
|
||||||
click_on 'Setup New U2F Device'
|
click_on 'Setup New U2F Device'
|
||||||
expect(page).to have_content('Your device was successfully set up')
|
expect(page).to have_content('Your device was successfully set up')
|
||||||
|
fill_in "Pick a name", with: name
|
||||||
click_on 'Register U2F Device'
|
click_on 'Register U2F Device'
|
||||||
u2f_device
|
u2f_device
|
||||||
end
|
end
|
||||||
|
@ -40,13 +42,14 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', feature:
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'when 2FA via OTP is enabled' do
|
describe 'when 2FA via OTP is enabled' do
|
||||||
it 'allows registering a new device' do
|
it 'allows registering a new device with a name' do
|
||||||
visit profile_account_path
|
visit profile_account_path
|
||||||
manage_two_factor_authentication
|
manage_two_factor_authentication
|
||||||
expect(page.body).to match("You've already enabled two-factor authentication using mobile")
|
expect(page.body).to match("You've already enabled two-factor authentication using mobile")
|
||||||
|
|
||||||
register_u2f_device
|
u2f_device = register_u2f_device
|
||||||
|
|
||||||
|
expect(page.body).to match(u2f_device.name)
|
||||||
expect(page.body).to match('Your U2F device was registered')
|
expect(page.body).to match('Your U2F device was registered')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -55,15 +58,31 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', feature:
|
||||||
|
|
||||||
# First device
|
# First device
|
||||||
manage_two_factor_authentication
|
manage_two_factor_authentication
|
||||||
register_u2f_device
|
first_device = register_u2f_device
|
||||||
expect(page.body).to match('Your U2F device was registered')
|
expect(page.body).to match('Your U2F device was registered')
|
||||||
|
|
||||||
# Second device
|
# Second device
|
||||||
manage_two_factor_authentication
|
second_device = register_u2f_device
|
||||||
register_u2f_device
|
|
||||||
expect(page.body).to match('Your U2F device was registered')
|
expect(page.body).to match('Your U2F device was registered')
|
||||||
|
|
||||||
|
expect(page.body).to match(first_device.name)
|
||||||
|
expect(page.body).to match(second_device.name)
|
||||||
|
expect(U2fRegistration.count).to eq(2)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'allows deleting a device' do
|
||||||
|
visit profile_account_path
|
||||||
manage_two_factor_authentication
|
manage_two_factor_authentication
|
||||||
expect(page.body).to match('You have 2 U2F devices registered')
|
expect(page.body).to match("You've already enabled two-factor authentication using mobile")
|
||||||
|
|
||||||
|
first_u2f_device = register_u2f_device
|
||||||
|
second_u2f_device = register_u2f_device
|
||||||
|
|
||||||
|
click_on "Delete", match: :first
|
||||||
|
|
||||||
|
expect(page.body).to match('Successfully deleted')
|
||||||
|
expect(page.body).not_to match(first_u2f_device.name)
|
||||||
|
expect(page.body).to match(second_u2f_device.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -208,7 +227,7 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', feature:
|
||||||
|
|
||||||
describe "when a given U2F device has not been registered" do
|
describe "when a given U2F device has not been registered" do
|
||||||
it "does not allow logging in with that particular device" do
|
it "does not allow logging in with that particular device" do
|
||||||
unregistered_device = FakeU2fDevice.new(page)
|
unregistered_device = FakeU2fDevice.new(page, FFaker::Name.first_name)
|
||||||
login_as(user)
|
login_as(user)
|
||||||
unregistered_device.respond_to_u2f_authentication
|
unregistered_device.respond_to_u2f_authentication
|
||||||
click_on "Login Via U2F Device"
|
click_on "Login Via U2F Device"
|
||||||
|
@ -262,6 +281,7 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', feature:
|
||||||
end
|
end
|
||||||
|
|
||||||
it "deletes u2f registrations" do
|
it "deletes u2f registrations" do
|
||||||
|
visit profile_account_path
|
||||||
expect { click_on "Disable" }.to change { U2fRegistration.count }.by(-1)
|
expect { click_on "Disable" }.to change { U2fRegistration.count }.by(-1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
class FakeU2fDevice
|
class FakeU2fDevice
|
||||||
def initialize(page)
|
attr_reader :name
|
||||||
|
|
||||||
|
def initialize(page, name)
|
||||||
@page = page
|
@page = page
|
||||||
|
@name = name
|
||||||
end
|
end
|
||||||
|
|
||||||
def respond_to_u2f_registration
|
def respond_to_u2f_registration
|
||||||
|
|
Loading…
Reference in New Issue