PageRenderTime 56ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/phpmyadmin/test/classes/dbi/DBIMysqlTest.php

https://gitlab.com/luyxtran264/myproject
PHP | 331 lines | 204 code | 29 blank | 98 comment | 3 complexity | 267a80cc861c17d1a49e93a0ad99b8de MD5 | raw file
  1. <?php
  2. /**
  3. * Tests for PMA\libraries\dbi\DBIMysql class
  4. *
  5. * @package PhpMyAdmin-test
  6. */
  7. /*
  8. * Include to test.
  9. */
  10. use PMA\libraries\dbi\DBIMysql;
  11. require_once 'libraries/relation.lib.php';
  12. require_once 'libraries/url_generating.lib.php';
  13. require_once 'test/PMATestCase.php';
  14. require_once 'libraries/database_interface.inc.php';
  15. /**
  16. * Tests for PMA\libraries\dbi\DBIMysql class
  17. *
  18. * @package PhpMyAdmin-test
  19. */
  20. class DBIMysqlTest extends PMATestCase
  21. {
  22. /**
  23. * @access protected
  24. */
  25. protected $object;
  26. /**
  27. * Sets up the fixture, for example, opens a network connection.
  28. * This method is called before a test is executed.
  29. *
  30. * @access protected
  31. * @return void
  32. */
  33. protected function setUp()
  34. {
  35. if (! extension_loaded('mysql')) {
  36. $this->markTestSkipped('The MySQL extension is not available.');
  37. }
  38. $GLOBALS['cfg']['Server']['ssl'] = true;
  39. $GLOBALS['cfg']['Server']['compress'] = true;
  40. $this->object = new DBIMysql();
  41. }
  42. /**
  43. * Tears down the fixture, for example, closes a network connection.
  44. * This method is called after a test is executed.
  45. *
  46. * @access protected
  47. * @return void
  48. */
  49. protected function tearDown()
  50. {
  51. unset($this->object);
  52. }
  53. /**
  54. * Test for realMultiQuery
  55. *
  56. * @return void
  57. *
  58. * @group medium
  59. */
  60. public function testRealMultiQuery()
  61. {
  62. //PHP's 'mysql' extension does not support multi_queries
  63. $this->assertEquals(
  64. false,
  65. $this->object->realMultiQuery(null, "select * from PMA")
  66. );
  67. }
  68. /**
  69. * Test for mysql related functions, using runkit_function_redefine
  70. *
  71. * @return void
  72. *
  73. * @group medium
  74. */
  75. public function testMysqlDBI()
  76. {
  77. if (! PMA_HAS_RUNKIT || ! $GLOBALS['runkit_internal_override']) {
  78. $this->markTestSkipped("Cannot redefine function");
  79. }
  80. //FOR UT, we just test the right mysql client API is called
  81. runkit_function_redefine('mysql_pconnect', '', 'return "mysql_pconnect";');
  82. runkit_function_redefine('mysql_connect', '', 'return "mysql_connect";');
  83. runkit_function_redefine('mysql_query', '', 'return "mysql_query";');
  84. runkit_function_redefine(
  85. 'mysql_fetch_array', '', 'return "mysql_fetch_array";'
  86. );
  87. runkit_function_redefine(
  88. 'mysql_data_seek', '', 'return "mysql_data_seek";'
  89. );
  90. runkit_function_redefine(
  91. 'mysql_get_host_info', '', 'return "mysql_get_host_info";'
  92. );
  93. runkit_function_redefine(
  94. 'mysql_get_proto_info', '', 'return "mysql_get_proto_info";'
  95. );
  96. runkit_function_redefine(
  97. 'mysql_field_flags', '', 'return "mysql_field_flags";'
  98. );
  99. runkit_function_redefine(
  100. 'mysql_field_name', '', 'return "mysql_field_name";'
  101. );
  102. runkit_function_redefine(
  103. 'mysql_field_len', '', 'return "mysql_field_len";'
  104. );
  105. runkit_function_redefine(
  106. 'mysql_num_fields', '', 'return "mysql_num_fields";'
  107. );
  108. runkit_function_redefine(
  109. 'mysql_affected_rows', '', 'return "mysql_affected_rows";'
  110. );
  111. //test for fieldFlags
  112. $result = array("table1", "table2");
  113. $ret = $this->object->numFields($result);
  114. $this->assertEquals(
  115. 'mysql_num_fields',
  116. $ret
  117. );
  118. //test for fetchRow
  119. $result = array("table1", "table2");
  120. $ret = $this->object->fetchRow($result);
  121. $this->assertEquals(
  122. 'mysql_fetch_array',
  123. $ret
  124. );
  125. //test for fetchRow
  126. $result = array("table1", "table2");
  127. $ret = $this->object->fetchAssoc($result);
  128. $this->assertEquals(
  129. 'mysql_fetch_array',
  130. $ret
  131. );
  132. //test for affectedRows
  133. $link = "PMA_link";
  134. $get_from_cache = false;
  135. $ret = $this->object->affectedRows($link, $get_from_cache);
  136. $this->assertEquals(
  137. "mysql_affected_rows",
  138. $ret
  139. );
  140. //test for connect
  141. $user = 'PMA_user';
  142. $password = 'PMA_password';
  143. $is_controluser = false;
  144. $server = array(
  145. 'port' => 8080,
  146. 'socket' => 123,
  147. 'host' => 'locahost',
  148. );
  149. $auxiliary_connection = true;
  150. //test for connect
  151. $ret = $this->object->connect(
  152. $user, $password, $is_controluser,
  153. $server, $auxiliary_connection
  154. );
  155. $this->assertEquals(
  156. 'mysql_connect',
  157. $ret
  158. );
  159. $GLOBALS['cfg']['PersistentConnections'] = true;
  160. $ret = $this->object->connect(
  161. $user, $password, $is_controluser,
  162. $server, $auxiliary_connection
  163. );
  164. $this->assertEquals(
  165. 'mysql_pconnect',
  166. $ret
  167. );
  168. //test for realQuery
  169. $query = 'select * from DBI';
  170. $link = $ret;
  171. $options = 0;
  172. $ret = $this->object->realQuery($query, $link, $options);
  173. $this->assertEquals(
  174. 'mysql_query',
  175. $ret
  176. );
  177. //test for fetchArray
  178. $result = $ret;
  179. $ret = $this->object->fetchArray($result);
  180. $this->assertEquals(
  181. 'mysql_fetch_array',
  182. $ret
  183. );
  184. //test for dataSeek
  185. $result = $ret;
  186. $offset = 12;
  187. $ret = $this->object->dataSeek($result, $offset);
  188. $this->assertEquals(
  189. 'mysql_data_seek',
  190. $ret
  191. );
  192. //test for getHostInfo
  193. $ret = $this->object->getHostInfo($ret);
  194. $this->assertEquals(
  195. 'mysql_get_host_info',
  196. $ret
  197. );
  198. //test for getProtoInfo
  199. $ret = $this->object->getProtoInfo($ret);
  200. $this->assertEquals(
  201. 'mysql_get_proto_info',
  202. $ret
  203. );
  204. //test for fieldLen
  205. $ret = $this->object->fieldLen($ret, $offset);
  206. $this->assertEquals(
  207. 'mysql_field_len',
  208. $ret
  209. );
  210. //test for fieldName
  211. $ret = $this->object->fieldName($ret, $offset);
  212. $this->assertEquals(
  213. 'mysql_field_name',
  214. $ret
  215. );
  216. //test for fieldFlags
  217. $ret = $this->object->fieldFlags($ret, $offset);
  218. $this->assertEquals(
  219. 'mysql_field_flags',
  220. $ret
  221. );
  222. }
  223. /**
  224. * Test for selectDb
  225. *
  226. * @return void
  227. *
  228. * @group medium
  229. */
  230. public function testSelectDb()
  231. {
  232. $this->markTestIncomplete('Not testing anything');
  233. //$link is empty
  234. $GLOBALS['userlink'] = null;
  235. $this->assertEquals(
  236. false,
  237. $this->object->selectDb("PMA", null)
  238. );
  239. }
  240. /**
  241. * Test for moreResults
  242. *
  243. * @return void
  244. *
  245. * @group medium
  246. */
  247. public function testMoreResults()
  248. {
  249. //PHP's 'mysql' extension does not support multi_queries
  250. $this->assertEquals(
  251. false,
  252. $this->object->moreResults(null)
  253. );
  254. //PHP's 'mysql' extension does not support multi_queries
  255. $this->assertEquals(
  256. false,
  257. $this->object->nextResult(null)
  258. );
  259. }
  260. /**
  261. * Test for getClientInfo
  262. *
  263. * @return void
  264. *
  265. * @group medium
  266. */
  267. public function testGetClientInfo()
  268. {
  269. $this->assertEquals(
  270. mysql_get_client_info(),
  271. $this->object->getClientInfo()
  272. );
  273. }
  274. /**
  275. * Test for numRows
  276. *
  277. * @return void
  278. *
  279. * @group medium
  280. */
  281. public function testNumRows()
  282. {
  283. $this->assertEquals(
  284. false,
  285. $this->object->numRows(true)
  286. );
  287. }
  288. /**
  289. * Test for storeResult
  290. *
  291. * @return void
  292. *
  293. * @group medium
  294. */
  295. public function testStoreResult()
  296. {
  297. $this->assertEquals(
  298. false,
  299. $this->object->storeResult(null)
  300. );
  301. }
  302. }