mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Обновлена версия Codeception (там поправили баг с анонимными классами)
Переписаны тесты для базовой формы с кодовым доступом В базовую форму кодового доступа добавлена проверка на истечение кода
This commit is contained in:
		| @@ -3,12 +3,14 @@ namespace tests\codeception\api\models\base; | ||||
|  | ||||
| use api\models\base\KeyConfirmationForm; | ||||
| use Codeception\Specify; | ||||
| use common\models\confirmations\ForgotPassword; | ||||
| use common\models\EmailActivation; | ||||
| use tests\codeception\api\unit\DbTestCase; | ||||
| use tests\codeception\common\fixtures\EmailActivationFixture; | ||||
| use Yii; | ||||
|  | ||||
| /** | ||||
|  * @property array $emailActivations | ||||
|  * @property EmailActivationFixture $emailActivations | ||||
|  */ | ||||
| class KeyConfirmationFormTest extends DbTestCase { | ||||
|     use Specify; | ||||
| @@ -22,40 +24,79 @@ class KeyConfirmationFormTest extends DbTestCase { | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     protected function createModel($key = null) { | ||||
|         return new KeyConfirmationForm([ | ||||
|             'key' => $key, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function testEmptyKey() { | ||||
|         $model = $this->createModel(); | ||||
|         $this->specify('get error.key_is_required with validating empty key field', function () use ($model) { | ||||
|             expect('model should don\'t pass validation', $model->validate())->false(); | ||||
|             expect('error messages should be set', $model->errors)->equals([ | ||||
|                 'key' => [ | ||||
|                     'error.key_is_required', | ||||
|                 ], | ||||
|             ]); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function testIncorrectKey() { | ||||
|         $model = $this->createModel('not-exists-key'); | ||||
|         $this->specify('get error.key_not_exists with validation wrong key', function () use ($model) { | ||||
|             expect('model should don\'t pass validation', $model->validate())->false(); | ||||
|             expect('error messages should be set', $model->errors)->equals([ | ||||
|     public function testValidateKey() { | ||||
|         $this->specify('get error.key_not_exists with validation wrong key', function () { | ||||
|             /** @var KeyConfirmationForm $model */ | ||||
|             $model = new class extends KeyConfirmationForm { | ||||
|                 public function getActivationCodeModel() { | ||||
|                     return null; | ||||
|                 } | ||||
|             }; | ||||
|             $model->validateKey('key'); | ||||
|             expect($model->errors)->equals([ | ||||
|                 'key' => [ | ||||
|                     'error.key_not_exists', | ||||
|                 ], | ||||
|             ]); | ||||
|         }); | ||||
|  | ||||
|         $this->specify('no errors, if model exists', function () { | ||||
|             /** @var KeyConfirmationForm $model */ | ||||
|             $model = new class extends KeyConfirmationForm { | ||||
|                 public function getActivationCodeModel() { | ||||
|                     return new EmailActivation(); | ||||
|                 } | ||||
|             }; | ||||
|             $model->validateKey('key'); | ||||
|             expect($model->errors)->isEmpty(); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function testCorrectKey() { | ||||
|         $model = $this->createModel($this->emailActivations['freshRegistrationConfirmation']['key']); | ||||
|         $this->specify('no errors if key exists', function () use ($model) { | ||||
|             expect('model should pass validation', $model->validate())->true(); | ||||
|     public function testValidateKeyExpiration() { | ||||
|         $this->specify('get error.key_expire if we use old key', function () { | ||||
|             /** @var KeyConfirmationForm $model */ | ||||
|             $model = new class extends KeyConfirmationForm { | ||||
|                 public function getActivationCodeModel() { | ||||
|                     $codeModel = new ForgotPassword(); | ||||
|                     $codeModel->created_at = time() - $codeModel->expirationTimeout - 10; | ||||
|  | ||||
|                     return $codeModel; | ||||
|                 } | ||||
|             }; | ||||
|             $model->validateKeyExpiration('key'); | ||||
|             expect($model->errors)->equals([ | ||||
|                 'key' => [ | ||||
|                     'error.key_expire', | ||||
|                 ], | ||||
|             ]); | ||||
|         }); | ||||
|  | ||||
|         $this->specify('no errors if key is not yet expired', function () { | ||||
|             /** @var KeyConfirmationForm $model */ | ||||
|             $model = new class extends KeyConfirmationForm { | ||||
|                 public function getActivationCodeModel() { | ||||
|                     $codeModel = new ForgotPassword(); | ||||
|                     $codeModel->created_at = time() - $codeModel->expirationTimeout + 10; | ||||
|  | ||||
|                     return $codeModel; | ||||
|                 } | ||||
|             }; | ||||
|             $model->validateKeyExpiration('key'); | ||||
|             expect($model->errors)->isEmpty(); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function testGetActivationCodeModel() { | ||||
|         $this->specify('should return model, based on passed key', function() { | ||||
|             $model = new KeyConfirmationForm(); | ||||
|             $model->key = array_values($this->emailActivations->data)[0]['key']; | ||||
|             expect($model->getActivationCodeModel())->isInstanceOf(EmailActivation::class); | ||||
|         }); | ||||
|  | ||||
|         $this->specify('should return null, if passed key is invalid', function() { | ||||
|             $model = new KeyConfirmationForm(); | ||||
|             $model->key = 'this-is-invalid-key'; | ||||
|             expect($model->getActivationCodeModel())->null(); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user