AdminTokenServiceTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Integration\Model;
  7. use Magento\Framework\Exception\InputException;
  8. use Magento\Integration\Model\Oauth\Token as TokenModel;
  9. use Magento\TestFramework\Helper\Bootstrap;
  10. use Magento\User\Model\User as UserModel;
  11. /**
  12. * Test class for \Magento\Integration\Model\AdminTokenService.
  13. */
  14. class AdminTokenServiceTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var \Magento\Integration\Api\AdminTokenServiceInterface
  18. */
  19. private $tokenService;
  20. /**
  21. * @var TokenModel
  22. */
  23. private $tokenModel;
  24. /**
  25. * @var UserModel
  26. */
  27. private $userModel;
  28. /**
  29. * Setup AdminTokenService
  30. */
  31. public function setUp()
  32. {
  33. $this->tokenService = Bootstrap::getObjectManager()->get(\Magento\Integration\Model\AdminTokenService::class);
  34. $this->tokenModel = Bootstrap::getObjectManager()->get(\Magento\Integration\Model\Oauth\Token::class);
  35. $this->userModel = Bootstrap::getObjectManager()->get(\Magento\User\Model\User::class);
  36. }
  37. /**
  38. * @magentoDataFixture Magento/User/_files/user_with_role.php
  39. */
  40. public function testCreateAdminAccessToken()
  41. {
  42. $adminUserNameFromFixture = 'adminUser';
  43. $accessToken = $this->tokenService->createAdminAccessToken(
  44. $adminUserNameFromFixture,
  45. \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD
  46. );
  47. $adminUserId = $this->userModel->loadByUsername($adminUserNameFromFixture)->getId();
  48. /** @var $token TokenModel */
  49. $token = $this->tokenModel
  50. ->loadByAdminId($adminUserId)
  51. ->getToken();
  52. $this->assertEquals($accessToken, $token);
  53. }
  54. /**
  55. * @dataProvider validationDataProvider
  56. */
  57. public function testCreateAdminAccessTokenEmptyOrNullCredentials($username, $password)
  58. {
  59. try {
  60. $this->tokenService->createAdminAccessToken($username, $password);
  61. } catch (InputException $e) {
  62. $this->assertInputExceptionMessages($e);
  63. }
  64. }
  65. /**
  66. * @expectedException \Magento\Framework\Exception\AuthenticationException
  67. */
  68. public function testCreateAdminAccessTokenInvalidCustomer()
  69. {
  70. $adminUserName = 'invalid';
  71. $password = 'invalid';
  72. $this->tokenService->createAdminAccessToken($adminUserName, $password);
  73. $this->expectExceptionMessage(
  74. 'The account sign-in was incorrect or your account is disabled temporarily. '
  75. . 'Please wait and try again later.'
  76. );
  77. }
  78. /**
  79. * Provider to test input validation
  80. *
  81. * @return array
  82. */
  83. public function validationDataProvider()
  84. {
  85. return [
  86. 'Check for empty credentials' => ['', ''],
  87. 'Check for null credentials' => [null, null]
  88. ];
  89. }
  90. /**
  91. * Assert for presence of Input exception messages
  92. *
  93. * @param InputException $e
  94. */
  95. private function assertInputExceptionMessages($e)
  96. {
  97. $this->assertEquals('One or more input exceptions have occurred.', $e->getMessage());
  98. $errors = $e->getErrors();
  99. $this->assertCount(2, $errors);
  100. $this->assertEquals('"username" is required. Enter and try again.', $errors[0]->getLogMessage());
  101. $this->assertEquals('"password" is required. Enter and try again.', $errors[1]->getLogMessage());
  102. }
  103. }