0
我正在使用shibboleth apache模塊進行聯合單點登錄。它將$_SERVER
變量設置爲來自活動目錄的用戶權利。在我的laravel應用程序中,我使用自定義身份驗證和用戶提供程序,它們利用這些權限進行資源授權。
我的簡化的用戶模型是這樣的:
public function isAdmin()
{
return Request::server('entitlement') === 'admin';
}
但是,我無法弄清楚如何測試這一點,因爲Request::server
始終沒有返回該值。
public function setUp()
{
$_SERVER['entitlement'] = 'admin';
parent::setUp();
}
public function test_admin_something()
{
$user = factory(User::class)->create();
$response = $this
->actingAs($user)
->get('/admin/somewhere');
var_dump($_SERVER['entitlement']); // string(5) "admin"
var_dump(Request::server('entitlement')); // NULL
$response->assertStatus(200); // always fails 403
}
我也試過setUpBeforeClass
並檢查所有出現在代替自定義製作Request對象的測試過程中被忽略其它服務器變量。我也不能嘲笑請求façade,per the documentation。
嘗試改變' - >獲取( '/管理/某處')'來' - >調用( 'GET', '/管理/某處', ['entitlement'=>'admin']);'。請參閱:https://laravel.com/docs/5.2/testing#custom-http-requests – btl
您正在使用哪個測試套件以及哪個版本。 – Ohgodwhy
@Ohgodwhy phpunit 5.7.20 laravel 5.4.24 –