Skip to content

Commit efe7ae5

Browse files
authored
Fixing bug on stuck content-type header
When I use FeatureTestTrait if I use withBodyFormat('json') function on one request all subsequent requests are sent with content-type: application/json even if their body format is not 'json'. This bug started when I upgraded CI from 4.0.x to 4.2.11. After long investigation I think I found the source of the problem. On line 289 initialization of request has been changed to Services::request($config, true) so for each subsequent test request same instance is used. That's why if content-type on one request is set then all other requests are sent with this header. We need some reset mechanism. I dont know if this method is right but it worked for me.
1 parent ed25a2c commit efe7ae5

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

system/Test/FeatureTestTrait.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,8 @@ protected function setRequestBody(Request $request, ?array $params = null): Requ
364364

365365
return $request;
366366
}
367-
367+
368+
$request->removeHeader('Content-Type');
368369
if (isset($this->bodyFormat) && $this->bodyFormat !== '') {
369370
if (empty($params)) {
370371
$params = $request->fetchGlobal('request');
@@ -381,7 +382,7 @@ protected function setRequestBody(Request $request, ?array $params = null): Requ
381382
$request->setHeader('Content-Type', $formatMime);
382383
}
383384
}
384-
385+
385386
return $request;
386387
}
387388
}

0 commit comments

Comments
 (0)