Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.2 KiB
113 lines
3.2 KiB
'use strict' |
|
/* global describe, it, inject, expect, beforeEach, jasmine */ |
|
|
|
describe('PasswordRecoveryModalController', function () { |
|
beforeEach(module('myApp.controllers')) |
|
|
|
beforeEach(function () { |
|
this.PasswordManager = { |
|
errorField: null, |
|
recover: function () { |
|
return this |
|
}, |
|
then: function (callback, error) { |
|
if (!this.errorField) { |
|
callback({}) |
|
} else { |
|
error(this.errorField) |
|
} |
|
return { |
|
finally: function (final) { |
|
final() |
|
} |
|
} |
|
} |
|
} |
|
|
|
this.ErrorService = { alert: jasmine.createSpy('alert') } |
|
this.modalInstance = { |
|
close: jasmine.createSpy('close'), |
|
dismiss: jasmine.createSpy('dismiss') |
|
} |
|
|
|
inject(function (_$controller_, _$rootScope_, ___) { |
|
this.$controller = _$controller_ |
|
this.$scope = _$rootScope_.$new() |
|
this.$scope.recovery = {} |
|
|
|
this.$controller('PasswordRecoveryModalController', { |
|
$scope: this.$scope, |
|
$q: {}, |
|
_: ___, |
|
PasswordManager: this.PasswordManager, |
|
MtpApiManager: {}, |
|
ErrorService: this.ErrorService, |
|
$modalInstance: this.modalInstance |
|
}) |
|
}) |
|
}) |
|
|
|
it('can handle a successful password change', function (done) { |
|
this.$scope.checkCode() |
|
|
|
expect(this.$scope.recovery.updating).toBe(true) |
|
expect(this.ErrorService.alert).toHaveBeenCalledWith('Password deactivated', 'You have disabled Two-Step Verification.') |
|
expect(this.modalInstance.close).toHaveBeenCalled() |
|
done() |
|
}) |
|
|
|
describe('when an error occurs', function () { |
|
beforeEach(function () { |
|
this.PasswordManager.errorField = {} |
|
}) |
|
|
|
it('cancels the recovery', function (done) { |
|
this.$scope.checkCode() |
|
|
|
expect(this.$scope.recovery.updating).not.toBeDefined() |
|
expect(this.ErrorService.alert).not.toHaveBeenCalled() |
|
expect(this.modalInstance.close).not.toHaveBeenCalled() |
|
done() |
|
}) |
|
|
|
it('can handle the error for an empty code', function (done) { |
|
this.PasswordManager.errorField.type = 'CODE_EMPTY' |
|
this.$scope.checkCode() |
|
|
|
expect(this.$scope.recovery.error_field).toEqual('code') |
|
done() |
|
}) |
|
|
|
it('can handle the error for an invalid code', function (done) { |
|
this.PasswordManager.errorField.type = 'CODE_INVALID' |
|
this.$scope.checkCode() |
|
|
|
expect(this.$scope.recovery.error_field).toEqual('code') |
|
done() |
|
}) |
|
|
|
it('can handle the error for an empty password', function (done) { |
|
this.PasswordManager.errorField.type = 'PASSWORD_EMPTY' |
|
this.$scope.checkCode() |
|
|
|
expect(this.modalInstance.dismiss).toHaveBeenCalled() |
|
done() |
|
}) |
|
|
|
it('can handle the error for the unavailability of the recovery', function (done) { |
|
this.PasswordManager.errorField.type = 'PASSWORD_RECOVERY_NA' |
|
this.$scope.checkCode() |
|
|
|
expect(this.modalInstance.dismiss).toHaveBeenCalled() |
|
done() |
|
}) |
|
|
|
it('can handle the error for an expired recovery', function (done) { |
|
this.PasswordManager.errorField.type = 'PASSWORD_RECOVERY_EXPIRED' |
|
this.$scope.checkCode() |
|
|
|
expect(this.modalInstance.dismiss).toHaveBeenCalled() |
|
done() |
|
}) |
|
}) |
|
})
|
|
|