Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/authentication/u2f/register_spec.js')
-rw-r--r--spec/frontend/authentication/u2f/register_spec.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/spec/frontend/authentication/u2f/register_spec.js b/spec/frontend/authentication/u2f/register_spec.js
new file mode 100644
index 00000000000..3c2ecdbba66
--- /dev/null
+++ b/spec/frontend/authentication/u2f/register_spec.js
@@ -0,0 +1,83 @@
+import $ from 'jquery';
+import U2FRegister from '~/authentication/u2f/register';
+import 'vendor/u2f';
+import MockU2FDevice from './mock_u2f_device';
+
+describe('U2FRegister', () => {
+ let u2fDevice;
+ let container;
+ let component;
+
+ preloadFixtures('u2f/register.html');
+
+ beforeEach(done => {
+ loadFixtures('u2f/register.html');
+ u2fDevice = new MockU2FDevice();
+ container = $('#js-register-u2f');
+ component = new U2FRegister(container, $('#js-register-u2f-templates'), {}, 'token');
+ component
+ .start()
+ .then(done)
+ .catch(done.fail);
+ });
+
+ it('allows registering a U2F device', () => {
+ const setupButton = container.find('#js-setup-u2f-device');
+
+ expect(setupButton.text()).toBe('Set up new U2F device');
+ setupButton.trigger('click');
+ const inProgressMessage = container.children('p');
+
+ expect(inProgressMessage.text()).toContain('Trying to communicate with your device');
+ u2fDevice.respondToRegisterRequest({
+ deviceData: 'this is data from the device',
+ });
+ const registeredMessage = container.find('p');
+ const deviceResponse = container.find('#js-device-response');
+
+ expect(registeredMessage.text()).toContain('Your device was successfully set up!');
+ expect(deviceResponse.val()).toBe('{"deviceData":"this is data from the device"}');
+ });
+
+ describe('errors', () => {
+ it("doesn't allow the same device to be registered twice (for the same user", () => {
+ const setupButton = container.find('#js-setup-u2f-device');
+ setupButton.trigger('click');
+ u2fDevice.respondToRegisterRequest({
+ errorCode: 4,
+ });
+ const errorMessage = container.find('p');
+
+ expect(errorMessage.text()).toContain('already been registered with us');
+ });
+
+ it('displays an error message for other errors', () => {
+ const setupButton = container.find('#js-setup-u2f-device');
+ setupButton.trigger('click');
+ u2fDevice.respondToRegisterRequest({
+ errorCode: 'error!',
+ });
+ const errorMessage = container.find('p');
+
+ expect(errorMessage.text()).toContain('There was a problem communicating with your device');
+ });
+
+ it('allows retrying registration after an error', () => {
+ let setupButton = container.find('#js-setup-u2f-device');
+ setupButton.trigger('click');
+ u2fDevice.respondToRegisterRequest({
+ errorCode: 'error!',
+ });
+ const retryButton = container.find('#U2FTryAgain');
+ retryButton.trigger('click');
+ setupButton = container.find('#js-setup-u2f-device');
+ setupButton.trigger('click');
+ u2fDevice.respondToRegisterRequest({
+ deviceData: 'this is data from the device',
+ });
+ const registeredMessage = container.find('p');
+
+ expect(registeredMessage.text()).toContain('Your device was successfully set up!');
+ });
+ });
+});