Testovani presenteru a RAW POST data

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Blujacker
Člen | 89
+
0
-

Ahoj,

testuji presenter, ktery simuluje web service. Potrebuji mu tedy predat raw post data (php://input), ale netusim jak. Doposud jsem pouzival

$request = new Nette\Application\Request($name, $method, $params, $post);
$presenter->run($request);

Ale Nette\Application\Request nema zadny parameter setRawBody (zatimco treba Nette\Http\Request ma metodu getRawBody).

Dekuji za kazde nakopnuti!

Milo
Nette Core | 1283
+
0
-

Jak na ta data saháš v presenteru? Jestli přímo přes php://input, tak to snadno nejde. Musel by sis rozjet vlasní HTTP server pro testy.

Jestli na ně saháš přes Nette\Http\Request::getRawBody(), nahraď Request v kontejneru a přes konstruktor mu dej $rawBodyCallback.

Blujacker
Člen | 89
+
0
-

Pouzival jsem php://input, ale nakonec se mi to vse podarilo prepsat na getRawBody(). Ale bohuzel si nejsem jisty, jak nahradit sluzbu v kontejneru svou vlastni. Request, ktery bych ocekaval bych vytvarel asi takto:

public function testValidSmartcard(){
    $headers = [
        "username" => "user",
        "password" => "pwd",
    ];
    $this->request = new \Nette\Http\Request(new \Nette\Http\UrlScript,  NULL, NULL, NULL,  NULL,  $headers,  "POST",  NULL,  NULL,  function (){return "request's body";} );
}

Ale netusim, jak ho dostat do presenteru.

Dekuji