Beispiel #1
0
 /**
  * Test HTTP precondition headers
  *
  * @covers ApiMain::checkConditionalRequestHeaders
  * @dataProvider provideCheckConditionalRequestHeaders
  * @param array $headers HTTP headers
  * @param array $conditions Return data for ApiBase::getConditionalRequestData
  * @param int $status Expected response status
  * @param bool $post Request is a POST
  */
 public function testCheckConditionalRequestHeaders($headers, $conditions, $status, $post = false)
 {
     $request = new FauxRequest(array('action' => 'query', 'meta' => 'siteinfo'), $post);
     $request->setHeaders($headers);
     $request->response()->statusHeader(200);
     // Why doesn't it default?
     $api = new ApiMain($request);
     $priv = TestingAccessWrapper::newFromObject($api);
     $priv->mInternalMode = false;
     $module = $this->getMockBuilder('ApiBase')->setConstructorArgs(array($api, 'mock'))->setMethods(array('getConditionalRequestData'))->getMockForAbstractClass();
     $module->expects($this->any())->method('getConditionalRequestData')->will($this->returnCallback(function ($condition) use($conditions) {
         return isset($conditions[$condition]) ? $conditions[$condition] : null;
     }));
     $ret = $priv->checkConditionalRequestHeaders($module);
     $this->assertSame($status, $request->response()->getStatusCode());
     $this->assertSame($status === 200, $ret);
 }