AccountTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Controller\Adminhtml\System;
  7. use Magento\TestFramework\Bootstrap;
  8. /**
  9. * @magentoAppArea adminhtml
  10. */
  11. class AccountTest extends \Magento\TestFramework\TestCase\AbstractBackendController
  12. {
  13. /**
  14. * @dataProvider saveDataProvider
  15. * @magentoDbIsolation enabled
  16. */
  17. public function testSaveAction($password, $passwordConfirmation, $isPasswordChanged)
  18. {
  19. $userId = $this->_session->getUser()->getId();
  20. /** @var $user \Magento\User\Model\User */
  21. $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  22. \Magento\User\Model\User::class
  23. )->load(
  24. $userId
  25. );
  26. $oldPassword = $user->getPassword();
  27. $request = $this->getRequest();
  28. $request->setParam(
  29. 'username',
  30. $user->getUsername()
  31. )->setParam(
  32. 'email',
  33. $user->getEmail()
  34. )->setParam(
  35. 'firstname',
  36. $user->getFirstname()
  37. )->setParam(
  38. 'lastname',
  39. $user->getLastname()
  40. )->setParam(
  41. 'password',
  42. $password
  43. )->setParam(
  44. 'password_confirmation',
  45. $passwordConfirmation
  46. )->setParam(
  47. \Magento\Backend\Block\System\Account\Edit\Form::IDENTITY_VERIFICATION_PASSWORD_FIELD,
  48. Bootstrap::ADMIN_PASSWORD
  49. );
  50. $this->dispatch('backend/admin/system_account/save');
  51. /** @var $user \Magento\User\Model\User */
  52. $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  53. \Magento\User\Model\User::class
  54. )->load(
  55. $userId
  56. );
  57. if ($isPasswordChanged) {
  58. $this->assertNotEquals($oldPassword, $user->getPassword());
  59. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  60. /** @var $encryptor \Magento\Framework\Encryption\EncryptorInterface */
  61. $encryptor = $objectManager->get(\Magento\Framework\Encryption\EncryptorInterface::class);
  62. $this->assertTrue($encryptor->validateHash($password, $user->getPassword()));
  63. } else {
  64. $this->assertEquals($oldPassword, $user->getPassword());
  65. }
  66. }
  67. public function saveDataProvider()
  68. {
  69. $password = uniqid('123q');
  70. return [
  71. [$password, $password, true],
  72. [$password, '', false],
  73. [$password, $password . '123', false],
  74. ['', '', false],
  75. ['', $password, false]
  76. ];
  77. }
  78. }