我正在嘗試爲某些控制器編寫集成測試,因此需要發送身份驗證標頭。在我的控制,我有一些行爲使公衆開放,通過下面的代碼:允許在集成測試中進行身份驗證的所有操作cakephp
namespace App\Controller\Api;
use Cake\Event\Event;
use Cake\Network\Exception\UnauthorizedException;
use Cake\Utility\Security;
use Firebase\JWT\JWT;
class UsersController extends AppController
{
public function initialize()
{
parent::initialize();
$this->Auth->allow(['add', 'token']); // public methods
}
.....
}
現在我有,我想,讓所有的行動都可能不經認證訪問的集成測試案例。有沒有簡單的方法可以做到這一點?
整合案例代碼:
namespace App\Test\TestCase\Controller;
use App\Controller\Api\UsersController;
use Cake\TestSuite\IntegrationTestCase;
class ApiPicturesControllerTest extends IntegrationTestCase{
public $fixtures = [
'app.albums',
'app.pictures',
'app.users',
'app.comments',
'app.users_albums'
];
public function setUp(){
parent::setUp();
// Allow all actions
// $this->Auth->allow();
}
public function testViewShouldPass(){
$this->configRequest([
'headers' => [
'Accept' => 'application/json'
]
]);
$data = $this->get('/api/pictures/1.json');
$this->assertResponseOk();
}
}
這會有點擊敗集成測試的目的看,是不是?也許你真正在尋找的是以認證狀態訪問操作? – ndm
是的,因爲我不熟悉集成測試,所以我不確定如何模擬無狀態身份驗證的身份驗證。由於我已經堅持了一天,試圖讓這個工作,我現在只想繞過認證過程,並稍後修復。 – markvdlaan93