ConfigOptionsListTest.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Amqp\Test\Unit\Setup;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. use Magento\Amqp\Setup\ConfigOptionsList;
  9. use Magento\Framework\Setup\Option\TextConfigOption;
  10. use Magento\Framework\App\DeploymentConfig;
  11. class ConfigOptionsListTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var ObjectManager
  15. */
  16. private $objectManager;
  17. /**
  18. * @var ConfigOptionsList
  19. */
  20. private $model;
  21. /**
  22. * @var \Magento\Amqp\Setup\ConnectionValidator|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. private $connectionValidatorMock;
  25. /**
  26. * @var \Magento\Framework\App\DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. private $deploymentConfigMock;
  29. /**
  30. * @var array
  31. */
  32. private $options;
  33. protected function setUp()
  34. {
  35. $this->options = [
  36. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_HOST => 'host',
  37. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PORT => 'port',
  38. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_USER => 'user',
  39. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PASSWORD => 'password',
  40. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST => 'virtual host',
  41. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL => 'ssl',
  42. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS => '{"ssl_option":"test"}',
  43. ];
  44. $this->objectManager = new ObjectManager($this);
  45. $this->connectionValidatorMock = $this->getMockBuilder(\Magento\Amqp\Setup\ConnectionValidator::class)
  46. ->disableOriginalConstructor()
  47. ->setMethods([])
  48. ->getMock();
  49. $this->deploymentConfigMock = $this->getMockBuilder(\Magento\Framework\App\DeploymentConfig::class)
  50. ->disableOriginalConstructor()
  51. ->setMethods([])
  52. ->getMock();
  53. $this->model = $this->objectManager->getObject(
  54. \Magento\Amqp\Setup\ConfigOptionsList::class,
  55. [
  56. 'connectionValidator' => $this->connectionValidatorMock,
  57. ]
  58. );
  59. }
  60. public function testGetOptions()
  61. {
  62. $expectedOptions = [
  63. new TextConfigOption(
  64. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_HOST,
  65. TextConfigOption::FRONTEND_WIZARD_TEXT,
  66. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_HOST,
  67. 'Amqp server host',
  68. ConfigOptionsList::DEFAULT_AMQP_HOST
  69. ),
  70. new TextConfigOption(
  71. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PORT,
  72. TextConfigOption::FRONTEND_WIZARD_TEXT,
  73. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_PORT,
  74. 'Amqp server port',
  75. ConfigOptionsList::DEFAULT_AMQP_PORT
  76. ),
  77. new TextConfigOption(
  78. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_USER,
  79. TextConfigOption::FRONTEND_WIZARD_TEXT,
  80. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_USER,
  81. 'Amqp server username',
  82. ConfigOptionsList::DEFAULT_AMQP_USER
  83. ),
  84. new TextConfigOption(
  85. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PASSWORD,
  86. TextConfigOption::FRONTEND_WIZARD_TEXT,
  87. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_PASSWORD,
  88. 'Amqp server password',
  89. ConfigOptionsList::DEFAULT_AMQP_PASSWORD
  90. ),
  91. new TextConfigOption(
  92. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST,
  93. TextConfigOption::FRONTEND_WIZARD_TEXT,
  94. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_VIRTUAL_HOST,
  95. 'Amqp virtualhost',
  96. ConfigOptionsList::DEFAULT_AMQP_VIRTUAL_HOST
  97. ),
  98. new TextConfigOption(
  99. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL,
  100. TextConfigOption::FRONTEND_WIZARD_TEXT,
  101. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_SSL,
  102. 'Amqp SSL',
  103. ConfigOptionsList::DEFAULT_AMQP_SSL
  104. ),
  105. new TextConfigOption(
  106. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS,
  107. TextConfigOption::FRONTEND_WIZARD_TEXTAREA,
  108. ConfigOptionsList::CONFIG_PATH_QUEUE_AMQP_SSL_OPTIONS,
  109. 'Amqp SSL Options (JSON)',
  110. ConfigOptionsList::DEFAULT_AMQP_SSL
  111. ),
  112. ];
  113. $this->assertEquals($expectedOptions, $this->model->getOptions());
  114. }
  115. /**
  116. * @param array $options
  117. * @param array $expectedConfigData
  118. * @dataProvider getCreateConfigDataProvider
  119. */
  120. public function testCreateConfig($options, $expectedConfigData)
  121. {
  122. $result = $this->model->createConfig($options, $this->deploymentConfigMock);
  123. $this->assertInternalType('array', $result);
  124. $this->assertNotEmpty($result);
  125. /** @var \Magento\Framework\Config\Data\ConfigData $configData */
  126. $configData = $result[0];
  127. $this->assertInstanceOf(\Magento\Framework\Config\Data\ConfigData::class, $configData);
  128. $this->assertEquals($expectedConfigData, $configData->getData());
  129. }
  130. public function testValidateInvalidConnection()
  131. {
  132. $expectedResult = ['Could not connect to the Amqp Server.'];
  133. $this->connectionValidatorMock->expects($this->once())->method('isConnectionValid')->willReturn(false);
  134. $this->assertEquals($expectedResult, $this->model->validate($this->options, $this->deploymentConfigMock));
  135. }
  136. public function testValidateValidConnection()
  137. {
  138. $expectedResult = [];
  139. $this->connectionValidatorMock->expects($this->once())->method('isConnectionValid')->willReturn(true);
  140. $this->assertEquals($expectedResult, $this->model->validate($this->options, $this->deploymentConfigMock));
  141. }
  142. public function testValidateNoOptions()
  143. {
  144. $expectedResult = [];
  145. $options = [];
  146. $this->connectionValidatorMock->expects($this->never())->method('isConnectionValid');
  147. $this->assertEquals($expectedResult, $this->model->validate($options, $this->deploymentConfigMock));
  148. }
  149. /**
  150. * @return array
  151. */
  152. public function getCreateConfigDataProvider()
  153. {
  154. return [
  155. [
  156. [
  157. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_HOST => 'host',
  158. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PORT => 'port',
  159. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_USER => 'user',
  160. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PASSWORD => 'password',
  161. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST => 'virtual host',
  162. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL => 'ssl',
  163. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS => '{"ssl_option":"test"}',
  164. ],
  165. ['queue' =>
  166. ['amqp' =>
  167. [
  168. 'host' => 'host',
  169. 'port' => 'port',
  170. 'user' => 'user',
  171. 'password' => 'password',
  172. 'virtualhost' => 'virtual host',
  173. 'ssl' => 'ssl',
  174. 'ssl_options' => ['ssl_option' => 'test'],
  175. ]
  176. ]
  177. ],
  178. ],
  179. [
  180. [
  181. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_HOST => 'host',
  182. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PORT => ConfigOptionsList::DEFAULT_AMQP_PORT,
  183. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_USER => 'user',
  184. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PASSWORD => 'password',
  185. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST => 'virtual host',
  186. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL => 'ssl',
  187. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL_OPTIONS => '{"ssl_option":"test"}',
  188. ],
  189. ['queue' =>
  190. ['amqp' =>
  191. [
  192. 'host' => 'host',
  193. 'port' => ConfigOptionsList::DEFAULT_AMQP_PORT,
  194. 'user' => 'user',
  195. 'password' => 'password',
  196. 'virtualhost' => 'virtual host',
  197. 'ssl' => 'ssl',
  198. 'ssl_options' => ['ssl_option' => 'test'],
  199. ]
  200. ]
  201. ],
  202. ],
  203. [
  204. [
  205. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_HOST => ConfigOptionsList::DEFAULT_AMQP_HOST,
  206. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PORT => ConfigOptionsList::DEFAULT_AMQP_PORT,
  207. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_USER => ConfigOptionsList::DEFAULT_AMQP_USER,
  208. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_PASSWORD => ConfigOptionsList::DEFAULT_AMQP_PASSWORD,
  209. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_VIRTUAL_HOST =>
  210. ConfigOptionsList::DEFAULT_AMQP_VIRTUAL_HOST,
  211. ConfigOptionsList::INPUT_KEY_QUEUE_AMQP_SSL => ConfigOptionsList::DEFAULT_AMQP_SSL,
  212. ],
  213. [],
  214. ],
  215. ];
  216. }
  217. }