All files / app/assets/javascripts/authentication/webauthn error.js

100% Statements 14/14
93.75% Branches 15/16
100% Functions 2/2
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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          11x 11x 11x 11x 11x       11x 2x 9x 1x 8x 1x 7x 1x         6x      
import { __ } from '~/locale';
import { isHTTPS, FLOW_AUTHENTICATE, FLOW_REGISTER } from './util';
 
export default class WebAuthnError {
  constructor(error, flowType) {
    this.error = error;
    this.errorName = error.name || 'UnknownError';
    this.message = this.message.bind(this);
    this.httpsDisabled = !isHTTPS();
    this.flowType = flowType;
  }
 
  message() {
    if (this.errorName === 'NotSupportedError') {
      return __('Your device is not compatible with GitLab. Please try another device');
    } else if (this.errorName === 'InvalidStateError' && this.flowType === FLOW_AUTHENTICATE) {
      return __('This device has not been registered with us.');
    } else if (this.errorName === 'InvalidStateError' && this.flowType === FLOW_REGISTER) {
      return __('This device has already been registered with us.');
    } else if (this.errorName === 'SecurityError' && this.httpsDisabled) {
      return __(
        'WebAuthn only works with HTTPS-enabled websites. Contact your administrator for more details.',
      );
    }
 
    return __('There was a problem communicating with your device.');
  }
}