requestTest.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. /**
  12. * Db类测试
  13. */
  14. namespace tests\thinkphp\library\think;
  15. use think\Config;
  16. use think\Request;
  17. class requestTest extends \PHPUnit_Framework_TestCase
  18. {
  19. protected $request;
  20. public function setUp()
  21. {
  22. //$request = Request::create('http://www.domain.com/index/index/hello/?name=thinkphp');
  23. }
  24. public function testCreate()
  25. {
  26. $request = Request::create('http://www.thinkphp.cn/index/index/hello.html?name=thinkphp');
  27. $this->assertEquals('http://www.thinkphp.cn', $request->domain());
  28. $this->assertEquals('/index/index/hello.html?name=thinkphp', $request->url());
  29. $this->assertEquals('/index/index/hello.html', $request->baseurl());
  30. $this->assertEquals('index/index/hello.html', $request->pathinfo());
  31. $this->assertEquals('index/index/hello', $request->path());
  32. $this->assertEquals('html', $request->ext());
  33. $this->assertEquals('name=thinkphp', $request->query());
  34. $this->assertEquals('www.thinkphp.cn', $request->host());
  35. $this->assertEquals(80, $request->port());
  36. $this->assertEquals($_SERVER['REQUEST_TIME'], $request->time());
  37. $this->assertEquals($_SERVER['REQUEST_TIME_FLOAT'], $request->time(true));
  38. $this->assertEquals('GET', $request->method());
  39. $this->assertEquals(['name' => 'thinkphp'], $request->param());
  40. $this->assertFalse($request->isSsl());
  41. $this->assertEquals('http', $request->scheme());
  42. }
  43. public function testDomain()
  44. {
  45. $request = Request::instance();
  46. $request->domain('http://thinkphp.cn');
  47. $this->assertEquals('http://thinkphp.cn', $request->domain());
  48. }
  49. public function testUrl()
  50. {
  51. $request = Request::instance();
  52. $request->url('/index.php/index/hello?name=thinkphp');
  53. $this->assertEquals('/index.php/index/hello?name=thinkphp', $request->url());
  54. $this->assertEquals('http://thinkphp.cn/index.php/index/hello?name=thinkphp', $request->url(true));
  55. }
  56. public function testBaseUrl()
  57. {
  58. $request = Request::instance();
  59. $request->baseurl('/index.php/index/hello');
  60. $this->assertEquals('/index.php/index/hello', $request->baseurl());
  61. $this->assertEquals('http://thinkphp.cn/index.php/index/hello', $request->baseurl(true));
  62. }
  63. public function testbaseFile()
  64. {
  65. $request = Request::instance();
  66. $request->basefile('/index.php');
  67. $this->assertEquals('/index.php', $request->basefile());
  68. $this->assertEquals('http://thinkphp.cn/index.php', $request->basefile(true));
  69. }
  70. public function testroot()
  71. {
  72. $request = Request::instance();
  73. $request->root('/index.php');
  74. $this->assertEquals('/index.php', $request->root());
  75. $this->assertEquals('http://thinkphp.cn/index.php', $request->root(true));
  76. }
  77. public function testType()
  78. {
  79. $request = Request::instance();
  80. $request->server(['HTTP_ACCEPT' => 'application/json']);
  81. $this->assertEquals('json', $request->type());
  82. $request->mimeType('test', 'application/test');
  83. $request->mimeType(['test' => 'application/test']);
  84. $request->server(['HTTP_ACCEPT' => 'application/test']);
  85. $this->assertEquals('test', $request->type());
  86. }
  87. public function testmethod()
  88. {
  89. $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] = 'DELETE';
  90. $request = Request::create('', '');
  91. $this->assertEquals('DELETE', $request->method());
  92. $this->assertEquals('GET', $request->method(true));
  93. Config::set('var_method', '_method');
  94. $_POST['_method'] = 'POST';
  95. $request = Request::create('', '');
  96. $this->assertEquals('POST', $request->method());
  97. $this->assertEquals('GET', $request->method(true));
  98. $this->assertTrue($request->isPost());
  99. $this->assertFalse($request->isGet());
  100. $this->assertFalse($request->isPut());
  101. $this->assertFalse($request->isDelete());
  102. $this->assertFalse($request->isHead());
  103. $this->assertFalse($request->isPatch());
  104. $this->assertFalse($request->isOptions());
  105. }
  106. public function testCli()
  107. {
  108. $request = Request::instance();
  109. $this->assertTrue($request->isCli());
  110. }
  111. public function testVar()
  112. {
  113. Config::set('app_multi_module', true);
  114. $request = Request::create('');
  115. $request->route(['name' => 'thinkphp', 'id' => 6]);
  116. $request->get(['id' => 10]);
  117. $request->post(['id' => 8]);
  118. $request->put(['id' => 7]);
  119. $request->request(['test' => 'value']);
  120. $this->assertEquals(['name' => 'thinkphp', 'id' => 6], $request->route());
  121. //$this->assertEquals(['id' => 10], $request->get());
  122. $this->assertEquals('thinkphp', $request->route('name'));
  123. $this->assertEquals('default', $request->route('test', 'default'));
  124. $this->assertEquals(10, $request->get('id'));
  125. $this->assertEquals(0, $request->get('ids', 0));
  126. $this->assertEquals(8, $request->post('id'));
  127. $this->assertEquals(7, $request->put('id'));
  128. $this->assertEquals('value', $request->request('test'));
  129. $this->assertEquals('thinkphp', $request->param('name'));
  130. $this->assertEquals(6, $request->param('id'));
  131. $this->assertFalse($request->has('user_id'));
  132. $this->assertTrue($request->has('test', 'request'));
  133. $this->assertEquals(['id' => 6], $request->only('id'));
  134. $this->assertEquals(['name' => 'thinkphp', 'lang' => 'zh-cn'], $request->except('id'));
  135. $this->assertEquals('THINKPHP', $request->param('name', '', 'strtoupper'));
  136. }
  137. public function testIsAjax()
  138. {
  139. $request = Request::create('');
  140. $this->assertFalse($request->isAjax());
  141. $_SERVER['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest';
  142. $this->assertFalse($request->isAjax());
  143. $this->assertFalse($request->isAjax(true));
  144. $request->server(['HTTP_X_REQUESTED_WITH' => 'xmlhttprequest']);
  145. $this->assertTrue($request->isAjax());
  146. }
  147. public function testIsPjax()
  148. {
  149. $request = Request::create('');
  150. $this->assertFalse($request->isPjax());
  151. $_SERVER['HTTP_X_PJAX'] = true;
  152. $this->assertFalse($request->isPjax());
  153. $this->assertFalse($request->isPjax(true));
  154. $request->server(['HTTP_X_PJAX' => true]);
  155. $this->assertTrue($request->isPjax());
  156. $request->server(['HTTP_X_PJAX' => false]);
  157. $this->assertTrue($request->isPjax());
  158. }
  159. public function testIsMobile()
  160. {
  161. $request = Request::create('');
  162. $_SERVER['HTTP_VIA'] = 'wap';
  163. $this->assertTrue($request->isMobile());
  164. }
  165. public function testBind()
  166. {
  167. $request = Request::create('');
  168. $request->user = 'User1';
  169. $request->bind(['user' => 'User2']);
  170. $this->assertEquals('User2', $request->user);
  171. }
  172. }